gnu: neomutt: Configure with 'lmdb' and 'tokyocabinet'.
[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>
4dcb135e 6;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
534db463 10;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
7637de23 14;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
02a8a187 15;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
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>
6bd9ad69 26;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
df893a38 29;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
4efb9c54 30;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
b04a52a6 31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
ee5fb7ee 32;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
2f6dd9cd 33;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
5220022a 34;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
819939cb 35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
d205f895 36;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
916aafa4 37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
1a917fc9 38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
a01b6da7
NK
39;;;
40;;; This file is part of GNU Guix.
41;;;
42;;; GNU Guix is free software; you can redistribute it and/or modify it
43;;; under the terms of the GNU General Public License as published by
44;;; the Free Software Foundation; either version 3 of the License, or (at
45;;; your option) any later version.
46;;;
47;;; GNU Guix is distributed in the hope that it will be useful, but
48;;; WITHOUT ANY WARRANTY; without even the implied warranty of
49;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
50;;; GNU General Public License for more details.
51;;;
52;;; You should have received a copy of the GNU General Public License
53;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
54
1ffa7090 55(define-module (gnu packages python)
3f641af0 56 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 57 #:use-module (gnu packages)
8e451885 58 #:use-module (gnu packages algebra)
d79a343b 59 #:use-module (gnu packages adns)
89b2e0b0 60 #:use-module (gnu packages attr)
d96034ed 61 #:use-module (gnu packages backup)
3969ca54 62 #:use-module (gnu packages bash)
1ffa7090 63 #:use-module (gnu packages compression)
4ed20663 64 #:use-module (gnu packages databases)
ddc63a56 65 #:use-module (gnu packages django)
5e1c9367 66 #:use-module (gnu packages file)
4ed20663 67 #:use-module (gnu packages fontutils)
4ed20663
AE
68 #:use-module (gnu packages gcc)
69 #:use-module (gnu packages ghostscript)
6eb7af2a 70 #:use-module (gnu packages gl)
4ed20663 71 #:use-module (gnu packages glib)
6eb7af2a 72 #:use-module (gnu packages gstreamer)
4ed20663 73 #:use-module (gnu packages gtk)
421a80a2 74 #:use-module (gnu packages icu4c)
c937562e 75 #:use-module (gnu packages image)
4ed20663 76 #:use-module (gnu packages imagemagick)
d79a343b 77 #:use-module (gnu packages libevent)
b10ab723 78 #:use-module (gnu packages libffi)
89b2e0b0 79 #:use-module (gnu packages linux)
0da98533 80 #:use-module (gnu packages maths)
4ed20663 81 #:use-module (gnu packages multiprecision)
45203542 82 #:use-module (gnu packages networking)
be7134bf 83 #:use-module (gnu packages ncurses)
b04a52a6 84 #:use-module (gnu packages openstack)
d488d5d6 85 #:use-module (gnu packages password-utils)
c9b1b4f9 86 #:use-module (gnu packages pcre)
4ed20663 87 #:use-module (gnu packages perl)
b10ab723 88 #:use-module (gnu packages pkg-config)
06ff0837 89 #:use-module (gnu packages protobuf)
4ed20663 90 #:use-module (gnu packages readline)
6eb7af2a 91 #:use-module (gnu packages sdl)
c9b1b4f9 92 #:use-module (gnu packages statistics)
8f9ac901 93 #:use-module (gnu packages tex)
1c65314c 94 #:use-module (gnu packages texinfo)
cc2b77df 95 #:use-module (gnu packages tls)
e25f0174 96 #:use-module (gnu packages version-control)
02f8f804 97 #:use-module (gnu packages video)
8d12be1e 98 #:use-module (gnu packages web)
ce0614dd 99 #:use-module (gnu packages base)
26b307e2 100 #:use-module (gnu packages xml)
6fa14469 101 #:use-module (gnu packages xorg)
0bdc1671 102 #:use-module (gnu packages xdisorg)
4ed20663 103 #:use-module (gnu packages zip)
afa181ff 104 #:use-module (gnu packages tcl)
63bcec71 105 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
106 #:use-module (guix packages)
107 #:use-module (guix download)
ea5456c8 108 #:use-module (guix git-download)
11bb85a1 109 #:use-module (guix utils)
acc26ff1 110 #:use-module (guix build-system gnu)
d8c4998f 111 #:use-module (guix build-system cmake)
898238b9 112 #:use-module (guix build-system python)
1c65314c
FB
113 #:use-module (guix build-system trivial)
114 #:use-module (srfi srfi-1))
a01b6da7 115
45848023 116(define-public python-2.7
a01b6da7
NK
117 (package
118 (name "python")
f0499100 119 (version "2.7.12")
a01b6da7
NK
120 (source
121 (origin
122 (method url-fetch)
9b43a0ff 123 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
124 version "/Python-" version ".tar.xz"))
125 (sha256
126 (base32
f0499100 127 "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"))
c3052d6b
ML
128 (patches (search-patches "python-2.7-search-paths.patch"
129 "python-2-deterministic-build-info.patch"
15e57f57 130 "python-2.7-site-prefixes.patch"
c3052d6b 131 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
132 (modules '((guix build utils)))
133 ;; suboptimal to delete failing tests here, but if we delete them in the
134 ;; arguments then we need to make sure to strip out that phase when it
135 ;; gets inherited by python and python-minimal.
136 (snippet
137 '(begin
138 (for-each delete-file
139 '("Lib/test/test_compileall.py"
f0499100 140 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
141 "Lib/test/test_distutils.py"
142 "Lib/test/test_import.py"
143 "Lib/test/test_shutil.py"
144 "Lib/test/test_socket.py"
1bb163b0 145 "Lib/test/test_subprocess.py"))
10a42aa2 146 #t))))
02f0c3b2
LC
147 (outputs '("out"
148 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 149 (build-system gnu-build-system)
3fdc99da 150 (arguments
10a42aa2 151 `(;; 356 tests OK.
e7e7a1eb
EF
152 ;; 6 tests failed:
153 ;; test_compileall test_distutils test_import test_shutil test_socket
154 ;; test_subprocess
155 ;; 39 tests skipped:
ff6f33cf
ED
156 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
157 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
158 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
159 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
160 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
161 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
162 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
163 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
164 ;; test_winreg test_winsound test_zipfile64
165 ;; 4 skips unexpected on linux2:
166 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 167 #:test-target "test"
3fdc99da 168 #:configure-flags
6a20289d
LC
169 (list "--enable-shared" ;allow embedding
170 "--with-system-ffi" ;build ctypes
aaf75c89 171 "--with-ensurepip=install" ;install pip and setuptools
6a20289d
LC
172 (string-append "LDFLAGS=-Wl,-rpath="
173 (assoc-ref %outputs "out") "/lib"))
fd982732 174
d2cc9c7c
LC
175 #:modules ((ice-9 ftw) (ice-9 match)
176 (guix build utils) (guix build gnu-build-system))
fd982732 177 #:phases
46472ecd
MW
178 (modify-phases %standard-phases
179 (add-before
180 'configure 'patch-lib-shells
181 (lambda _
182 ;; Filter for existing files, since some may not exist in all
183 ;; versions of python that are built with this recipe.
184 (substitute* (filter file-exists?
185 '("Lib/subprocess.py"
186 "Lib/popen2.py"
187 "Lib/distutils/tests/test_spawn.py"
188 "Lib/test/test_subprocess.py"))
189 (("/bin/sh") (which "sh")))
dedc8320
LC
190
191 ;; Use zero as the timestamp in .pyc files so that builds are
192 ;; deterministic. TODO: Remove it when this variable is set in
193 ;; gnu-build-system.scm.
a665996f 194 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 195 #t))
5b4e2791
LC
196 (add-before 'configure 'do-not-record-configure-flags
197 (lambda* (#:key configure-flags #:allow-other-keys)
198 ;; Remove configure flags from the installed '_sysconfigdata.py'
199 ;; and 'Makefile' so we don't end up keeping references to the
200 ;; build tools.
201 ;;
202 ;; Preserve at least '--with-system-ffi' since otherwise the
203 ;; thing tries to build libffi, fails, and we end up with a
204 ;; Python that lacks ctypes.
205 (substitute* "configure"
206 (("^CONFIG_ARGS=.*$")
207 (format #f "CONFIG_ARGS='~a'\n"
208 (if (member "--with-system-ffi" configure-flags)
209 "--with-system-ffi"
210 ""))))
211 #t))
46472ecd
MW
212 (add-before
213 'check 'pre-check
214 (lambda _
215 ;; 'Lib/test/test_site.py' needs a valid $HOME
216 (setenv "HOME" (getcwd))
217 #t))
218 (add-after
219 'unpack 'set-source-file-times-to-1980
220 ;; XXX One of the tests uses a ZIP library to pack up some of the
221 ;; source tree, and fails with "ZIP does not support timestamps
222 ;; before 1980". Work around this by setting the file times in the
223 ;; source tree to sometime in early 1980.
224 (lambda _
225 (let ((circa-1980 (* 10 366 24 60 60)))
226 (ftw "." (lambda (file stat flag)
227 (utime file circa-1980 circa-1980)
228 #t))
02f0c3b2 229 #t)))
9ffe61b0
LC
230 (add-after 'install 'remove-tests
231 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
232 ;; because these files are used by some libraries out there.
233 (lambda* (#:key outputs #:allow-other-keys)
234 (let ((out (assoc-ref outputs "out")))
235 (match (scandir (string-append out "/lib")
236 (lambda (name)
237 (string-prefix? "python" name)))
238 ((pythonX.Y)
239 (let ((testdir (string-append out "/lib/" pythonX.Y
240 "/test")))
241 (with-directory-excursion testdir
242 (for-each delete-file-recursively
243 (scandir testdir
244 (match-lambda
245 ((or "." "..") #f)
246 (file
247 (not
248 (string-prefix? "test_support."
249 file))))))
250 (call-with-output-file "__init__.py" (const #t))
251 #t)))))))
216c283b
LC
252 (add-before 'strip 'make-libraries-writable
253 (lambda* (#:key outputs #:allow-other-keys)
254 ;; Make .so files writable so they can be stripped.
255 (let ((out (assoc-ref outputs "out")))
256 (for-each (lambda (file)
257 (chmod file #o755))
258 (find-files (string-append out "/lib")
259 "\\.so"))
260 #t)))
02f0c3b2
LC
261 (add-after 'install 'move-tk-inter
262 (lambda* (#:key outputs #:allow-other-keys)
263 ;; When Tkinter support is built move it to a separate output so
264 ;; that the main output doesn't contain a reference to Tcl/Tk.
265 (let ((out (assoc-ref outputs "out"))
266 (tk (assoc-ref outputs "tk")))
267 (when tk
268 (match (find-files out "tkinter.*\\.so")
269 ((tkinter.so)
270 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
271 ;; want it under TK/lib/pythonX.Y/site-packages.
272 (let* ((len (string-length out))
273 (target (string-append
274 tk "/"
275 (string-drop
276 (dirname (dirname tkinter.so))
277 len)
278 "/site-packages")))
279 (install-file tkinter.so target)
280 (delete-file tkinter.so)))))
281 #t))))))
a01b6da7 282 (inputs
3fdc99da
CR
283 `(("bzip2" ,bzip2)
284 ("gdbm" ,gdbm)
b10ab723 285 ("libffi" ,libffi) ; for ctypes
b88e1b0a 286 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 287 ("openssl" ,openssl)
3fdc99da 288 ("readline" ,readline)
afa181ff
LC
289 ("zlib" ,zlib)
290 ("tcl" ,tcl)
291 ("tk" ,tk))) ; for tkinter
b10ab723
CR
292 (native-inputs
293 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
294 (native-search-paths
295 (list (search-path-specification
296 (variable "PYTHONPATH")
af070955 297 (files '("lib/python2.7/site-packages")))))
f0499100 298 (home-page "https://www.python.org")
afa181ff 299 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
300 (description
301 "Python is a remarkably powerful dynamic programming language that
302is used in a wide variety of application domains. Some of its key
303distinguishing features include: clear, readable syntax; strong
304introspection capabilities; intuitive object orientation; natural
305expression of procedural code; full modularity, supporting hierarchical
306packages; exception-based error handling; and very high level dynamic
307data types.")
3f641af0 308 (license license:psfl)))
acc26ff1 309
45848023
HG
310;; Current 2.x version.
311(define-public python-2 python-2.7)
312
72df6680 313(define-public python-3.5
b24d1cfc 314 (package (inherit python-2)
72df6680 315 (version "3.5.2")
717003e3
LC
316 (source (origin
317 (method url-fetch)
318 (uri (string-append "https://www.python.org/ftp/python/"
319 version "/Python-" version ".tar.xz"))
fc1adab1
AK
320 (patches (search-patches
321 "python-fix-tests.patch"
72df6680 322 "python-3.5-fix-tests.patch"
fc1adab1
AK
323 "python-3-deterministic-build-info.patch"
324 "python-3-search-paths.patch"))
717003e3
LC
325 (patch-flags '("-p0"))
326 (sha256
327 (base32
72df6680 328 "0h6a5fr7ram2s483lh0pnmc4ncijb8llnpfdxdcl5dxr01hza400"))))
1f434457
MW
329 (arguments (substitute-keyword-arguments (package-arguments python-2)
330 ((#:tests? _) #t)))
1aebc0cb
AE
331 (native-search-paths
332 (list (search-path-specification
333 (variable "PYTHONPATH")
0e05d01e
SB
334 (files (list (string-append "lib/python"
335 (version-major+minor version)
336 "/site-packages"))))))))
f26a77ff 337
72df6680
LF
338(define-public python-3.4
339 (package (inherit python-3.5)
340 (version "3.4.5")
341 (source (origin
342 (method url-fetch)
343 (uri (string-append "https://www.python.org/ftp/python/"
344 version "/Python-" version ".tar.xz"))
345 (patches (search-patches
346 "python-fix-tests.patch"
347 "python-3.4-fix-tests.patch"
348 "python-3-deterministic-build-info.patch"
349 "python-3-search-paths.patch"))
350 (patch-flags '("-p0"))
351 (sha256
352 (base32
353 "12l9klp778wklxmckhghniy5hklss8r26995pyd00qbllk4b2r7f"))))))
354
45848023 355;; Current 3.x version.
72df6680 356(define-public python-3 python-3.5)
45848023
HG
357
358;; Current major version.
359(define-public python python-3)
360
95288fcc
LC
361;; Minimal variants of Python, mostly used to break the cycle between Tk and
362;; Python (Tk -> libxcb -> Python.)
363
364(define-public python2-minimal
365 (package (inherit python-2)
366 (name "python-minimal")
02f0c3b2 367 (outputs '("out"))
95288fcc
LC
368 (arguments
369 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
370 ((#:configure-flags cf)
371 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
372 (inputs '()))) ;none of the optional dependencies
373
374(define-public python-minimal
898238b9 375 (package (inherit python)
95288fcc 376 (name "python-minimal")
02f0c3b2 377 (outputs '("out"))
95288fcc 378
d0b73960 379 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
380 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
381 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
382 (inputs `(("libffi" ,libffi)
383 ("openssl" ,openssl)
95288fcc
LC
384 ("zlib" ,zlib)))))
385
64cb064c
LC
386(define* (wrap-python3 python
387 #:optional
388 (name (string-append (package-name python) "-wrapper")))
898238b9 389 (package (inherit python)
95288fcc 390 (name name)
898238b9
AE
391 (source #f)
392 (build-system trivial-build-system)
02f0c3b2 393 (outputs '("out"))
3969ca54 394 (inputs `(("bash" ,bash)))
3c0f2329 395 (propagated-inputs `(("python" ,python)))
898238b9
AE
396 (arguments
397 `(#:modules ((guix build utils))
398 #:builder
399 (begin
400 (use-modules (guix build utils))
401 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
402 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
403 (mkdir-p bin)
404 (for-each
405 (lambda (old new)
406 (symlink (string-append python old)
407 (string-append bin "/" new)))
3969ca54
SB
408 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
409 `("python" ,"pydoc" ,"idle" ,"pip"))
410 ;; python-config outputs search paths based upon its location,
411 ;; use a bash wrapper to avoid changing its outputs.
412 (let ((bash (string-append (assoc-ref %build-inputs "bash")
413 "/bin/bash"))
414 (old (string-append python "python3-config"))
415 (new (string-append bin "/python-config")))
416 (with-output-to-file new
417 (lambda ()
418 (format #t "#!~a~%" bash)
419 (format #t "exec \"~a\" \"$@\"~%" old)
420 (chmod new #o755)
421 #t)))))))
0d56e3e1
LC
422 (synopsis "Wrapper for the Python 3 commands")
423 (description
424 "This package provides wrappers for the commands of Python@tie{}3.x such
425that they can be invoked under their usual name---e.g., @command{python}
426instead of @command{python3}.")))
427
95288fcc
LC
428(define-public python-wrapper (wrap-python3 python))
429(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 430
aaf625b8
RW
431(define-public python-psutil
432 (package
433 (name "python-psutil")
88535a44 434 (version "4.3.0")
aaf625b8
RW
435 (source
436 (origin
437 (method url-fetch)
f56777be 438 (uri (pypi-uri "psutil" version))
aaf625b8
RW
439 (sha256
440 (base32
88535a44 441 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 442 (build-system python-build-system)
88535a44 443 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
444 (synopsis "Library for retrieving information on running processes")
445 (description
446 "psutil (Python system and process utilities) is a library for retrieving
447information on running processes and system utilization (CPU, memory, disks,
448network) in Python. It is useful mainly for system monitoring, profiling and
449limiting process resources and management of running processes. It implements
450many functionalities offered by command line tools such as: ps, top, lsof,
451netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
452pidof, tty, taskset, pmap.")
3f641af0 453 (license license:bsd-3)))
aaf625b8
RW
454
455(define-public python2-psutil
456 (package-with-python2 python-psutil))
898238b9 457
f9da1d8a
ED
458(define-public python-passlib
459 (package
460 (name "python-passlib")
3b86a385 461 (version "1.7.1")
f9da1d8a
ED
462 (source
463 (origin
464 (method url-fetch)
690e8c66 465 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
466 (sha256
467 (base32
3b86a385 468 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
f9da1d8a
ED
469 (build-system python-build-system)
470 (native-inputs
f3b98f4f 471 `(("python-nose" ,python-nose)))
f22efa01 472 (propagated-inputs
f9da1d8a
ED
473 `(("python-py-bcrypt" ,python-py-bcrypt)))
474 (arguments
475 `(#:phases
476 (alist-cons-before
477 'check 'set-PYTHON_EGG_CACHE
478 ;; some tests require access to "$HOME/.cython"
479 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
480 %standard-phases)))
481 (home-page "https://bitbucket.org/ecollins/passlib")
482 (synopsis
483 "Comprehensive password hashing framework")
484 (description
485 "Passlib is a password hashing library for Python 2 & 3, which provides
486cross-platform implementations of over 30 password hashing algorithms, as well
487as a framework for managing existing password hashes. It's designed to be
488useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
489to providing full-strength password hashing for multi-user application.")
3f641af0 490 (license license:bsd-3)))
f9da1d8a
ED
491
492(define-public python2-passlib
493 (package-with-python2 python-passlib))
494
feb0d9c3
ED
495(define-public python-py-bcrypt
496 (package
497 (name "python-py-bcrypt")
498 (version "0.4")
499 (source
500 (origin
501 (method url-fetch)
502 (uri (string-append
503 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
504 version
505 ".tar.gz"))
506 (sha256
507 (base32
508 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
509 (build-system python-build-system)
feb0d9c3
ED
510 (home-page "https://code.google.com/p/py-bcrypt")
511 (synopsis
512 "Bcrypt password hashing and key derivation")
513 (description
514 "A python wrapper of OpenBSD's Blowfish password hashing code. This
515system hashes passwords using a version of Bruce Schneier's Blowfish block
516cipher with modifications designed to raise the cost of off-line password
517cracking and frustrate fast hardware implementation. The computation cost of
518the algorithm is parametised, so it can be increased as computers get faster.
519The intent is to make a compromise of a password database less likely to
520result in an attacker gaining knowledge of the plaintext passwords (e.g. using
521John the Ripper).")
522 ;; "sha2.c" is under BSD-3;
523 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
524 ;; the rest is under ISC.
3f641af0 525 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
526
527(define-public python2-py-bcrypt
528 (package-with-python2 python-py-bcrypt))
529
530
429fdea1
ED
531(define-public python-paramiko
532 (package
533 (name "python-paramiko")
81b9bbbd 534 (version "1.16.0")
429fdea1
ED
535 (source
536 (origin
537 (method url-fetch)
81b9bbbd 538 (uri (pypi-uri "paramiko" version))
429fdea1
ED
539 (sha256
540 (base32
81b9bbbd 541 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1 542 (build-system python-build-system)
a3fc12da 543 (propagated-inputs
f22efa01
HG
544 `(("python-pycrypto" ,python-pycrypto)
545 ("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
546 (home-page "http://www.paramiko.org/")
547 (synopsis "SSHv2 protocol library")
548 (description "Paramiko is a python implementation of the SSHv2 protocol,
549providing both client and server functionality. While it leverages a Python C
550extension for low level cryptography (PyCrypto), Paramiko itself is a pure
551Python interface around SSH networking concepts.")
3f641af0 552 (license license:lgpl2.1+)))
429fdea1
ED
553
554(define-public python2-paramiko
555 (package-with-python2 python-paramiko))
556
557
de73dbf6
ED
558(define-public python-httplib2
559 (package
560 (name "python-httplib2")
286f1bac 561 (version "0.9.2")
de73dbf6
ED
562 (source
563 (origin
564 (method url-fetch)
286f1bac 565 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
566 (sha256
567 (base32
286f1bac 568 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 569 (build-system python-build-system)
286f1bac 570 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
571 (synopsis "Comprehensive HTTP client library")
572 (description
573 "A comprehensive HTTP client library supporting many features left out of
574other HTTP libraries.")
575 (license license:expat)))
576
577(define-public python2-httplib2
578 (package-with-python2 python-httplib2))
579
67039875
ED
580(define-public python-ecdsa
581 (package
582 (name "python-ecdsa")
583 (version "0.13")
584 (source
585 (origin
586 (method url-fetch)
587 (uri (string-append
588 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
589 version
590 ".tar.gz"))
591 (sha256
592 (base32
593 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
594 (build-system python-build-system)
67039875
ED
595 (inputs
596 `(("openssl" ,openssl)))
597 (home-page
598 "http://github.com/warner/python-ecdsa")
599 (synopsis
600 "ECDSA cryptographic signature library (pure python)")
601 (description
602 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
603Curve Digital Signature Algorithm), implemented purely in Python. With this
604library, you can quickly create keypairs (signing key and verifying key), sign
605messages, and verify the signatures. The keys and signatures are very short,
606making them easy to handle and incorporate into other protocols.")
607 (license license:expat)))
608
609(define-public python2-ecdsa
610 (package-with-python2 python-ecdsa))
611
52323f32
ED
612(define-public python-ccm
613 (package
614 (name "python-ccm")
db5567f7 615 (version "2.1.6")
52323f32
ED
616 (source
617 (origin
618 (method url-fetch)
db5567f7 619 (uri (pypi-uri "ccm" version))
52323f32
ED
620 (sha256
621 (base32
db5567f7 622 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 623 (build-system python-build-system)
f22efa01 624 (propagated-inputs
52323f32 625 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
626 ;; Not listed in setup.py, but used in ccmlib/node.py for full
627 ;; functionality
628 ("python-psutil" ,python-psutil)
52323f32
ED
629 ("python-six" ,python-six)))
630 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
631 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
632localhost")
633 (description "Cassandra Cluster Manager is a development tool for testing
634local Cassandra clusters. It creates, launches and removes Cassandra clusters
635on localhost.")
3f641af0 636 (license license:asl2.0)))
52323f32
ED
637
638(define-public python2-ccm
639 (package-with-python2 python-ccm))
640
89114f39 641(define-public python-pytz
acc26ff1 642 (package
89114f39 643 (name "python-pytz")
a5f92ca0 644 (version "2016.10")
acc26ff1
CR
645 (source
646 (origin
647 (method url-fetch)
61c9babb 648 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
649 (sha256
650 (base32
a5f92ca0 651 "0az099cyp6p5xbsvfcdacj4hvxncbwm2ayn3h55mcp07zb2b45kh"))))
acc26ff1 652 (build-system python-build-system)
8498b8cf 653 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 654 (home-page "http://pythonhosted.org/pytz")
9e771e3b 655 (synopsis "Python timezone library")
acc26ff1
CR
656 (description
657 "This library allows accurate and cross platform timezone calculations
658using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 659 (license license:expat)))
5ace6e2f 660
89114f39 661(define-public python2-pytz
11bb85a1 662 (package-with-python2 python-pytz))
89114f39 663
fc50e9c6 664
89114f39 665(define-public python-babel
5ace6e2f 666 (package
89114f39 667 (name "python-babel")
ffb1e98d 668 (version "2.3.4")
5ace6e2f
CR
669 (source
670 (origin
671 (method url-fetch)
b850a6d8 672 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
673 (sha256
674 (base32
ffb1e98d 675 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 676 (build-system python-build-system)
f22efa01 677 (propagated-inputs
f3b98f4f 678 `(("python-pytz" ,python-pytz)))
8498b8cf 679 (arguments `(#:tests? #f)) ; no test target
e1804763 680 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
681 (synopsis
682 "Tools for internationalizing Python applications")
683 (description
684 "Babel is composed of two major parts:
685- tools to build and work with gettext message catalogs
686- a Python interface to the CLDR (Common Locale Data Repository), providing
687access to various locale display names, localized number and date formatting,
688etc. ")
3f641af0 689 (license license:bsd-3)))
89114f39
AE
690
691(define-public python2-babel
11bb85a1 692 (package-with-python2 python-babel))
73adf220 693
ed377cc6
RW
694(define-public python2-backport-ssl-match-hostname
695 (package
696 (name "python2-backport-ssl-match-hostname")
f2d06d46 697 (version "3.5.0.1")
ed377cc6
RW
698 (source
699 (origin
700 (method url-fetch)
701 (uri (string-append
702 "https://pypi.python.org/packages/source/b/"
703 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
704 version ".tar.gz"))
705 (sha256
706 (base32
f2d06d46 707 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 708 (build-system python-build-system)
f2d06d46
EF
709 (arguments
710 `(#:python ,python-2
711 #:tests? #f)) ; no test target
f2d06d46
EF
712 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
713 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
714 (description
715 "This backport brings the ssl.match_hostname() function to users of
716earlier versions of Python. The function checks the hostname in the
717certificate returned by the server to which a connection has been established,
718and verifies that it matches the intended target hostname.")
3f641af0 719 (license license:psfl)))
ed377cc6 720
d205f895
TD
721(define-public python-hdf4
722 (package
723 (name "python-hdf4")
724 (version "0.9")
725 (source
726 (origin
727 (method url-fetch)
728 (uri (pypi-uri name version))
729 (sha256
730 (base32
731 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
732 (build-system python-build-system)
733 (native-inputs `(("nose" ,python-nose)))
734 (propagated-inputs `(("numpy" ,python-numpy)))
735 (inputs
736 `(("hdf4" ,hdf4)
737 ("libjpeg" ,libjpeg)
738 ("zlib" ,zlib)))
739 (arguments
740 `(#:phases
741 (modify-phases %standard-phases
742 (replace 'check
743 (lambda _
744 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
745 ;; on to import numpy. Somehow this works on their CI system.
746 ;; Let's just manage PYTHONPATH here instead.
747 (substitute* "runexamples.sh"
748 (("export PYTHONPATH=.*") ""))
749 (setenv "PYTHONPATH"
750 (string-append (getcwd) ":"
751 (getenv "PYTHONPATH")))
752 (and (zero? (system* "./runexamples.sh"))
753 (zero? (system* "nosetests" "-v"))))))))
754 (home-page "https://github.com/fhs/python-hdf4")
755 (synopsis "Python interface to the NCSA HDF4 library")
756 (description
757 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
758which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
759NetCDF files can also be read and modified. Python-HDF4 is a fork of
760@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
761 (license license:expat)))
762
763(define-public python2-hdf4
764 (package-with-python2 python-hdf4))
765
ef5cbf9b
RW
766(define-public python-h5py
767 (package
768 (name "python-h5py")
fe147c41 769 (version "2.6.0")
ef5cbf9b
RW
770 (source
771 (origin
772 (method url-fetch)
fe147c41 773 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
774 (sha256
775 (base32
fe147c41 776 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 777 (build-system python-build-system)
797e1401
RW
778 (arguments
779 `(#:tests? #f ; no test target
780 #:phases
781 (modify-phases %standard-phases
782 (add-after 'unpack 'fix-hdf5-paths
783 (lambda* (#:key inputs #:allow-other-keys)
784 (let ((prefix (assoc-ref inputs "hdf5")))
785 (substitute* "setup_build.py"
786 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
787 (string-append "['" prefix "/lib" "']"))
788 (("'/opt/local/include', '/usr/local/include'")
789 (string-append "'" prefix "/include" "'")))
790 (substitute* "setup_configure.py"
791 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
792 (string-append "['" prefix "/lib" "']")))
793 #t))))))
3c4010b1 794 (propagated-inputs
69866690
HG
795 `(("python-six" ,python-six)
796 ("python-numpy" ,python-numpy)))
ef5cbf9b 797 (inputs
69866690 798 `(("hdf5" ,hdf5)))
ef5cbf9b 799 (native-inputs
fe147c41
EF
800 `(("python-cython" ,python-cython)
801 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
802 (home-page "http://www.h5py.org/")
803 (synopsis "Read and write HDF5 files from Python")
804 (description
805 "The h5py package provides both a high- and low-level interface to the
806HDF5 library from Python. The low-level interface is intended to be a
807complete wrapping of the HDF5 API, while the high-level component supports
808access to HDF5 files, datasets and groups using established Python and NumPy
809concepts.")
9820a028 810 (license license:bsd-3)))
ef5cbf9b
RW
811
812(define-public python2-h5py
9820a028 813 (package-with-python2 python-h5py))
ef5cbf9b 814
ea8450c8
TD
815(define-public python-netcdf4
816 (package
817 (name "python-netcdf4")
d5a97839 818 (version "1.2.7")
ea8450c8
TD
819 (source
820 (origin
821 (method url-fetch)
822 (uri (pypi-uri "netCDF4" version))
823 (sha256
824 (base32
d5a97839 825 "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
ea8450c8
TD
826 (build-system python-build-system)
827 (native-inputs
828 `(("python-cython" ,python-cython)))
829 (propagated-inputs
830 `(("python-numpy" ,python-numpy)))
831 (inputs
832 `(("netcdf" ,netcdf)
833 ("hdf4" ,hdf4)
834 ("hdf5" ,hdf5)))
835 (arguments
836 '(#:phases
837 (modify-phases %standard-phases
838 (replace 'check
839 (lambda _
840 (setenv "NO_NET" "1") ; disable opendap tests
841 (with-directory-excursion "test"
842 (setenv "PYTHONPATH" ; find and add the library we just built
843 (string-append
844 (car (find-files "../build" "lib.*"
845 #:directories? #:t
846 #:fail-on-error? #:t))
847 ":" (getenv "PYTHONPATH")))
848 (zero? (system* "python" "run_all.py"))))))))
849 (home-page
850 "https://github.com/Unidata/netcdf4-python")
851 (synopsis "Python/numpy interface to the netCDF library")
852 (description "Netcdf4-python is a Python interface to the netCDF C
853library. netCDF version 4 has many features not found in earlier
854versions of the library and is implemented on top of HDF5. This module
855can read and write files in both the new netCDF 4 and the old netCDF 3
856format, and can create files that are readable by HDF5 clients. The
857API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
858to users of that module.")
859 ;; The software is mainly ISC, but includes some files covered
860 ;; by the Expat license.
861 (license (list license:isc license:expat))))
862
863(define-public python2-netcdf4
864 (package-with-python2 python-netcdf4))
865
c1448c69
EB
866(define-public python-lockfile
867 (package
868 (name "python-lockfile")
692add53 869 (version "0.12.2")
c1448c69
EB
870 (source
871 (origin
872 (method url-fetch)
873 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
874 "lockfile-" version ".tar.gz"))
875 (sha256
876 (base32
692add53 877 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
878 (build-system python-build-system)
879 (arguments '(#:test-target "check"))
692add53
BW
880 (native-inputs
881 `(("python-pbr" ,python-pbr)))
6a8f26a4 882 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
883 (synopsis "Platform-independent file locking module")
884 (description
885 "The lockfile package exports a LockFile class which provides a simple
886API for locking files.")
f210e944 887 (license license:expat)))
c1448c69
EB
888
889(define-public python2-lockfile
f210e944 890 (package-with-python2 python-lockfile))
c1448c69 891
5a1a4bf6
EB
892(define-public python-mock
893 (package
894 (name "python-mock")
895 (version "1.0.1")
896 (source
897 (origin
898 (method url-fetch)
6b7877e1 899 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
900 (sha256
901 (base32
902 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
903 (build-system python-build-system)
904 (arguments '(#:test-target "check"))
6b7877e1 905 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 906 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
907 (description
908 "Mock is a library for testing in Python. It allows you to replace parts
909of your system under test with mock objects and make assertions about how they
910have been used.")
bd3fa666 911 (license license:expat)))
5a1a4bf6
EB
912
913(define-public python2-mock
914 (package-with-python2 python-mock))
915
fc50e9c6 916
73adf220
AE
917(define-public python-setuptools
918 (package
919 (name "python-setuptools")
d660f7be 920 (version "31.0.0")
73adf220
AE
921 (source
922 (origin
923 (method url-fetch)
d660f7be 924 (uri (pypi-uri "setuptools" version))
73adf220
AE
925 (sha256
926 (base32
d660f7be 927 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
928 (modules '((guix build utils)))
929 (snippet
930 '(begin
931 ;; Remove included binaries which are used to build self-extracting
932 ;; installers for Windows.
933 ;; TODO: Find some way to build them ourself so we can include them.
934 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
935 #t))))
73adf220 936 (build-system python-build-system)
d3d656c5
AE
937 ;; FIXME: Tests require pytest, which itself relies on setuptools.
938 ;; One could bootstrap with an internal untested setuptools.
73adf220 939 (arguments
824af8ca 940 `(#:tests? #f))
73adf220
AE
941 (home-page "https://pypi.python.org/pypi/setuptools")
942 (synopsis
943 "Library designed to facilitate packaging Python projects")
944 (description
945 "Setuptools is a fully-featured, stable library designed to facilitate
946packaging Python projects, where packaging includes:
947Python package and module definitions,
948distribution package metadata,
949test hooks,
950project installation,
951platform-specific details,
952Python 3 support.")
d660f7be
MB
953 ;; TODO: setuptools now bundles the following libraries:
954 ;; packaging, pyparsing, six and appdirs. How to unbundle?
955 (license (list license:psfl ; setuptools itself
956 license:expat ; six, appdirs, pyparsing
957 license:asl2.0 ; packaging is dual ASL2/BSD-2
958 license:bsd-2))))
73adf220
AE
959
960(define-public python2-setuptools
961 (package-with-python2 python-setuptools))
fc50e9c6 962
aa21c764 963;;; Pycrypto is abandoned upstream:
1194575b 964;;;
aa21c764 965;;; https://github.com/dlitz/pycrypto/issues/173
1194575b 966;;;
aa21c764 967;;; TODO Remove this package from GNU Guix.
cafc3f5a
EB
968(define-public python-pycrypto
969 (package
970 (name "python-pycrypto")
971 (version "2.6.1")
972 (source
973 (origin
974 (method url-fetch)
aa21c764
LF
975 (uri (pypi-uri "pycrypto" version))
976 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
cafc3f5a
EB
977 (sha256
978 (base32
979 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
980 (build-system python-build-system)
cafc3f5a
EB
981 (inputs
982 `(("python" ,python)
983 ("gmp" ,gmp)))
984 (arguments
985 `(#:phases
986 (alist-cons-before
987 'build 'set-build-env
988 ;; pycrypto runs an autoconf configure script behind the scenes
989 (lambda _
990 (setenv "CONFIG_SHELL" (which "bash")))
991 %standard-phases)))
992 (home-page "http://www.pycrypto.org/")
993 (synopsis "Cryptographic modules for Python")
994 (description
995 "Pycrypto is a collection of both secure hash functions (such as SHA256
996and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 997etc.). The package is structured to make adding new modules easy.")
3f641af0 998 (license license:public-domain)))
cafc3f5a 999
345f0611 1000(define-public python2-pycrypto
1c0059da
EF
1001 (let ((pycrypto (package-with-python2 python-pycrypto)))
1002 (package (inherit pycrypto)
1003 (inputs
1004 `(("python" ,python-2)
1005 ,@(alist-delete
1006 "python"
1007 (package-inputs pycrypto)))))))
345f0611 1008
cafc3f5a
EB
1009(define-public python-keyring
1010 (package
1011 (name "python-keyring")
13f3ff35 1012 (version "8.7")
cafc3f5a
EB
1013 (source
1014 (origin
1015 (method url-fetch)
664e6c3a 1016 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1017 (sha256
1018 (base32
13f3ff35 1019 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1020 (build-system python-build-system)
1021 (native-inputs
13f3ff35 1022 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1023 (propagated-inputs
cafc3f5a
EB
1024 `(("python-pycrypto" ,python-pycrypto)))
1025 (arguments
664e6c3a 1026 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1027 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1028 (synopsis "Store and access your passwords safely")
1029 (description
1030 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1031service from python. It can be used in any application that needs safe
cafc3f5a
EB
1032password storage.")
1033 ;; "MIT" and PSF dual license
f210e944 1034 (license license:x11)))
cafc3f5a 1035
d7af1069 1036(define-public python2-keyring
f210e944 1037 (package-with-python2 python-keyring))
d7af1069 1038
a480bc41
EB
1039(define-public python-six
1040 (package
1041 (name "python-six")
b6ab89ef 1042 (version "1.10.0")
a480bc41
EB
1043 (source
1044 (origin
1045 (method url-fetch)
b6ab89ef 1046 (uri (pypi-uri "six" version))
a480bc41
EB
1047 (sha256
1048 (base32
b6ab89ef 1049 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1050 (build-system python-build-system)
a480bc41
EB
1051 (home-page "http://pypi.python.org/pypi/six/")
1052 (synopsis "Python 2 and 3 compatibility utilities")
1053 (description
35b9e423 1054 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1055functions for smoothing over the differences between the Python versions with
1056the goal of writing Python code that is compatible on both Python versions.
35b9e423 1057Six supports every Python version since 2.5. It is contained in only one
a480bc41 1058Python file, so it can be easily copied into your project.")
3f641af0 1059 (license license:x11)))
a480bc41 1060
0c20025c
AE
1061(define-public python2-six
1062 (package-with-python2 python-six))
1063
cafc3f5a
EB
1064(define-public python-dateutil-2
1065 (package
1066 (name "python-dateutil")
6bd9ad69 1067 (version "2.5.3")
cafc3f5a
EB
1068 (source
1069 (origin
1070 (method url-fetch)
394b8060 1071 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1072 (sha256
1073 (base32
6bd9ad69 1074 "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
cafc3f5a 1075 (build-system python-build-system)
f22efa01 1076 (propagated-inputs
394b8060 1077 `(("python-six" ,python-six)))
b5a5fb19 1078 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1079 (synopsis "Extensions to the standard datetime module")
1080 (description
1081 "The dateutil module provides powerful extensions to the standard
1082datetime module, available in Python 2.3+.")
f210e944 1083 (license license:bsd-3)))
cafc3f5a
EB
1084
1085(define-public python2-dateutil-2
f210e944 1086 (package-with-python2 python-dateutil-2))
cafc3f5a 1087
fc50e9c6
AE
1088(define-public python-dateutil
1089 (package
1090 (name "python-dateutil")
1091 (version "1.5") ; last version for python < 3
1092 (source
1093 (origin
1094 (method url-fetch)
cafc3f5a
EB
1095 (uri (string-append "http://labix.org/download/python-dateutil/"
1096 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
1097 (sha256
1098 (base32
1099 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
1100 (build-system python-build-system)
b5a5fb19 1101 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a 1102 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
1103 (description
1104 "The dateutil module provides powerful extensions to the standard
1105datetime module, available in Python 2.3+.")
3f641af0 1106 (license license:psfl)))
fc50e9c6
AE
1107
1108(define-public python2-dateutil
1109 (package-with-python2 python-dateutil))
1d08c01f 1110
cafc3f5a
EB
1111(define-public python-parsedatetime
1112 (package
1113 (name "python-parsedatetime")
eebf6f01 1114 (version "2.1")
cafc3f5a
EB
1115 (source
1116 (origin
1117 (method url-fetch)
eebf6f01 1118 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1119 (sha256
1120 (base32
eebf6f01 1121 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1122 (build-system python-build-system)
1123 (native-inputs
eebf6f01
EF
1124 `(("python-nose" ,python-nose)
1125 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1126 (home-page "http://github.com/bear/parsedatetime/")
1127 (synopsis
1128 "Parse human-readable date/time text")
1129 (description
e881752c 1130 "Parse human-readable date/time text.")
f210e944 1131 (license license:asl2.0)))
cafc3f5a 1132
38b8f9b2 1133(define-public python2-parsedatetime
f210e944 1134 (package-with-python2 python-parsedatetime))
38b8f9b2 1135
d072efcb
RW
1136(define-public python-pandas
1137 (package
1138 (name "python-pandas")
7d0c3c8d 1139 (version "0.18.1")
d072efcb
RW
1140 (source
1141 (origin
1b96f069 1142 (method url-fetch)
7d0c3c8d
EF
1143 (uri (string-append
1144 "https://pypi.python.org/packages/11/09/"
1145 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1146 "pandas-" version ".tar.gz"))
1b96f069 1147 (sha256
7d0c3c8d 1148 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1149 (build-system python-build-system)
d072efcb 1150 (propagated-inputs
f22efa01
HG
1151 `(("python-numpy" ,python-numpy)
1152 ("python-pytz" ,python-pytz)
d072efcb
RW
1153 ("python-dateutil" ,python-dateutil-2)))
1154 (native-inputs
abcc7a0e
HG
1155 `(("python-nose" ,python-nose)
1156 ("python-cython" ,python-cython)))
d072efcb
RW
1157 (home-page "http://pandas.pydata.org")
1158 (synopsis "Data structures for data analysis, time series, and statistics")
1159 (description
1160 "Pandas is a Python package providing fast, flexible, and expressive data
1161structures designed to make working with structured (tabular,
1162multidimensional, potentially heterogeneous) and time series data both easy
1163and intuitive. It aims to be the fundamental high-level building block for
1164doing practical, real world data analysis in Python.")
f210e944 1165 (license license:bsd-3)))
d072efcb
RW
1166
1167(define-public python2-pandas
f210e944 1168 (package-with-python2 python-pandas))
d072efcb 1169
cafc3f5a
EB
1170(define-public python-tzlocal
1171 (package
1172 (name "python-tzlocal")
ed80839b 1173 (version "1.2.2")
cafc3f5a
EB
1174 (source
1175 (origin
1176 (method url-fetch)
226d3331 1177 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1178 (sha256
1179 (base32
ed80839b 1180 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1181 (build-system python-build-system)
f22efa01
HG
1182 (propagated-inputs
1183 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1184 (home-page "https://github.com/regebro/tzlocal")
1185 (synopsis
35b9e423 1186 "Local timezone information for Python")
cafc3f5a
EB
1187 (description
1188 "Tzlocal returns a tzinfo object with the local timezone information.
1189This module attempts to fix a glaring hole in pytz, that there is no way to
1190get the local timezone information, unless you know the zoneinfo name, and
1191under several distributions that's hard or impossible to figure out.")
3f641af0 1192 (license license:cc0)))
cafc3f5a 1193
1d08c01f
AE
1194(define-public python2-pysqlite
1195 (package
1196 (name "python2-pysqlite")
e80aaeb4 1197 (version "2.8.3")
1d08c01f
AE
1198 (source
1199 (origin
1200 (method url-fetch)
fe476868 1201 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1202 (sha256
1203 (base32
e80aaeb4 1204 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1d08c01f
AE
1205 (build-system python-build-system)
1206 (inputs
1207 `(("sqlite" ,sqlite)))
1208 (arguments
1209 `(#:python ,python-2 ; incompatible with Python 3
1210 #:tests? #f)) ; no test target
fe476868 1211 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1212 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1213 (description
1214 "Pysqlite provides SQLite bindings for Python that comply to the
1215Database API 2.0T.")
ed0cdf83 1216 (license license:zlib)))
1d08c01f 1217
2875caf5
AE
1218
1219(define-public python2-mechanize
1220 (package
1221 (name "python2-mechanize")
1222 (version "0.2.5")
1223 (source
1224 (origin
1225 (method url-fetch)
1226 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1227 version ".tar.gz"))
1228 (sha256
1229 (base32
1230 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1231 (build-system python-build-system)
2875caf5
AE
1232 (arguments
1233 `(#:python ,python-2 ; apparently incompatible with Python 3
1234 #:tests? #f))
1235 ;; test fails with message
1236 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1237 ;; (python-3.3.2) or
1238 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1239 ;; (python-2.7.5).
1240 ;; The source code is from March 2011 and probably not up-to-date
1241 ;; with respect to python unit tests.
1242 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1243 (synopsis
1244 "Stateful programmatic web browsing in Python")
1245 (description
1246 "Mechanize implements stateful programmatic web browsing in Python,
1247after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1248 (license (license:non-copyleft
1249 "file://COPYING"
1250 "See COPYING in the distribution."))))
2875caf5 1251
0352532e
AE
1252
1253(define-public python-simplejson
1254 (package
1255 (name "python-simplejson")
b2e6e150 1256 (version "3.10.0")
0352532e
AE
1257 (source
1258 (origin
1259 (method url-fetch)
988d1bad 1260 (uri (pypi-uri "simplejson" version))
0352532e
AE
1261 (sha256
1262 (base32
b2e6e150 1263 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1264 (build-system python-build-system)
1265 (home-page "http://simplejson.readthedocs.org/en/latest/")
1266 (synopsis
1267 "Json library for Python")
1268 (description
e881752c
AK
1269 "JSON (JavaScript Object Notation) is a subset of JavaScript
1270syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1271format.
0352532e
AE
1272
1273Simplejson exposes an API familiar to users of the standard library marshal
1274and pickle modules. It is the externally maintained version of the json
1275library contained in Python 2.6, but maintains compatibility with Python 2.5
1276and (currently) has significant performance advantages, even without using
1277the optional C extension for speedups. Simplejson is also supported on
1278Python 3.3+.")
3f641af0 1279 (license license:x11)))
0352532e
AE
1280
1281(define-public python2-simplejson
1282 (package-with-python2 python-simplejson))
421a80a2
AE
1283
1284
ed07b08d 1285(define-public python-pyicu
421a80a2 1286 (package
ed07b08d 1287 (name "python-pyicu")
2e161eaf 1288 (version "1.9.5")
421a80a2
AE
1289 (source
1290 (origin
1291 (method url-fetch)
2e161eaf 1292 (uri (pypi-uri "PyICU" version))
421a80a2
AE
1293 (sha256
1294 (base32
2e161eaf 1295 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
421a80a2
AE
1296 (build-system python-build-system)
1297 (inputs
1298 `(("icu4c" ,icu4c)))
421a80a2 1299 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1300 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1301 (description
1302 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1303 (license license:x11)))
ed07b08d
LF
1304
1305(define-public python2-pyicu
f210e944 1306 (package-with-python2 python-pyicu))
cc20a22a
LC
1307
1308(define-public python2-dogtail
1309 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1310 ;; spaces in indentation" with Python 3.
1311 (package
1312 (name "python2-dogtail")
1313 (version "0.8.2")
1314 (source (origin
1315 (method url-fetch)
1316 (uri (string-append
1317 "https://fedorahosted.org/released/dogtail/dogtail-"
1318 version ".tar.gz"))
1319 (sha256
1320 (base32
1321 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1322 (build-system python-build-system)
1323 (arguments `(#:python ,python-2
1324 #:tests? #f)) ; invalid command "test"
1325 (home-page "https://fedorahosted.org/dogtail/")
1003fbcf 1326 (synopsis "GUI test tool and automation framework written in Python")
cc20a22a 1327 (description
35b9e423 1328 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1329It uses Accessibility (a11y) technologies to communicate with desktop
1330applications. dogtail scripts are written in Python and executed like any
1331other Python program.")
3f641af0 1332 (license license:gpl2+)))
515e6878 1333
011b18c3
LC
1334(define-public python2-empy
1335 (package
1336 (name "python2-empy")
1337 (version "3.3")
1338 (source (origin
1339 (method url-fetch)
1340 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1341 version ".tar.gz"))
1342 (sha256
1343 (base32
1344 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1345 (build-system python-build-system)
1346 (arguments
1347 `(#:python ,python-2
1348 #:phases (alist-replace
1349 'check
1350 (lambda _
1351 (zero? (system* "./test.sh")))
1352 %standard-phases)))
1353 (home-page "http://www.alcyone.com/software/empy/")
1354 (synopsis "Templating system for Python")
1355 (description
1356 "EmPy is a system for embedding Python expressions and statements in
1357template text; it takes an EmPy source file, processes it, and produces
1358output. This is accomplished via expansions, which are special signals to the
1cd4027c 1359EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1360EmPy can expand arbitrary Python expressions and statements in this way, as
1361well as a variety of special forms. Textual data not explicitly delimited in
1362this way is sent unaffected to the output, allowing Python to be used in
1363effect as a markup language. Also supported are callbacks via hooks,
1364recording and playback via diversions, and dynamic, chainable filters. The
1365system is highly configurable via command line options and embedded
1366commands.")
3f641af0 1367 (license license:lgpl2.1+)))
011b18c3 1368
8deeda0c
LC
1369(define-public python2-element-tree
1370 (package
1371 (name "python2-element-tree")
1372 (version "1.2.6")
1373 (source (origin
1374 (method url-fetch)
1375 (uri (string-append
1376 "http://effbot.org/media/downloads/elementtree-"
1377 version "-20050316.tar.gz"))
1378 (sha256
1379 (base32
1380 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1381 (build-system python-build-system)
1382 (arguments
1383 `(#:python ,python-2 ; seems to be part of Python 3
1384 #:tests? #f)) ; no 'test' sub-command
1385 (synopsis "Toolkit for XML processing in Python")
1386 (description
1387 "ElementTree is a Python library supporting lightweight XML processing.")
1388 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1389 (license (license:x11-style
1390 "http://docs.python.org/2/license.html"
1391 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1392
1393(define-public python2-pybugz
1394 (package
1395 (name "python2-pybugz")
1396 (version "0.6.11")
1397 (source (origin
1398 (method url-fetch)
1399 (uri (string-append
1400 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1401 version ".tar.gz"))
1402 (sha256
1403 (base32
6f194a1e 1404 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1405 (patches (search-patches "pybugz-stty.patch"
1406 "pybugz-encode-error.patch"))))
8deeda0c
LC
1407 (build-system python-build-system)
1408 (arguments
1409 `(#:python ,python-2 ; SyntaxError with Python 3
1410 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1411 (propagated-inputs
1412 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1413 (synopsis "Python and command-line interface to Bugzilla")
1414 (description
1415 "PyBugz is a Python library and command-line tool to query the Bugzilla
1416bug tracking system. It is meant as an aid to speed up interaction with the
1417bug tracker.")
1418 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1419 (license license:gpl2)))
8deeda0c 1420
a480bc41
EB
1421(define-public python-enum34
1422 (package
1423 (name "python-enum34")
d39ae1e5 1424 (version "1.1.0")
a480bc41
EB
1425 (source
1426 (origin
1427 (method url-fetch)
d39ae1e5 1428 (uri (pypi-uri "enum34" version))
a480bc41
EB
1429 (sha256
1430 (base32
d39ae1e5 1431 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1432 (build-system python-build-system)
a480bc41
EB
1433 (arguments
1434 `(#:phases
1435 (alist-replace
1436 'check
1437 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1438 %standard-phases)))
1439 (home-page "https://pypi.python.org/pypi/enum34")
1440 (synopsis "Backported Python 3.4 Enum")
1441 (description
1442 "Enum34 is the new Python stdlib enum module available in Python 3.4
1443backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1444 (license license:bsd-3)))
a480bc41 1445
820acd1b
LF
1446(define-public python2-enum34
1447 (package-with-python2 python-enum34))
1448
a480bc41
EB
1449(define-public python-parse-type
1450 (package
1451 (name "python-parse-type")
1452 (version "0.3.4")
1453 (source
1454 (origin
1455 (method url-fetch)
1456 (uri (string-append "https://pypi.python.org/packages/source/p/"
1457 "parse_type/parse_type-" version ".tar.gz"))
1458 (sha256
1459 (base32
1460 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1461 (build-system python-build-system)
f22efa01 1462 (propagated-inputs
f3b98f4f 1463 `(("python-six" ,python-six)
68f1cdec 1464 ("python-parse" ,python-parse)))
a480bc41
EB
1465 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1466 (home-page "https://github.com/jenisys/parse_type")
1467 (synopsis "Extended parse module")
1468 (description
1469 "Parse_type extends the python parse module.")
3f641af0 1470 (license license:bsd-3)))
a480bc41
EB
1471
1472(define-public python-parse
1473 (package
1474 (name "python-parse")
eb3d3503 1475 (version "1.6.6")
a480bc41
EB
1476 (source
1477 (origin
1478 (method url-fetch)
eb3d3503 1479 (uri (pypi-uri "parse" version))
a480bc41
EB
1480 (sha256
1481 (base32
aa6c09ed
EF
1482 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1483 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1484 (build-system python-build-system)
1485 (arguments
1486 `(#:phases
f9a65318
EF
1487 (modify-phases %standard-phases
1488 (replace 'check
1489 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1490 (home-page "https://github.com/r1chardj0n3s/parse")
1491 (synopsis "Parse strings")
1492 (description
1493 "Parse strings using a specification based on the Python format()
1494syntax.")
3f641af0 1495 (license license:x11)))
a480bc41 1496
d3eff97a
JL
1497(define-public python-polib
1498 (package
1499 (name "python-polib")
1500 (version "1.0.8")
1501 (source (origin
1502 (method url-fetch)
1503 (uri (pypi-uri "polib" version))
1504 (sha256
1505 (base32
1506 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1507 (build-system python-build-system)
1508 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1509 (synopsis "Manipulate, create and modify gettext files")
1510 (description "Polib can manipulate any gettext format (po, pot and mo)
1511files. It can be used to create po files from scratch or to modify
1512existing ones.")
1513 (license license:expat)))
1514
1515(define-public python2-polib
1516 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1517 (package
1518 (inherit base)
1519 (arguments `(,@(package-arguments base)
1520 ;; Tests don't work with python2.
1521 #:tests? #f)))))
a480bc41 1522
515e6878
LC
1523(define-public scons
1524 (package
1525 (name "scons")
a3f61425 1526 (version "2.3.4")
515e6878
LC
1527 (source (origin
1528 (method url-fetch)
de67e922
LF
1529 (uri (string-append "mirror://sourceforge/scons/scons/" version
1530 "/scons-" version ".tar.gz"))
515e6878
LC
1531 (sha256
1532 (base32
a3f61425 1533 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1534 (build-system python-build-system)
1535 (arguments
1536 ;; With Python 3.x, fails to build with a syntax error.
1537 `(#:python ,python-2
b3e8b4bd 1538 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1539 #:tests? #f)) ; no 'python setup.py test' command
1540 (home-page "http://scons.org/")
1541 (synopsis "Software construction tool written in Python")
1542 (description
1543 "SCons is a software construction tool. Think of SCons as an improved,
1544cross-platform substitute for the classic Make utility with integrated
1545functionality similar to autoconf/automake and compiler caches such as ccache.
1546In short, SCons is an easier, more reliable and faster way to build
1547software.")
3f641af0 1548 (license license:x11)))
011b18c3 1549
c15a5c0e
DT
1550(define-public python-extras
1551 (package
1552 (name "python-extras")
1553 (version "0.0.3")
1554 (source
1555 (origin
1556 (method url-fetch)
1557 (uri (string-append
1558 "https://pypi.python.org/packages/source/e/extras/extras-"
1559 version ".tar.gz"))
1560 (sha256
1561 (base32
1562 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1563 (build-system python-build-system)
c15a5c0e
DT
1564 (arguments
1565 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1566 '(#:tests? #f))
1567 (home-page "https://github.com/testing-cabal/extras")
1568 (synopsis "Useful extensions to the Python standard library")
1569 (description
1570 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1571 (license license:expat)))
c15a5c0e
DT
1572
1573(define-public python2-extras
1574 (package-with-python2 python-extras))
1575
56ea0efd
DT
1576(define-public python-mimeparse
1577 (package
1578 (name "python-mimeparse")
1579 (version "0.1.4")
1580 (source
1581 (origin
1582 (method url-fetch)
1583 (uri (string-append
1584 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1585 version ".tar.gz"))
1586 (sha256
1587 (base32
1588 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1589 (build-system python-build-system)
56ea0efd
DT
1590 (arguments
1591 '(#:tests? #f)) ; no setup.py test command
1592 (home-page
1593 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1594 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1595 (description
1596 "Mimeparse provides basic functions for parsing MIME type names and
1597matching them against a list of media-ranges.")
bd3fa666 1598 (license license:expat)))
56ea0efd
DT
1599
1600(define-public python2-mimeparse
1601 (package-with-python2 python-mimeparse))
1602
4435427e
DT
1603(define-public python-nose
1604 (package
1605 (name "python-nose")
f7cb9841 1606 (version "1.3.7")
4435427e
DT
1607 (source
1608 (origin
1609 (method url-fetch)
f7cb9841 1610 (uri (pypi-uri "nose" version))
4435427e
DT
1611 (sha256
1612 (base32
f7cb9841 1613 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1614 (build-system python-build-system)
4435427e
DT
1615 (arguments
1616 '(#:tests? #f)) ; FIXME: test suite fails
1617 (home-page "http://readthedocs.org/docs/nose/")
1618 (synopsis "Python testing library")
1619 (description
1620 "Nose extends the unittest library to make testing easier.")
3f641af0 1621 (license license:lgpl2.0+)))
4435427e
DT
1622
1623(define-public python2-nose
1624 (package-with-python2 python-nose))
1625
0aea283a
EF
1626(define-public python-nose2
1627 (package
1628 (name "python-nose2")
1629 (version "0.6.5")
1630 (source
1631 (origin
1632 (method url-fetch)
1633 (uri (pypi-uri "nose2" version))
1634 (sha256
1635 (base32
1636 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1637 (build-system python-build-system)
1638 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1639 (propagated-inputs
0aea283a
EF
1640 `(("python-cov-core" ,python-cov-core)
1641 ("python-pytest-cov" ,python-pytest-cov)
1642 ("python-six" ,python-six)))
1643 (home-page "https://github.com/nose-devs/nose2")
1644 (synopsis "Next generation of nicer testing for Python")
1645 (description
1646 "Nose2 is the next generation of nicer testing for Python, based on the
1647plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1648better plugin api, being easier for users to configure, and simplifying internal
1649interfaces and processes.")
1650 (license license:bsd-2)))
1651
1652(define-public python2-nose2
1653 (package-with-python2 python-nose2))
1654
6cd9c356
DT
1655(define-public python-unittest2
1656 (package
1657 (name "python-unittest2")
1658 (version "0.5.1")
1659 (source
1660 (origin
1661 (method url-fetch)
1662 (uri (string-append
1663 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1664 version ".tar.gz"))
1665 (sha256
1666 (base32
1667 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1668 (build-system python-build-system)
6cd9c356
DT
1669 (home-page "http://pypi.python.org/pypi/unittest2")
1670 (synopsis "Python unit testing library")
1671 (description
1672 "Unittest2 is a replacement for the unittest module in the Python
1673standard library.")
3f641af0 1674 (license license:psfl)))
6cd9c356
DT
1675
1676(define-public python2-unittest2
1677 (package (inherit python-unittest2)
1678 (name "python2-unittest2")
1679 (version "0.5.1")
1680 (source
1681 (origin
1682 (method url-fetch)
1683 (uri (string-append
1684 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1685 version ".tar.gz"))
1686 (sha256
1687 (base32
1688 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1689 (arguments
1690 `(#:python ,python-2
1691 #:tests? #f)))) ; no setup.py test command
1692
02f8f804 1693(define-public python-pafy
1694 (package
1695 (name "python-pafy")
1696 (version "0.5.2")
1697 (source
1698 (origin
1699 (method url-fetch)
1700 (uri (pypi-uri "pafy" version))
1701 (sha256
1702 (base32
1703 "1ckvrypyvb7jbqlgwdz0y337ajagjv7dgxyns326nqwypn1wpq0i"))))
1704 (build-system python-build-system)
ed3fee5f 1705 (arguments
1706 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1707 (propagated-inputs
1708 ;; Youtube-dl is a python package which is imported in the file
1709 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1710 `(("youtube-dl" ,youtube-dl)))
1711 (home-page "https://np1.github.io/pafy/")
1712 (synopsis "Retrieve YouTube content and metadata")
1713 (description
1714 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1715 (license license:lgpl3+)))
1716
542ad60f
DT
1717(define-public python-py
1718 (package
1719 (name "python-py")
71c8a804 1720 (version "1.4.31")
542ad60f
DT
1721 (source
1722 (origin
1723 (method url-fetch)
71c8a804 1724 (uri (pypi-uri "py" version))
542ad60f
DT
1725 (sha256
1726 (base32
71c8a804 1727 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f 1728 (build-system python-build-system)
542ad60f
DT
1729 (home-page "http://pylib.readthedocs.org/")
1730 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1731 (description
1732 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1733code introspection, and logging.")
bd3fa666 1734 (license license:expat)))
542ad60f
DT
1735
1736(define-public python2-py
1737 (package-with-python2 python-py))
1738
855d4761
DT
1739(define-public python-pytest
1740 (package
1741 (name "python-pytest")
61a4332d 1742 (version "2.7.3")
855d4761
DT
1743 (source
1744 (origin
1745 (method url-fetch)
1746 (uri (string-append
1747 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1748 version ".tar.gz"))
1749 (sha256
1750 (base32
61a4332d 1751 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1752 (modules '((guix build utils)))
1753 (snippet
1754 ;; One of the tests involves the /usr directory, so it fails.
1755 '(substitute* "testing/test_argcomplete.py"
1756 (("def test_remove_dir_prefix\\(self\\):")
1757 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1758 (build-system python-build-system)
482d9591
HG
1759 (propagated-inputs
1760 `(("python-py" ,python-py)))
e7881f3d 1761 (native-inputs
482d9591 1762 `(("python-nose" ,python-nose)
855d4761
DT
1763 ("python-mock" ,python-mock)))
1764 (home-page "http://pytest.org")
1765 (synopsis "Python testing library")
1766 (description
1767 "Pytest is a testing tool that provides auto-discovery of test modules
1768and functions, detailed info on failing assert statements, modular fixtures,
1769and many external plugins.")
bd3fa666 1770 (license license:expat)))
855d4761
DT
1771
1772(define-public python2-pytest
1773 (package-with-python2 python-pytest))
1774
fca4ff35
LF
1775;; This package is used by Borg until we can upgrade all our Python packages to
1776;; use a more recent pytest.
1777(define-public python-pytest-2.9.2
1778 (package
1779 (inherit python-pytest)
1780 (name "python-pytest")
1781 (version "2.9.2")
1782 (source (origin
1783 (method url-fetch)
1784 (uri (pypi-uri "pytest" version))
1785 (sha256
1786 (base32
1787 "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"))))
1788 (arguments
1789 `(#:phases
1790 (modify-phases %standard-phases
1791 (add-before 'check 'disable-invalid-test
1792 (lambda _
1793 (substitute* "testing/test_argcomplete.py"
1794 (("def test_remove_dir_prefix" line)
1795 (string-append "@pytest.mark.skip"
1796 "(reason=\"Assumes that /usr exists.\")\n "
1797 line)))
1798 #t)))))))
1799
358c3d61
EF
1800(define-public python-pytest-cov
1801 (package
1802 (name "python-pytest-cov")
545f4a1c 1803 (version "2.2.1")
358c3d61
EF
1804 (source
1805 (origin
1806 (method url-fetch)
1807 (uri (pypi-uri "pytest-cov" version))
1808 (sha256
545f4a1c
EF
1809 (base32
1810 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1811 (build-system python-build-system)
ce40b383
HG
1812 (arguments
1813 `(#:phases
1814 (modify-phases %standard-phases
1815 (replace 'check
1816 (lambda _
1817 ;; options taken from tox.ini
1818 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1819 ;; with "Duplicate implicit target name"
1820 (zero? (system* "python" "./setup.py" "check"
1821 "--strict" "--metadata")))))))
f22efa01 1822 (propagated-inputs
10468636
EF
1823 `(("python-coverage" ,python-coverage)
1824 ("python-pytest" ,python-pytest)))
10468636
EF
1825 (home-page "https://github.com/pytest-dev/pytest-cov")
1826 (synopsis "Pytest plugin for measuring coverage")
1827 (description
1828 "Pytest-cov produces coverage reports. It supports centralised testing and
1829distributed testing in both @code{load} and @code{each} modes. It also
1830supports coverage of subprocesses.")
f210e944 1831 (license license:expat)))
358c3d61
EF
1832
1833(define-public python2-pytest-cov
f210e944 1834 (package-with-python2 python-pytest-cov))
358c3d61 1835
6784f2e3
RW
1836(define-public python-pytest-runner
1837 (package
1838 (name "python-pytest-runner")
1839 (version "2.6.2")
1840 (source
1841 (origin
1842 (method url-fetch)
54cd239b 1843 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1844 (sha256
1845 (base32
1846 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1847 (build-system python-build-system)
1848 (arguments
1849 `(#:phases
1850 (modify-phases %standard-phases
1851 ;; The fancy way of setting the version with setuptools_scm does not
1852 ;; seem to work here.
1853 (add-after 'unpack 'set-version
1854 (lambda _
1855 (substitute* "docs/conf.py"
1856 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1857 (string-append "version = \"" ,version "\"")))
1858 #t)))))
1859 (native-inputs
1860 `(("python-pytest" ,python-pytest)
1861 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1862 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1863 (synopsis "Invoke py.test as a distutils command")
1864 (description
1865 "This package provides a @command{pytest-runner} command that
1866@file{setup.py} files can use to run tests.")
f210e944 1867 (license license:expat)))
54cd239b
EF
1868
1869(define-public python2-pytest-runner
f210e944 1870 (package-with-python2 python-pytest-runner))
6784f2e3 1871
44547e51
EF
1872(define-public python-pytest-mock
1873 (package
1874 (name "python-pytest-mock")
1875 (version "1.2")
1876 (source
1877 (origin
1878 (method url-fetch)
1879 (uri (pypi-uri "pytest-mock" version ".zip"))
1880 (sha256
1881 (base32
1882 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1883 (build-system python-build-system)
1884 (native-inputs
1885 `(("unzip" ,unzip)))
f22efa01 1886 (propagated-inputs
d5e41cf2 1887 `(("python-pytest" ,python-pytest)))
44547e51
EF
1888 (home-page "https://github.com/pytest-dev/pytest-mock/")
1889 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1890 (description
1891 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1892around the patching API provided by the @code{mock} package, but with the
1893benefit of not having to worry about undoing patches at the end of a test.
1894The mocker fixture has the same API as @code{mock.patch}, supporting the
1895same arguments.")
1896 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1897 (license license:expat)))
1898
1899(define-public python2-pytest-mock
1900 (let ((base (package-with-python2
1901 (strip-python2-variant python-pytest-mock))))
1902 (package (inherit base)
f22efa01 1903 (propagated-inputs
44547e51 1904 `(("python2-mock" ,python2-mock)
f22efa01 1905 ,@(package-propagated-inputs base))))))
44547e51 1906
8fa58fc9
CAW
1907(define-public python-pytest-xdist
1908 (package
1909 (name "python-pytest-xdist")
1910 (version "1.14")
1911 (source
1912 (origin
1913 (method url-fetch)
1914 (uri (pypi-uri "pytest-xdist" version ".zip"))
1915 (sha256
1916 (base32
de585a7e
HG
1917 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1918 (modules '((guix build utils)))
1919 (snippet
1920 '(begin
1921 ;; Remove pre-compiled .pyc files from source.
1922 (for-each delete-file-recursively
1923 (find-files "." "__pycache__" #:directories? #t))
1924 (for-each delete-file (find-files "." "\\.pyc$"))
1925 #t))))
8fa58fc9
CAW
1926 (build-system python-build-system)
1927 (native-inputs
1928 `(("unzip" ,unzip)
8fa58fc9 1929 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1930 (propagated-inputs
c4516ad2 1931 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
1932 ("python-pytest" ,python-pytest)
1933 ("python-py" ,python-py)))
1934 (home-page
1935 "https://github.com/pytest-dev/pytest-xdist")
1936 (synopsis
1937 "Plugin for py.test with distributed testing and loop-on-failing modes")
1938 (description
1939 "The pytest-xdist plugin extends py.test with some unique test execution
1940modes: parallelization, running tests in boxed subprocesses, the ability
1941to run tests repeatedly when failed, and the ability to run tests on multiple
1942Python interpreters or platforms. It uses rsync to copy the existing
1943program code to a remote location, executes there, and then syncs the
1944result back.")
f210e944 1945 (license license:expat)))
8fa58fc9
CAW
1946
1947(define-public python2-pytest-xdist
f210e944 1948 (package-with-python2 python-pytest-xdist))
8fa58fc9 1949
84d24017
DT
1950(define-public python-scripttest
1951 (package
1952 (name "python-scripttest")
1953 (version "1.3")
1954 (source
1955 (origin
1956 (method url-fetch)
1957 (uri (string-append
1958 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1959 version ".tar.gz"))
1960 (sha256
1961 (base32
1962 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1963 (build-system python-build-system)
521b7772 1964 (native-inputs
f3b98f4f 1965 `(("python-pytest" ,python-pytest)))
84d24017
DT
1966 (home-page "http://pythonpaste.org/scripttest/")
1967 (synopsis "Python library to test command-line scripts")
1968 (description "Scripttest is a Python helper library for testing
1969interactive command-line applications. With it you can run a script in a
1970subprocess and see the output as well as any file modifications.")
bd3fa666 1971 (license license:expat)))
84d24017
DT
1972
1973(define-public python2-scripttest
1974 (package-with-python2 python-scripttest))
1975
d8fa80e1
DT
1976(define-public python-testtools
1977 (package
1978 (name "python-testtools")
1979 (version "1.0.0")
1980 (source
1981 (origin
1982 (method url-fetch)
1983 (uri (string-append
1984 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1985 version ".tar.gz"))
1986 (sha256
1987 (base32
1988 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1989 (build-system python-build-system)
0e88cbf8 1990 (propagated-inputs
f22efa01
HG
1991 `(("python-mimeparse" ,python-mimeparse)
1992 ("python-extras" ,python-extras)))
d8fa80e1
DT
1993 (home-page "https://github.com/testing-cabal/testtools")
1994 (synopsis
1995 "Extensions to the Python standard library unit testing framework")
1996 (description
1997 "Testtools extends the Python standard library unit testing framework to
1998provide matchers, more debugging information, and cross-Python
1999compatibility.")
3f641af0 2000 (license license:psfl)))
d8fa80e1
DT
2001
2002(define-public python2-testtools
2003 (package-with-python2 python-testtools))
2004
5bf3afea
DT
2005(define-public python-testscenarios
2006 (package
2007 (name "python-testscenarios")
2008 (version "0.4")
2009 (source
2010 (origin
2011 (method url-fetch)
2012 (uri (string-append
2013 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2014 version ".tar.gz"))
2015 (sha256
2016 (base32
2017 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2018 (build-system python-build-system)
f22efa01 2019 (propagated-inputs
8e73d3ba 2020 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2021 (home-page "https://launchpad.net/testscenarios")
2022 (synopsis "Pyunit extension for dependency injection")
2023 (description
2024 "Testscenarios provides clean dependency injection for Python unittest
2025style tests.")
3f641af0 2026 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2027
2028(define-public python2-testscenarios
2029 (package-with-python2 python-testscenarios))
2030
dac79ecc
DT
2031(define-public python-testresources
2032 (package
2033 (name "python-testresources")
2034 (version "0.2.7")
2035 (source
2036 (origin
2037 (method url-fetch)
2038 (uri (string-append
2039 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2040 version ".tar.gz"))
2041 (sha256
2042 (base32
2043 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2044 (build-system python-build-system)
dac79ecc
DT
2045 (home-page "https://launchpad.net/testresources")
2046 (synopsis
2047 "Pyunit extension for managing test resources")
2048 (description
2049 "Testresources is an extension to Python's unittest to allow declarative
2050use of resources by test cases.")
3f641af0 2051 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2052
2053(define-public python2-testresources
2054 (package-with-python2 python-testresources))
2055
070ab058
DT
2056(define-public python-subunit
2057 (package
2058 (name "python-subunit")
2059 (version "0.0.21")
2060 (source
2061 (origin
2062 (method url-fetch)
2063 (uri (string-append
2064 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2065 version ".tar.gz"))
2066 (sha256
2067 (base32
2068 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2069 (build-system python-build-system)
f22efa01 2070 (propagated-inputs
b52ad371
HG
2071 `(("python-extras" ,python-extras)
2072 ("python-mimeparse" ,python-mimeparse)))
2073 (native-inputs
2074 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2075 (home-page "http://launchpad.net/subunit")
2076 (synopsis "Python implementation of the subunit protocol")
2077 (description
2078 "Python-subunit is a Python implementation of the subunit test streaming
2079protocol.")
3f641af0 2080 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2081
2082(define-public python2-subunit
2083 (package-with-python2 python-subunit))
2084
d2a8db92
HG
2085;; Recent versions of python-fixtures and python-testrepository need
2086;; python-pbr for packaging, which itself needs these two packages for
2087;; testing.
2088;; To fix this circular dependency, we use a build of python-pbr, based on the
2089;; same source, just without any test dependencies and with tests disabled.
2090;; python-pbr-minmal is then used to package python-fixtures and
2091;; python-testrepository.
2092;; Strictly speaking we currently could remove the test-requirements from the
2093;; normal python-pbr package (and save this package) since test are disabled
2094;; there anyway. But this may change in future.
2095(define python-pbr-minimal
cd49454b 2096 (package
d2a8db92 2097 (name "python-pbr-minimal")
5bbb2249 2098 (version "1.10.0")
7787ef76
CR
2099 (source
2100 (origin
2101 (method url-fetch)
d2a8db92 2102 (uri (pypi-uri "pbr" version))
7787ef76
CR
2103 (sha256
2104 (base32
5bbb2249 2105 "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))))
7787ef76
CR
2106 (build-system python-build-system)
2107 (arguments
d2a8db92
HG
2108 `(#:tests? #f))
2109 (home-page "http://docs.openstack.org/developer/pbr/")
2110 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2111 (description
d2a8db92 2112 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2113 (license license:asl2.0)))
7787ef76 2114
d2a8db92
HG
2115(define python2-pbr-minimal
2116 (package-with-python2 python-pbr-minimal))
7787ef76 2117
1ef09c0c 2118(define-public python-pbr
e25f0174 2119 (package
d2a8db92 2120 (inherit python-pbr-minimal)
e25f0174 2121 (name "python-pbr")
e25f0174
BW
2122 (arguments
2123 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2124 (propagated-inputs
d2a8db92
HG
2125 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2126 (native-inputs
e25f0174 2127 `(("python-fixtures" ,python-fixtures)
d2a8db92 2128 ;; discover, coverage, hacking, subunit
e25f0174 2129 ("python-mock" ,python-mock)
d2a8db92 2130 ("python-six" ,python-six)
e25f0174
BW
2131 ("python-sphinx" ,python-sphinx)
2132 ("python-testrepository" ,python-testrepository)
2133 ("python-testresources" ,python-testresources)
2134 ("python-testscenarios" ,python-testscenarios)
2135 ("python-testtools" ,python-testtools)
2136 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2137 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2138 (description
2139 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2140and sensible default behaviors into your setuptools run. It will set
2141versions, process requirements files and generate AUTHORS and ChangeLog file
2142from git information.
2143")))
1ef09c0c
BW
2144
2145(define-public python2-pbr
e25f0174 2146 (package-with-python2 python-pbr))
1ef09c0c 2147
7787ef76
CR
2148(define-public python-fixtures
2149 (package
2150 (name "python-fixtures")
13fcc6df 2151 (version "1.4.0")
7787ef76
CR
2152 (source
2153 (origin
2154 (method url-fetch)
13fcc6df 2155 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2156 (sha256
2157 (base32
13fcc6df 2158 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
2159 (build-system python-build-system)
2160 (propagated-inputs
ae92cadd 2161 `(("python-six" ,python-six)))
e7881f3d 2162 (native-inputs
d2a8db92 2163 `(("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2164 ("python-testtools" ,python-testtools)))
7787ef76
CR
2165 (home-page "https://launchpad.net/python-fixtures")
2166 (synopsis "Python test fixture library")
2167 (description
2168 "Fixtures provides a way to create reusable state, useful when writing
2169Python tests.")
3f641af0 2170 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2171
cd49454b
DT
2172(define-public python2-fixtures
2173 (package-with-python2 python-fixtures))
2174
b24a0c00
DT
2175(define-public python-testrepository
2176 (package
2177 (name "python-testrepository")
2178 (version "0.0.20")
2179 (source
2180 (origin
2181 (method url-fetch)
2182 (uri (string-append
2183 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2184 version ".tar.gz"))
2185 (sha256
2186 (base32
2187 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2188 (build-system python-build-system)
05de40c5 2189 (propagated-inputs
b2e66edf
HG
2190 `(("python-fixtures" ,python-fixtures)
2191 ("python-subunit" ,python-subunit)
b52ad371
HG
2192 ("python-testtools" ,python-testtools)))
2193 (native-inputs
2194 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2195 ("python-mimeparse" ,python-mimeparse)))
2196 (home-page "https://launchpad.net/testrepository")
2197 (synopsis "Database for Python test results")
2198 (description "Testrepository provides a database of test results which can
2199be used as part of a developer's workflow to check things such as what tests
2200have failed since the last commit or what tests are currently failing.")
3f641af0 2201 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2202
2203(define-public python2-testrepository
2204 (package-with-python2 python-testrepository))
2205
243a009a
DT
2206(define-public python-coverage
2207 (package
2208 (name "python-coverage")
4d4cf3dd 2209 (version "4.1")
243a009a
DT
2210 (source
2211 (origin
2212 (method url-fetch)
82a3c582 2213 (uri (pypi-uri "coverage" version))
243a009a
DT
2214 (sha256
2215 (base32
4d4cf3dd 2216 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2217 (build-system python-build-system)
243a009a
DT
2218 (home-page "http://nedbatchelder.com/code/coverage")
2219 (synopsis "Code coverage measurement for Python")
2220 (description
2221 "Coverage measures code coverage, typically during test execution. It
2222uses the code analysis tools and tracing hooks provided in the Python standard
2223library to determine which lines are executable, and which have been
2224executed.")
3f641af0 2225 (license license:bsd-3)))
243a009a
DT
2226
2227(define-public python2-coverage
2228 (package-with-python2 python-coverage))
2229
12f839fd
EF
2230(define-public python-cov-core
2231 (package
2232 (name "python-cov-core")
2233 (version "1.15.0")
2234 (source
2235 (origin
2236 (method url-fetch)
2237 (uri (pypi-uri "cov-core" version))
2238 (sha256
2239 (base32
2240 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2241 (build-system python-build-system)
f78e1c27 2242 (propagated-inputs
12f839fd
EF
2243 `(("python-coverage" ,python-coverage)))
2244 (home-page "https://github.com/schlamar/cov-core")
49d5e338 2245 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
12f839fd 2246 (description
49d5e338
TGR
2247 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2248and @code{nose2-cov}. It is useful for developing coverage plugins for these
2249testing frameworks.")
f210e944 2250 (license license:expat)))
12f839fd
EF
2251
2252(define-public python2-cov-core
f210e944 2253 (package-with-python2 python-cov-core))
12f839fd 2254
041358fb
DT
2255(define-public python-discover
2256 (package
2257 (name "python-discover")
2258 (version "0.4.0")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (string-append
2263 "https://pypi.python.org/packages/source/d/discover/discover-"
2264 version ".tar.gz"))
2265 (sha256
2266 (base32
2267 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2268 (build-system python-build-system)
041358fb
DT
2269 (home-page "http://pypi.python.org/pypi/discover/")
2270 (synopsis
2271 "Python test discovery for unittest")
2272 (description
2273 "Discover provides test discovery for unittest, a feature that has been
e881752c 2274backported from Python 2.7 for Python 2.4+.")
3f641af0 2275 (license license:bsd-3)))
041358fb
DT
2276
2277(define-public python2-discover
2278 (package-with-python2 python-discover))
2279
a480bc41
EB
2280(define-public behave
2281 (package
2282 (name "behave")
287cfd1a 2283 (version "1.2.5")
a480bc41
EB
2284 (source (origin
2285 (method url-fetch)
287cfd1a 2286 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2287 (sha256
2288 (base32
287cfd1a 2289 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2290 (build-system python-build-system)
f22efa01 2291 (propagated-inputs
f3b98f4f 2292 `(("python-six" ,python-six)
a480bc41
EB
2293 ("python-parse" ,python-parse)
2294 ("python-parse-type" ,python-parse-type)))
2295 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2296 ;PyHamcrest>=1.8
2297 (home-page "http://github.com/behave/behave")
2298 (synopsis "Python behavior-driven development")
2299 (description
2300 "Behave is a tool for behavior-driven development in python.
2301Behavior-driven development (or BDD) is an agile software development
2302technique that encourages collaboration between developers, QA and
2303non-technical or business participants in a software project. Behave uses
2304tests written in a natural language style, backed up by Python code.")
3f641af0 2305 (license license:x11)))
c7303d3c
DT
2306
2307(define-public python-exif-read
2308 (package
2309 (name "python-exif-read")
2a2d0981 2310 (version "2.1.2")
c7303d3c
DT
2311 (source (origin
2312 (method url-fetch)
2a2d0981 2313 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2314 (sha256
2315 (base32
2a2d0981 2316 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2317 (build-system python-build-system)
c7303d3c
DT
2318 (arguments `(#:tests? #f)) ; no tests
2319 (home-page "https://github.com/ianare/exif-py")
2320 (synopsis "Python library to extract EXIF data from image files")
2321 (description
2322 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2323files.")
3f641af0 2324 (license license:bsd-3)))
c7303d3c
DT
2325
2326(define-public python2-exif-read
2327 (package-with-python2 python-exif-read))
d5f89b22
DT
2328
2329(define-public python-pyld
2330 (package
2331 (name "python-pyld")
8957af32 2332 (version "0.7.1")
d5f89b22
DT
2333 (source (origin
2334 (method url-fetch)
af1ab773 2335 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2336 (sha256
2337 (base32
8957af32 2338 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2339 (build-system python-build-system)
d5f89b22
DT
2340 (arguments `(#:tests? #f)) ; no tests
2341 (home-page "http://github.com/digitalbazaar/pyld")
2342 (synopsis "Python implementation of the JSON-LD specification")
2343 (description
2344 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2345 (license license:bsd-3)))
d5f89b22
DT
2346
2347(define-public python2-pyld
2348 (package-with-python2 python-pyld))
3a1f9a68
DT
2349
2350(define-public python-certifi
2351 (package
2352 (name "python-certifi")
28576403 2353 (version "2017.1.23")
3a1f9a68
DT
2354 (source (origin
2355 (method url-fetch)
9a41f443 2356 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2357 (sha256
2358 (base32
28576403 2359 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
3a1f9a68 2360 (build-system python-build-system)
28576403 2361 (home-page "https://certifi.io/")
3a1f9a68
DT
2362 (synopsis "Python CA certificate bundle")
2363 (description
2364 "Certifi is a Python library that contains a CA certificate bundle, which
2365is used by the Requests library to verify HTTPS requests.")
3f641af0 2366 (license license:asl2.0)))
3a1f9a68
DT
2367
2368(define-public python2-certifi
2369 (package-with-python2 python-certifi))
e6cfbd36 2370
12c270dd
RW
2371(define-public python-click
2372 (package
2373 (name "python-click")
d4acb6db 2374 (version "6.7")
12c270dd
RW
2375 (source
2376 (origin
2377 (method url-fetch)
375f224b 2378 (uri (pypi-uri "click" version))
12c270dd 2379 (sha256
43accb58 2380 (base32
d4acb6db 2381 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
12c270dd 2382 (build-system python-build-system)
e2ab5a09
BW
2383 (arguments
2384 `(#:phases
2385 (modify-phases %standard-phases
2386 (add-after 'unpack 'fix-paths
2387 (lambda* (#:key inputs #:allow-other-keys)
2388 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2389 "cross-libc" "libc"))))
2390 (substitute* "click/_unicodefun.py"
2391 (("'locale'")
2392 (string-append "'" glibc "/bin/locale'"))))
2393 #t)))))
12c270dd
RW
2394 (home-page "http://click.pocoo.org")
2395 (synopsis "Command line library for Python")
2396 (description
2397 "Click is a Python package for creating command line interfaces in a
2398composable way with as little code as necessary. Its name stands for
2399\"Command Line Interface Creation Kit\". It's highly configurable but comes
2400with sensible defaults out of the box.")
3f641af0 2401 (license license:bsd-3)))
12c270dd
RW
2402
2403(define-public python2-click
2404 (package-with-python2 python-click))
2405
addc808d
EF
2406(define-public python-wheel
2407 (package
2408 (name "python-wheel")
0e6df70b 2409 (version "0.30.0a0")
e1ba0749
EF
2410 (source
2411 (origin
2412 (method url-fetch)
2413 (uri (pypi-uri "wheel" version))
2414 (sha256
2415 (base32
0e6df70b 2416 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
e1ba0749
EF
2417 (build-system python-build-system)
2418 (native-inputs
f3b98f4f 2419 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2420 ("python-pytest-cov" ,python-pytest-cov)))
2421 (home-page "https://bitbucket.org/pypa/wheel/")
2422 (synopsis "Format for built Python packages")
2423 (description
2424 "A wheel is a ZIP-format archive with a specially formatted filename and
2425the @code{.whl} extension. It is designed to contain all the files for a PEP
2426376 compatible install in a way that is very close to the on-disk format. Many
2427packages will be properly installed with only the @code{Unpack} step and the
2428unpacked archive preserves enough information to @code{Spread} (copy data and
2429scripts to their final locations) at any later time. Wheel files can be
2430installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2431 (license license:expat)
2432 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2433
2434(define-public python2-wheel
8ad4ae20
LF
2435 (let ((wheel (package-with-python2
2436 (strip-python2-variant python-wheel))))
264ae686 2437 (package (inherit wheel)
8ad4ae20
LF
2438 (native-inputs `(("python2-functools32" ,python2-functools32)
2439 ,@(package-native-inputs wheel))))))
2440
addc808d 2441
ae641128 2442(define-public python-requests
e6cfbd36 2443 (package
ae641128 2444 (name "python-requests")
74a066f9 2445 (version "2.9.1")
e6cfbd36
DT
2446 (source (origin
2447 (method url-fetch)
5d691657 2448 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2449 (sha256
2450 (base32
74a066f9 2451 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2452 (build-system python-build-system)
5d691657 2453 (native-inputs
f3b98f4f 2454 `(("python-py" ,python-py)
5d691657
EF
2455 ("python-pytest" ,python-pytest)
2456 ("python-pytest-cov" ,python-pytest-cov)
2457 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2458 (home-page "http://python-requests.org/")
2459 (synopsis "Python HTTP library")
2460 (description
2461 "Requests is a Python HTTP client library. It aims to be easier to use
2462than Python’s urllib2 library.")
3f641af0 2463 (license license:asl2.0)))
864b5211 2464
e9005180
DT
2465;; Some software requires an older version of Requests, notably Docker
2466;; Compose.
2467(define-public python-requests-2.7
2468 (package (inherit python-requests)
2469 (version "2.7.0")
2470 (source (origin
2471 (method url-fetch)
2472 (uri (pypi-uri "requests" version))
2473 (sha256
2474 (base32
2475 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2476
ae641128 2477(define-public python2-requests
8ad4ae20 2478 (package-with-python2 python-requests))
ae641128 2479
ea521b42
DT
2480(define-public python-vcversioner
2481 (package
2482 (name "python-vcversioner")
538fe019 2483 (version "2.16.0.0")
ea521b42
DT
2484 (source
2485 (origin
2486 (method url-fetch)
2487 (uri (pypi-uri "vcversioner" version))
2488 (sha256
2489 (base32
538fe019 2490 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2491 (build-system python-build-system)
ea521b42
DT
2492 (synopsis "Python library for version number discovery")
2493 (description "Vcversioner is a Python library that inspects tagging
2494information in a variety of version control systems in order to discover
2495version numbers.")
2496 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2497 (license license:isc)))
ea521b42
DT
2498
2499(define-public python2-vcversioner
f210e944 2500 (package-with-python2 python-vcversioner))
ae641128 2501
864b5211
DT
2502(define-public python-jsonschema
2503 (package
2504 (name "python-jsonschema")
b3667afb 2505 (version "2.5.1")
864b5211
DT
2506 (source (origin
2507 (method url-fetch)
2508 (uri
2509 (string-append
2510 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2511 version ".tar.gz"))
2512 (sha256
2513 (base32
b3667afb 2514 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2515 (build-system python-build-system)
8bcd6b91
EF
2516 (arguments
2517 '(#:phases
2518 (modify-phases %standard-phases
2519 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2520 (native-inputs
8bcd6b91
EF
2521 `(("python-nose" ,python-nose)
2522 ("python-vcversioner" ,python-vcversioner)))
2523 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2524 (synopsis "Implementation of JSON Schema for Python")
2525 (description
2526 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2527 (license license:expat)
2528 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2529
2530(define-public python2-jsonschema
a14600ec
LF
2531 (let ((jsonschema (package-with-python2
2532 (strip-python2-variant python-jsonschema))))
264ae686 2533 (package (inherit jsonschema)
eaba9d66 2534 (native-inputs
8bcd6b91 2535 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2536 ,@(package-native-inputs jsonschema)))
2537 (propagated-inputs
2538 `(("python2-functools32" ,python2-functools32))))))
850189b8 2539
9f21414d 2540(define-public python-kitchen
2541 (package
2542 (name "python-kitchen")
2543 (version "1.2.4")
2544 (source
2545 (origin
2546 (method url-fetch)
2547 (uri (pypi-uri "kitchen" version))
2548 (sha256
2549 (base32
2550 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2551 (build-system python-build-system)
2552 (propagated-inputs
2553 `(("python-chardet" ,python-chardet)))
2554 (home-page "https://fedorahosted.org/kitchen")
2555 (synopsis "Python API for snippets")
2556 (description "@code{kitchen} module provides a python API for all sorts of
2557little useful snippets of code that everybody ends up writing for their projects
2558but never seem big enough to build an independent release. Use kitchen and stop
2559cutting and pasting that code over and over.")
2560 (license (list license:lgpl2.1+
2561 ;; subprocess.py, test_subprocess.py,
2562 ;; kitchen/pycompat25/defaultdict.py:
2563 license:psfl))))
2564
2565(define-public python2-kitchen
2566 (package-with-python2 python-kitchen))
2567
850189b8
DT
2568(define-public python-unidecode
2569 (package
2570 (name "python-unidecode")
5754fe95 2571 (version "0.04.20")
850189b8
DT
2572 (source (origin
2573 (method url-fetch)
8925d4f3 2574 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2575 (sha256
2576 (base32
5754fe95 2577 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
850189b8 2578 (build-system python-build-system)
850189b8
DT
2579 (home-page "https://pypi.python.org/pypi/Unidecode")
2580 (synopsis "ASCII transliterations of Unicode text")
2581 (description
2582 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2583useful when integrating with legacy code that doesn't support Unicode, or for
2584ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2585machine identifiers from human-readable Unicode strings that should still be
2586somewhat intelligeble.")
3f641af0 2587 (license license:gpl2+)))
850189b8
DT
2588
2589(define-public python2-unidecode
2590 (package-with-python2 python-unidecode))
6d45fef4
DT
2591
2592(define-public python-pyjwt
2593 (package
2594 (name "python-pyjwt")
eb31d4b4 2595 (version "1.4.0")
6d45fef4
DT
2596 (source
2597 (origin
2598 (method url-fetch)
eb31d4b4 2599 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2600 (sha256
2601 (base32
eb31d4b4 2602 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2603 (build-system python-build-system)
eb31d4b4 2604 (native-inputs
130fe994
HG
2605 `(("python-pytest" ,python-pytest)
2606 ("python-pytest-cov" ,python-pytest-cov)
2607 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2608 (home-page "http://github.com/progrium/pyjwt")
2609 (synopsis "JSON Web Token implementation in Python")
2610 (description
2611 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2612 (license license:expat)))
6d45fef4
DT
2613
2614(define-public python2-pyjwt
2615 (package-with-python2 python-pyjwt))
2616
2cec1f6f
DT
2617(define-public python-oauthlib
2618 (package
2619 (name "python-oauthlib")
bde2171d 2620 (version "1.0.3")
2cec1f6f
DT
2621 (source (origin
2622 (method url-fetch)
bde2171d 2623 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2624 (sha256
2625 (base32
bde2171d 2626 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2627 (build-system python-build-system)
bde2171d 2628 (native-inputs
bb06aa34 2629 `(("python-nose" ,python-nose)
bde2171d 2630 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2631 ("python-pyjwt" ,python-pyjwt)
2632 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2633 (home-page "https://github.com/idan/oauthlib")
2634 (synopsis "OAuth implementation for Python")
2635 (description
2636 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2637OAuth request-signing logic.")
3f641af0 2638 (license license:bsd-3)
59f151ec 2639 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2640
2641(define-public python2-oauthlib
59f151ec 2642 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2643 (package
2644 (inherit base)
00e10c6e 2645 (native-inputs `(("python2-unittest2" ,python2-unittest2)
bb06aa34 2646 ("python2-mock" ,python2-mock)
59f151ec 2647 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2648
2649(define-public python-itsdangerous
2650 (package
2651 (name "python-itsdangerous")
2652 (version "0.24")
2653 (source
2654 (origin
2655 (method url-fetch)
2656 (uri (string-append
2657 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2658 version ".tar.gz"))
2659 (sha256
2660 (base32
2661 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2662 (build-system python-build-system)
ec5dbb5c
DT
2663 (home-page "http://github.com/mitsuhiko/itsdangerous")
2664 (synopsis "Python library for passing data to/from untrusted environments")
2665 (description
2666 "Itsdangerous provides various helpers to pass trusted data to untrusted
2667environments and back.")
f210e944 2668 (license license:bsd-3)))
ec5dbb5c
DT
2669
2670(define-public python2-itsdangerous
f210e944 2671 (package-with-python2 python-itsdangerous))
5731cae3 2672
8d12be1e
RW
2673(define-public python-pyyaml
2674 (package
2675 (name "python-pyyaml")
bf5e4bc4 2676 (version "3.12")
8d12be1e
RW
2677 (source
2678 (origin
2679 (method url-fetch)
bf5e4bc4 2680 (uri (pypi-uri "PyYAML" version))
8d12be1e
RW
2681 (sha256
2682 (base32
bf5e4bc4 2683 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
8d12be1e
RW
2684 (build-system python-build-system)
2685 (inputs
2686 `(("libyaml" ,libyaml)))
8d12be1e
RW
2687 (home-page "http://pyyaml.org/wiki/PyYAML")
2688 (synopsis "YAML parser and emitter for Python")
2689 (description
2690 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2691complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2692API, and sensible error messages. PyYAML supports standard YAML tags and
2693provides Python-specific tags that allow to represent an arbitrary Python
2694object.")
2695 (license license:expat)))
2696
2697(define-public python2-pyyaml
2698 (package-with-python2 python-pyyaml))
2699
5731cae3
DT
2700(define-public python-virtualenv
2701 (package
2702 (name "python-virtualenv")
58d04dba 2703 (version "15.0.3")
5731cae3
DT
2704 (source
2705 (origin
2706 (method url-fetch)
17804240 2707 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2708 (sha256
2709 (base32
58d04dba 2710 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2711 (build-system python-build-system)
17804240
EF
2712 (arguments
2713 `(#:phases
2714 (modify-phases %standard-phases
58d04dba
RW
2715 (replace 'check
2716 (lambda _
2717 ;; Disable failing test. See upstream bug report
2718 ;; https://github.com/pypa/virtualenv/issues/957
2719 (substitute* "tests/test_virtualenv.py"
2720 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2721 (zero? (system* "py.test")))))))
e7881f3d 2722 (native-inputs
f3b98f4f 2723 `(("python-mock" ,python-mock)
17804240 2724 ("python-pytest" ,python-pytest)))
5731cae3
DT
2725 (home-page "https://virtualenv.pypa.io/")
2726 (synopsis "Virtual Python environment builder")
2727 (description
2728 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2729 (license license:expat)))
5731cae3
DT
2730
2731(define-public python2-virtualenv
2732 (package-with-python2 python-virtualenv))
8176d4d5
DT
2733
2734(define-public python-markupsafe
2735 (package
2736 (name "python-markupsafe")
2737 (version "0.23")
2738 (source
2739 (origin
2740 (method url-fetch)
2741 (uri (string-append
2742 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2743 version ".tar.gz"))
2744 (sha256
2745 (base32
2746 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2747 (build-system python-build-system)
8176d4d5
DT
2748 (home-page "http://github.com/mitsuhiko/markupsafe")
2749 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2750 (description
2751 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2752for Python.")
3f641af0 2753 (license license:bsd-3)))
8176d4d5
DT
2754
2755(define-public python2-markupsafe
2756 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2757
2758(define-public python-jinja2
2759 (package
2760 (name "python-jinja2")
e98149b3 2761 (version "2.8")
fe34f0d1
DT
2762 (source
2763 (origin
2764 (method url-fetch)
e98149b3 2765 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2766 (sha256
2767 (base32
e98149b3 2768 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1 2769 (build-system python-build-system)
f22efa01 2770 (propagated-inputs
f3b98f4f 2771 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
2772 (home-page "http://jinja.pocoo.org/")
2773 (synopsis "Python template engine")
2774 (description
2775 "Jinja2 is a small but fast and easy to use stand-alone template engine
2776written in pure Python.")
3f641af0 2777 (license license:bsd-3)))
fe34f0d1
DT
2778
2779(define-public python2-jinja2
2780 (package-with-python2 python-jinja2))
3580ab8b 2781
f7d17ac7
EE
2782(define-public python-pystache
2783 (package
2784 (name "python-pystache")
2785 (version "0.5.4")
2786 (source (origin
2787 (method url-fetch)
2788 (uri (pypi-uri "pystache" version))
2789 (sha256
2790 (base32
2791 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2792 (build-system python-build-system)
f7d17ac7
EE
2793 (home-page "http://defunkt.io/pystache/")
2794 (synopsis "Python logic-less template engine")
2795 (description
2796 "Pystache is a Python implementation of the framework agnostic,
2797logic-free templating system Mustache.")
2798 (license license:expat)))
2799
2800(define-public python2-pystache
2801 (package-with-python2 python-pystache))
2802
1285119b
RW
2803(define-public python-joblib
2804 (package
2805 (name "python-joblib")
f34ef331 2806 (version "0.10.3")
1285119b
RW
2807 (source (origin
2808 (method url-fetch)
f34ef331 2809 (uri (pypi-uri "joblib" version))
1285119b
RW
2810 (sha256
2811 (base32
6aa5f1ca
HG
2812 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2813 (modules '((guix build utils)))
2814 (snippet
2815 '(begin
2816 ;; Remove pre-compiled .pyc files from source.
2817 (for-each delete-file-recursively
2818 (find-files "." "__pycache__" #:directories? #t))
2819 (for-each delete-file (find-files "." "\\.pyc$"))
2820 #t))))
1285119b 2821 (build-system python-build-system)
a8dd960a
RW
2822 (arguments
2823 `(#:phases
2824 (modify-phases %standard-phases
2825 (add-before 'check 'disable-failing-tests
2826 (lambda _
2827 ;; This numpydoc tests fails for unknown reasons
2828 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2829 ;; This numpydoc test depends on matplotlib, which is not a
2830 ;; required input.
2831 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2832 ;; These tests fail to execute sys.executable
2833 (substitute* "joblib/test/test_parallel.py"
2834 (("import nose" line)
2835 (string-append "from nose.plugins.skip import SkipTest\n" line))
2836 (("def test_nested_parallel_warnings" line)
2837 (string-append "@SkipTest\n" line))
2838 (("def test_parallel_with_interactively_defined_functions" line)
2839 (string-append "@SkipTest\n" line)))
2840 #t)))))
f052ec9a 2841 ;; Provide nose to enable tests command
1285119b 2842 (native-inputs
f3b98f4f 2843 `(("python-nose" ,python-nose)
f34ef331
RW
2844 ("python-sphinx" ,python-sphinx)
2845 ("python-docutils" ,python-docutils)
2846 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
2847 (home-page "http://pythonhosted.org/joblib/")
2848 (synopsis "Using Python functions as pipeline jobs")
2849 (description
2850 "Joblib is a set of tools to provide lightweight pipelining in Python.
2851In particular, joblib offers: transparent disk-caching of the output values
2852and lazy re-evaluation (memoize pattern), easy simple parallel computing
2853logging and tracing of the execution.")
3f641af0 2854 (license license:bsd-3)))
1285119b
RW
2855
2856(define-public python2-joblib
2857 (package-with-python2 python-joblib))
2858
3580ab8b
DT
2859(define-public python-docutils
2860 (package
2861 (name "python-docutils")
00e0ca7c 2862 (version "0.13.1")
3580ab8b
DT
2863 (source
2864 (origin
2865 (method url-fetch)
00e0ca7c 2866 (uri (pypi-uri "docutils" version))
3580ab8b
DT
2867 (sha256
2868 (base32
00e0ca7c 2869 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 2870 (build-system python-build-system)
3580ab8b
DT
2871 (arguments
2872 '(#:tests? #f)) ; no setup.py test command
2873 (home-page "http://docutils.sourceforge.net/")
2874 (synopsis "Python Documentation Utilities")
2875 (description
2876 "Docutils is a modular system for processing documentation into useful
2877formats, such as HTML, XML, and LaTeX. For input Docutils supports
2878reStructuredText.")
2879 ;; Most of the source code is public domain, but some source files are
2880 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 2881 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
2882
2883(define-public python2-docutils
2884 (package-with-python2 python-docutils))
fb35b7c0
DT
2885
2886(define-public python-pygments
2887 (package
2888 (name "python-pygments")
7d2e758d 2889 (version "2.1.3")
fb35b7c0
DT
2890 (source
2891 (origin
2892 (method url-fetch)
9f442285 2893 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2894 (sha256
2895 (base32
7d2e758d 2896 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
fb35b7c0 2897 (build-system python-build-system)
fb35b7c0
DT
2898 (home-page "http://pygments.org/")
2899 (synopsis "Syntax highlighting")
2900 (description
2901 "Pygments is a syntax highlighting package written in Python.")
3f641af0 2902 (license license:bsd-2)))
fb35b7c0
DT
2903
2904(define-public python2-pygments
2905 (package-with-python2 python-pygments))
9dd6078d
DT
2906
2907(define-public python-sphinx
2908 (package
2909 (name "python-sphinx")
2910 (version "1.2.3")
2911 (source
2912 (origin
2913 (method url-fetch)
2914 (uri (string-append
2915 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2916 version ".tar.gz"))
2917 (sha256
2918 (base32
2919 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2920 (build-system python-build-system)
f22efa01 2921 (propagated-inputs
f3b98f4f 2922 `(("python-jinja2" ,python-jinja2)
9dd6078d
DT
2923 ("python-docutils" ,python-docutils)
2924 ("python-pygments" ,python-pygments)))
2925 (home-page "http://sphinx-doc.org/")
2926 (synopsis "Python documentation generator")
2927 (description "Sphinx is a tool that makes it easy to create documentation
2928for Python projects or other documents consisting of multiple reStructuredText
2929sources.")
3f641af0 2930 (license license:bsd-3)))
9dd6078d
DT
2931
2932(define-public python2-sphinx
2933 (package-with-python2 python-sphinx))
6888830b 2934
ad320b20
RW
2935(define-public python-sphinx-rtd-theme
2936 (package
2937 (name "python-sphinx-rtd-theme")
2938 (version "0.1.6")
2939 (source
2940 (origin
2941 (method url-fetch)
2942 (uri (string-append "https://pypi.python.org/packages/source/s/"
2943 "sphinx_rtd_theme/sphinx_rtd_theme-"
2944 version ".tar.gz"))
2945 (sha256
2946 (base32
2947 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2948 (build-system python-build-system)
ad320b20
RW
2949 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2950 (synopsis "ReadTheDocs.org theme for Sphinx")
2951 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2952 (license license:expat)))
ad320b20
RW
2953
2954(define-public python2-sphinx-rtd-theme
2955 (package-with-python2 python-sphinx-rtd-theme))
2956
fe94cf0c
HG
2957(define-public python-rst.linker
2958 (package
2959 (name "python-rst.linker")
2960 (version "1.7")
2961 (source
2962 (origin
2963 (method url-fetch)
2964 (uri (pypi-uri "rst.linker" version))
2965 (sha256
2966 (base32
2967 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
2968 (build-system python-build-system)
2969 (propagated-inputs
2970 `(("python-dateutil" ,python-dateutil-2)
2971 ("python-six" ,python-six)))
2972 (native-inputs
2973 `(("python-setuptools-scm" ,python-setuptools-scm)))
2974 ;; Test would require path.py, which would introduce a cyclic dependence.
2975 (arguments `(#:tests? #f))
2976 ;; Note: As of version 1.7 the documentation is not worth building.
2977 (home-page "https://github.com/jaraco/rst.linker")
2978 (synopsis "Sphinx plugin to add links and timestamps")
2979 (description "rst.linker allows to automatically replace text by a
2980reStructuredText external reference or timestamps. It's primary purpose is to
2981augment the changelog, but it can be used for other documents, too.")
2982 (license license:expat)))
2983
2984(define-public python2-rst.linker
2985 (package-with-python2 python-rst.linker))
2986
f4de5b3b
CAW
2987(define-public python-feedgenerator
2988 (package
2989 (name "python-feedgenerator")
f0412aa2 2990 (version "1.8")
f4de5b3b 2991 (source
f4de5b3b 2992 (origin
f0412aa2
EF
2993 (method url-fetch)
2994 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2995 (sha256
2996 (base32
7c88bcf4
HG
2997 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))
2998 (modules '((guix build utils)))
2999 (snippet
3000 '(begin
3001 ;; Remove pre-compiled .pyc files from source.
3002 (for-each delete-file-recursively
3003 (find-files "." "__pycache__" #:directories? #t))
3004 (for-each delete-file (find-files "." "\\.pyc$"))
3005 #t))))
f4de5b3b 3006 (build-system python-build-system)
dae73d9b 3007 (propagated-inputs
f3b98f4f 3008 `(("python-pytz" ,python-pytz)
f4de5b3b 3009 ("python-six" ,python-six)))
f0412aa2 3010 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3011 (synopsis
3012 "Standalone version of Django's Atom/RSS feed generator")
3013 (description
3014 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3015which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3016 (license license:bsd-3)))
f4de5b3b
CAW
3017
3018(define-public python2-feedgenerator
3019 (package-with-python2 python-feedgenerator))
3020
59ad30e3
CAW
3021(define-public python-blinker
3022 (package
3023 (name "python-blinker")
7fb9ff4d 3024 (version "1.4")
59ad30e3
CAW
3025 (source
3026 (origin
3027 (method url-fetch)
7fb9ff4d 3028 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3029 (sha256
3030 (base32
7fb9ff4d 3031 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3032 (build-system python-build-system)
59ad30e3
CAW
3033 (home-page "http://pythonhosted.org/blinker/")
3034 (synopsis "Fast, simple object-to-object and broadcast signaling")
3035 (description
3036 "Blinker provides a fast dispatching system that allows any number of
3037interested parties to subscribe to events, or \"signals\".")
3038 (license license:expat)))
3039
3040(define-public python2-blinker
3041 (package-with-python2 python-blinker))
3042
b8050e71
CAW
3043(define-public pelican
3044 (package
3045 (name "pelican")
11f97c27 3046 (version "3.6.3")
b8050e71
CAW
3047 (source
3048 (origin
3049 (method url-fetch)
11f97c27 3050 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3051 (sha256
3052 (base32
11f97c27 3053 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3054 (build-system python-build-system)
f22efa01 3055 (propagated-inputs
b8050e71
CAW
3056 `(("python-feedgenerator" ,python-feedgenerator)
3057 ("python-jinja2" ,python-jinja2)
3058 ("python-pygments" ,python-pygments)
3059 ("python-docutils" ,python-docutils)
3060 ("python-pytz" ,python-pytz)
3061 ("python-blinker" ,python-blinker)
3062 ("python-unidecode" ,python-unidecode)
3063 ("python-six" ,python-six)
3064 ("python-dateutil-2" ,python-dateutil-2)))
3065 (home-page "http://getpelican.com/")
3066 (arguments
3067 `(;; XXX Requires a lot more packages to do unit tests :P
3068 #:tests? #f
3069 #:phases (modify-phases %standard-phases
3070 (add-before
3071 'install 'adjust-requires
3072 ;; Since feedgenerator is installed from git, it doesn't
3073 ;; conform to the version requirements.
3074 ;;
3075 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3076 ;; version requirement so setuptools doesn't get confused.
3077 (lambda _
3078 (substitute* "setup.py"
3079 (("['\"]feedgenerator.*?['\"]")
3080 "'feedgenerator'")))))))
3081 (synopsis "Python-based static site publishing system")
3082 (description
3083 "Pelican is a tool to generate a static blog from reStructuredText,
3084Markdown input files, and more. Pelican uses Jinja2 for templating
3085and is very extensible.")
3f641af0 3086 (license license:agpl3+)))
b8050e71 3087
240ca4aa
RW
3088(define-public python-scikit-learn
3089 (package
3090 (name "python-scikit-learn")
8e401ab6 3091 (version "0.18.1")
240ca4aa
RW
3092 (source
3093 (origin
3094 (method url-fetch)
3095 (uri (string-append
3096 "https://github.com/scikit-learn/scikit-learn/archive/"
3097 version ".tar.gz"))
7e21b9fb 3098 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3099 (sha256
3100 (base32
8e401ab6 3101 "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
240ca4aa
RW
3102 (build-system python-build-system)
3103 (arguments
3104 `(#:phases
3105 (alist-cons-before
2f6b3d2e
RW
3106 'check 'set-HOME
3107 ;; some tests require access to "$HOME"
3108 (lambda _ (setenv "HOME" "/tmp"))
8e401ab6 3109 %standard-phases)))
240ca4aa 3110 (inputs
328bb95d
HG
3111 `(("openblas" ,openblas)))
3112 (native-inputs
8e401ab6
RW
3113 `(("python-nose" ,python-nose)
3114 ("python-cython" ,python-cython)))
240ca4aa
RW
3115 (propagated-inputs
3116 `(("python-numpy" ,python-numpy)
3117 ("python-scipy" ,python-scipy)))
3118 (home-page "http://scikit-learn.org/")
3119 (synopsis "Machine Learning in Python")
3120 (description
3121 "Scikit-learn provides simple and efficient tools for data
3122mining and data analysis.")
1b5241c5 3123 (license license:bsd-3)))
240ca4aa
RW
3124
3125(define-public python2-scikit-learn
1b5241c5 3126 (package-with-python2 python-scikit-learn))
240ca4aa 3127
12f8f9bb
RW
3128(define-public python-scikit-image
3129 (package
3130 (name "python-scikit-image")
3131 (version "0.11.3")
3132 (source
3133 (origin
3134 (method url-fetch)
3135 (uri (string-append
3136 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3137 version ".tar.gz"))
3138 (sha256
3139 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3140 (build-system python-build-system)
b83e2333 3141 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3142 (propagated-inputs
3143 `(("python-matplotlib" ,python-matplotlib)
3144 ("python-networkx" ,python-networkx)
12f8f9bb 3145 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3146 ("python-pillow" ,python-pillow)))
3147 (native-inputs
b83e2333
HG
3148 `(("python-numpy" ,python-numpy)
3149 ("python-cython" ,python-cython)
3150 ("python-six" ,python-six)))
12f8f9bb
RW
3151 (home-page "http://scikit-image.org/")
3152 (synopsis "Image processing in Python")
3153 (description
e881752c 3154 "Scikit-image is a collection of algorithms for image processing.")
12733594 3155 (license license:bsd-3)))
12f8f9bb
RW
3156
3157(define-public python2-scikit-image
12733594 3158 (package-with-python2 python-scikit-image))
12f8f9bb 3159
5394a6a6
RW
3160(define-public python-redis
3161 (package
3162 (name "python-redis")
911a8faf 3163 (version "2.10.5")
5394a6a6
RW
3164 (source
3165 (origin
3166 (method url-fetch)
911a8faf 3167 (uri (pypi-uri "redis" version))
5394a6a6 3168 (sha256
911a8faf 3169 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
5394a6a6
RW
3170 (build-system python-build-system)
3171 ;; Tests require a running Redis server
3172 (arguments '(#:tests? #f))
cf8124b0
HG
3173 ;; As long as we are not running test, we do not need this input :-)
3174 ;;(native-inputs
3175 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3176 (home-page "https://github.com/andymccurdy/redis-py")
3177 (synopsis "Redis Python client")
3178 (description
3179 "This package provides a Python interface to the Redis key-value store.")
3180 (license license:expat)))
3181
3182(define-public python2-redis
3183 (package-with-python2 python-redis))
3184
748cef5b
RW
3185(define-public python-rq
3186 (package
3187 (name "python-rq")
3188 (version "0.5.2")
3189 (source
3190 (origin
3191 (method url-fetch)
3192 (uri (string-append
3193 "https://pypi.python.org/packages/source/r/rq/rq-"
3194 version ".tar.gz"))
3195 (sha256
3196 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3197 (build-system python-build-system)
3198 (propagated-inputs
3199 `(("python-click" ,python-click)
3200 ("python-redis" ,python-redis)))
748cef5b
RW
3201 (home-page "http://python-rq.org/")
3202 (synopsis "Simple job queues for Python")
3203 (description
3204 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3205processing them in the background with workers. It is backed by Redis and it
3206is designed to have a low barrier to entry.")
3f641af0 3207 (license license:bsd-2)))
748cef5b
RW
3208
3209(define-public python2-rq
3210 (package-with-python2 python-rq))
3211
6888830b
FB
3212(define-public python-cython
3213 (package
3214 (name "python-cython")
dd22efef 3215 (version "0.24.1")
6888830b
FB
3216 (source
3217 (origin
3218 (method url-fetch)
56918e26 3219 (uri (pypi-uri "Cython" version))
6888830b
FB
3220 (sha256
3221 (base32
dd22efef 3222 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3223 (build-system python-build-system)
3224 ;; we need the full python package and not just the python-wrapper
3225 ;; because we need libpython3.3m.so
3226 (inputs
3227 `(("python" ,python)))
3228 (arguments
3229 `(#:phases
b92f651b
EF
3230 (modify-phases %standard-phases
3231 (add-before 'check 'set-HOME
3232 ;; some tests require access to "$HOME/.cython"
3233 (lambda _ (setenv "HOME" "/tmp")))
3234 (replace 'check
3235 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3236 (home-page "http://cython.org/")
3237 (synopsis "C extensions for Python")
3238 (description "Cython is an optimising static compiler for both the Python
3239programming language and the extended Cython programming language. It makes
3240writing C extensions for Python as easy as Python itself.")
3f641af0 3241 (license license:asl2.0)
48b311b1 3242 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3243
3244(define-public python2-cython
48b311b1
LC
3245 (package (inherit (package-with-python2
3246 (strip-python2-variant python-cython)))
6888830b
FB
3247 (name "python2-cython")
3248 (inputs
3249 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3250
ee5fb7ee
AV
3251;; The RPython toolchain currently does not support Python 3.
3252(define-public python2-rpython
3253 (package
3254 (name "python2-rpython")
3255 (version "0.1.4")
3256 (source
3257 (origin
3258 (method url-fetch)
3259 (uri (pypi-uri "rpython" version))
3260 (sha256
3261 (base32
3262 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3263 (build-system python-build-system)
3264 (arguments `(#:python ,python-2))
3265 (native-inputs
f3b98f4f 3266 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3267 (home-page "https://rpython.readthedocs.org")
3268 (synopsis "Framework for implementing interpreters and virtual machines")
3269 (description "RPython is a translation and support framework for
3270producing implementations of dynamic languages, emphasizing a clean separation
3271between language specification and implementation aspects.")
3272 (license license:expat)))
3273
0da98533
FB
3274;; This version of numpy is missing the documentation and is only used to
3275;; build matplotlib which is required to build numpy's documentation.
3276(define python-numpy-bootstrap
3277 (package
3278 (name "python-numpy-bootstrap")
ef9b4c04 3279 (version "1.10.4")
0da98533
FB
3280 (source
3281 (origin
3282 (method url-fetch)
de67e922 3283 (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
0da98533
FB
3284 "/numpy-" version ".tar.gz"))
3285 (sha256
3286 (base32
ef9b4c04 3287 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3288 (build-system python-build-system)
3289 (inputs
328bb95d 3290 `(("openblas" ,openblas)
cba256f8 3291 ("lapack" ,lapack)))
0da98533 3292 (native-inputs
2efabc55
HG
3293 `(("python-nose" ,python-nose)
3294 ("gfortran" ,gfortran)))
0da98533
FB
3295 (arguments
3296 `(#:phases
2efabc55
HG
3297 (modify-phases %standard-phases
3298 (add-before 'build 'set-environment-variables
3299 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3300 (call-with-output-file "site.cfg"
3301 (lambda (port)
cba256f8
RW
3302 (format port
3303 "[openblas]
dbdfe515
RW
3304libraries = openblas
3305library_dirs = ~a/lib
3306include_dirs = ~a/include
cba256f8 3307
2efabc55
HG
3308# backslash-n to make emacs happy
3309\n[lapack]
cba256f8
RW
3310lapack_libs = lapack
3311library_dirs = ~a/lib
3312include_dirs = ~a/include
3313"
3314 (assoc-ref inputs "openblas")
3315 (assoc-ref inputs "openblas")
3316 (assoc-ref inputs "lapack")
3317 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3318 ;; Use "gcc" executable, not "cc".
3319 (substitute* "numpy/distutils/system_info.py"
3320 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3321 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3322 #t))
6a843168
FB
3323 ;; Tests can only be run after the library has been installed and not
3324 ;; within the source directory.
2efabc55
HG
3325 (delete 'check)
3326 (add-after 'install 'check
3327 (lambda* (#:key outputs inputs #:allow-other-keys)
3328 ;; Make installed package available for running the tests
3329 (add-installed-pythonpath inputs outputs)
6a843168 3330 (with-directory-excursion "/tmp"
89b5c60e 3331 (zero? (system* "python" "-c"
2efabc55 3332 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3333 (home-page "http://www.numpy.org/")
3334 (synopsis "Fundamental package for scientific computing with Python")
3335 (description "NumPy is the fundamental package for scientific computing
e881752c 3336with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3337object, sophisticated (broadcasting) functions, tools for integrating C/C++
3338and Fortran code, useful linear algebra, Fourier transform, and random number
3339capabilities.")
3f641af0 3340 (license license:bsd-3)))
0da98533
FB
3341
3342(define python2-numpy-bootstrap
3343 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3344
460fccd4 3345(define-public python-munch
3346 (package
3347 (name "python-munch")
3348 (version "2.0.4")
3349 (source
3350 (origin
3351 (method url-fetch)
3352 (uri (pypi-uri "munch" version))
3353 (sha256
3354 (base32
3355 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3356 (build-system python-build-system)
3357 (home-page "https://github.com/Infinidat/munch")
3358 (synopsis "Dot-accessible dictionary")
3359 (description "Munch is a dot-accessible dictionary similar to JavaScript
3360objects.")
3361 (license license:expat)))
3362
3363(define-public python2-munch
3364 (package-with-python2 python-munch))
3365
3a1bfe18
RW
3366(define-public python2-fastlmm
3367 (package
3368 (name "python2-fastlmm")
154d0016 3369 (version "0.2.21")
3a1bfe18
RW
3370 (source
3371 (origin
3372 (method url-fetch)
b074e7d4 3373 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3374 (sha256
3375 (base32
154d0016 3376 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3377 (build-system python-build-system)
3378 (arguments
3379 `(#:python ,python-2)) ; only Python 2.7 is supported
3380 (propagated-inputs
3381 `(("python2-numpy" ,python2-numpy)
3382 ("python2-scipy" ,python2-scipy)
3383 ("python2-matplotlib" ,python2-matplotlib)
3384 ("python2-pandas" ,python2-pandas)
3385 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3386 ("python2-pysnptools" ,python2-pysnptools)))
3387 (native-inputs
3388 `(("unzip" ,unzip)
2efabc55 3389 ("python2-cython" ,python2-cython)
f3b98f4f 3390 ("python2-mock" ,python2-mock)))
3a1bfe18
RW
3391 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3392 (synopsis "Perform genome-wide association studies on large data sets")
3393 (description
3394 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3395Models, is a program for performing both single-SNP and SNP-set genome-wide
3396association studies (GWAS) on extremely large data sets.")
3f641af0 3397 (license license:asl2.0)))
3a1bfe18 3398
2ee8869a
FB
3399(define-public python-numpy
3400 (package (inherit python-numpy-bootstrap)
3401 (name "python-numpy")
3402 (outputs '("out" "doc"))
89b5c60e 3403 (inputs
b0aa6ede
HG
3404 `(("which" ,which)
3405 ,@(package-inputs python-numpy-bootstrap)))
2efabc55
HG
3406 (propagated-inputs
3407 `(("python-matplotlib" ,python-matplotlib)
2ee8869a 3408 ("python-pyparsing" ,python-pyparsing)
b0aa6ede 3409 ,@(package-propagated-inputs python-numpy-bootstrap)))
2ee8869a
FB
3410 (native-inputs
3411 `(("pkg-config" ,pkg-config)
2efabc55
HG
3412 ("python-sphinx" ,python-sphinx)
3413 ("python-numpydoc" ,python-numpydoc)
2ee8869a
FB
3414 ("texlive" ,texlive)
3415 ("texinfo" ,texinfo)
3416 ("perl" ,perl)
3417 ,@(package-native-inputs python-numpy-bootstrap)))
3418 (arguments
89b5c60e 3419 `(,@(substitute-keyword-arguments
2ee8869a
FB
3420 (package-arguments python-numpy-bootstrap)
3421 ((#:phases phases)
3422 `(alist-cons-after
3423 'install 'install-doc
2efabc55
HG
3424 (lambda* (#:key inputs outputs #:allow-other-keys)
3425 ;; Make installed package available for building the
3426 ;; documentation
3427 (add-installed-pythonpath inputs outputs)
2ee8869a 3428 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3429 (doc (string-append
3430 data "/doc/" ,name "-"
2ee8869a
FB
3431 ,(package-version python-numpy-bootstrap)))
3432 (info (string-append data "/info"))
3433 (html (string-append doc "/html"))
3434 (pyver ,(string-append "PYVER=")))
3435 (with-directory-excursion "doc"
3436 (mkdir-p html)
3437 (system* "make" "html" pyver)
3438 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3439 (system* "make" "-C" "build/latex"
2ee8869a
FB
3440 "all-pdf" "PAPER=a4" pyver)
3441 ;; FIXME: Generation of the info file fails.
3442 ;; (system* "make" "info" pyver)
3443 ;; (mkdir-p info)
3444 ;; (copy-file "build/texinfo/numpy.info"
3445 ;; (string-append info "/numpy.info"))
3446 (for-each (lambda (file)
3447 (copy-file (string-append "build/latex" file)
3448 (string-append doc file)))
3449 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3450 (with-directory-excursion "build/html"
3451 (for-each (lambda (file)
3452 (let* ((dir (dirname file))
3453 (tgt-dir (string-append html "/" dir)))
3454 (unless (equal? "." dir)
3455 (mkdir-p tgt-dir))
96c46210 3456 (install-file file html)))
2ee8869a
FB
3457 (find-files "." ".*"))))))
3458 ,phases)))))))
3459
764c077b 3460(define-public python2-numpy
57b7b8cd 3461 (package-with-python2 python-numpy))
2ee8869a 3462
0151a8df 3463(define-public python-pygit2
3464 (package
3465 (name "python-pygit2")
022c9772 3466 (version "0.25.0")
0151a8df 3467 (source
3468 (origin
3469 (method url-fetch)
3470 (uri (pypi-uri "pygit2" version))
3471 (sha256
3472 (base32
022c9772 3473 "0wf5rp0fvrw7j3j18dvwjq6xqlbm611wd55aphrfpps0v1gxh3ny"))))
0151a8df 3474 (build-system python-build-system)
3475 (propagated-inputs
3476 `(("python-six" ,python-six)
3477 ("python-cffi" ,python-cffi)
3478 ("libgit2" ,libgit2)
3479 ("python-tox" ,python-tox)))
3480 (home-page "https://github.com/libgit2/pygit2")
3481 (synopsis "Python bindings for libgit2")
3482 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3483library, libgit2 implements Git plumbing.")
3484 ;; GPL2.0 only, with linking exception.
3485 (license license:gpl2)))
3486
3487(define-public python2-pygit2
3488 (package-with-python2 python-pygit2))
3489
15bfe6d6
FB
3490(define-public python-pyparsing
3491 (package
3492 (name "python-pyparsing")
e0669289 3493 (version "2.0.3")
15bfe6d6
FB
3494 (source
3495 (origin
3496 (method url-fetch)
de67e922
LF
3497 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3498 "/pyparsing-" version
15bfe6d6
FB
3499 "/pyparsing-" version ".tar.gz"))
3500 (sha256
3501 (base32
e0669289 3502 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3503 (build-system python-build-system)
3504 (outputs '("out" "doc"))
3505 (arguments
3506 `(#:tests? #f ; no test target
3507 #:modules ((guix build python-build-system)
3508 (guix build utils))
3509 #:phases
3510 (alist-cons-after
3511 'install 'install-doc
3512 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3513 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3514 "/share/doc/" ,name "-" ,version))
3515 (html-doc (string-append doc "/html"))
3516 (examples (string-append doc "/examples")))
3517 (mkdir-p html-doc)
3518 (mkdir-p examples)
89b5c60e 3519 (for-each
15bfe6d6 3520 (lambda (dir tgt)
89b5c60e 3521 (map (lambda (file)
96c46210 3522 (install-file file tgt))
15bfe6d6
FB
3523 (find-files dir ".*")))
3524 (list "docs" "htmldoc" "examples")
3525 (list doc html-doc examples))))
3526 %standard-phases)))
3527 (home-page "http://pyparsing.wikispaces.com")
3528 (synopsis "Python parsing class library")
3529 (description
3530 "The pyparsing module is an alternative approach to creating and
3531executing simple grammars, vs. the traditional lex/yacc approach, or the use
3532of regular expressions. The pyparsing module provides a library of classes
3533that client code uses to construct the grammar directly in Python code.")
bd3fa666 3534 (license license:expat)))
15bfe6d6
FB
3535
3536(define-public python2-pyparsing
3537 (package-with-python2 python-pyparsing))
3538
ec00de35
FB
3539(define-public python-numpydoc
3540 (package
3541 (name "python-numpydoc")
3542 (version "0.5")
3543 (source
3544 (origin
3545 (method url-fetch)
89b5c60e 3546 (uri (string-append
ec00de35
FB
3547 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3548 version ".tar.gz"))
3549 (sha256
3550 (base32
5e4d8f67
AE
3551 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3552 (modules '((guix build utils)))
3553 (snippet
3554 '(begin
3555 ;; Drop a test requiring matplotlib, which we cannot add as an
3556 ;; input since it would create a circular dependency: Extend the
3557 ;; test for Python 3, where it is already dropped, to Python 2.
3558 (substitute* "numpydoc/tests/test_plot_directive.py"
3559 (("3") "2"))))))
ec00de35 3560 (build-system python-build-system)
fe4a8da4 3561 (propagated-inputs
213d1745
HG
3562 `(("python-sphinx" ,python-sphinx)))
3563 (native-inputs
3564 `(("python-nose" ,python-nose)))
ec00de35
FB
3565 (home-page "https://pypi.python.org/pypi/numpydoc")
3566 (synopsis
3567 "Numpy's Sphinx extensions")
3568 (description
3569 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3570 (license license:bsd-2)))
ec00de35
FB
3571
3572(define-public python2-numpydoc
5e4d8f67 3573 (package-with-python2 python-numpydoc))
1c65314c 3574
1e656049
RW
3575(define-public python-numexpr
3576 (package
3577 (name "python-numexpr")
2ee57340 3578 (version "2.6.1")
1e656049
RW
3579 (source
3580 (origin
3581 (method url-fetch)
26112c0a 3582 (uri (pypi-uri "numexpr" version))
1e656049
RW
3583 (sha256
3584 (base32
2ee57340 3585 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
3586 (build-system python-build-system)
3587 (arguments `(#:tests? #f)) ; no tests included
3588 (propagated-inputs
3589 `(("python-numpy" ,python-numpy)))
3590 (home-page "https://github.com/pydata/numexpr")
3591 (synopsis "Fast numerical expression evaluator for NumPy")
3592 (description
3593 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3594expressions that operate on arrays are accelerated and use less memory than
3595doing the same calculation in Python. In addition, its multi-threaded
3596capabilities can make use of all your cores, which may accelerate
3597computations, most specially if they are not memory-bounded (e.g. those using
3598transcendental functions).")
f210e944 3599 (license license:expat)))
1e656049
RW
3600
3601(define-public python2-numexpr
f210e944 3602 (package-with-python2 python-numexpr))
1e656049 3603
361d982c
MB
3604(define-public python-cycler
3605 (package
3606 (name "python-cycler")
3607 (version "0.10.0")
3608 (source (origin
3609 (method url-fetch)
3610 (uri (pypi-uri "cycler" version))
3611 (sha256
3612 (base32
3613 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
3614 (build-system python-build-system)
3615 (arguments
3616 ;; XXX: The current version requires 'coveralls' which we don't have.
3617 ;; Enable this for the next release which uses 'python-pytest'.
3618 '(#:tests? #f))
3619 (propagated-inputs
3620 `(("python-six" ,python-six)))
3621 (home-page "http://matplotlib.org/cycler/")
3622 (synopsis "Composable keyword argument iterator")
3623 (description
3624 "When using @code{matplotlib} and plotting more than one line, it is
3625common to want to be able to want to be able to cycle over one or more artist
3626styles; but the plotting logic can quickly become involved.
3627To address this and enable easy cycling over arbitrary @code{kwargs}, the
3628@code{Cycler} class was developed.")
3629 (license license:bsd-3)))
3630
3631(define-public python2-cycler
3632 (package-with-python2 python-cycler))
3633
1c65314c
FB
3634(define-public python-matplotlib
3635 (package
3636 (name "python-matplotlib")
1bbc659f 3637 (version "1.4.3")
1c65314c
FB
3638 (source
3639 (origin
3640 (method url-fetch)
de67e922
LF
3641 (uri (string-append "mirror://sourceforge/matplotlib/matplotlib"
3642 "/matplotlib-" version
1c65314c
FB
3643 "/matplotlib-" version ".tar.gz"))
3644 (sha256
3645 (base32
1bbc659f 3646 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3647 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3648 (build-system python-build-system)
3649 (outputs '("out" "doc"))
25f9a068
FB
3650 (propagated-inputs ; the following packages are all needed at run time
3651 `(("python-pyparsing" ,python-pyparsing)
3652 ("python-pygobject" ,python-pygobject)
3653 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3654 ("python-tkinter" ,python "tk")
ca33a3ad
HG
3655 ("python-dateutil" ,python-dateutil-2)
3656 ("python-numpy" ,python-numpy-bootstrap)
3657 ("python-pillow" ,python-pillow)
3658 ("python-pytz" ,python-pytz)
3659 ("python-six" ,python-six)
25f9a068
FB
3660 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3661 ;; from 'gtk+') provides the required 'typelib' files used by
3662 ;; 'gobject-introspection'. The location of these files is set with the
3663 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3664 ;; is done automatically by a 'native-search-path' procedure. However,
3665 ;; at run-time the user must set this variable as follows:
3666 ;;
3667 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3668 ("gtk+" ,gtk+)
3669 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3670 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3671 ;; object. For this reason we need to import both libraries.
3672 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3673 ("python-pycairo" ,python-pycairo)
3674 ("python-cairocffi" ,python-cairocffi)))
1c65314c 3675 (inputs
ca33a3ad 3676 `(("libpng" ,libpng)
1c65314c
FB
3677 ("imagemagick" ,imagemagick)
3678 ("freetype" ,freetype)
25f9a068
FB
3679 ("cairo" ,cairo)
3680 ("glib" ,glib)
1c65314c 3681 ;; FIXME: Add backends when available.
1c65314c
FB
3682 ;("python-wxpython" ,python-wxpython)
3683 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3684 ("tcl" ,tcl)
3685 ("tk" ,tk)))
1c65314c
FB
3686 (native-inputs
3687 `(("pkg-config" ,pkg-config)
ca33a3ad
HG
3688 ("python-sphinx" ,python-sphinx)
3689 ("python-numpydoc" ,python-numpydoc)
3690 ("python-nose" ,python-nose)
3691 ("python-mock" ,python-mock)
1c65314c
FB
3692 ("texlive" ,texlive)
3693 ("texinfo" ,texinfo)))
3694 (arguments
3695 `(#:phases
25f9a068
FB
3696 (alist-cons-before
3697 'build 'configure-environment
3698 (lambda* (#:key outputs inputs #:allow-other-keys)
3699 (let ((cairo (assoc-ref inputs "cairo"))
3700 (gtk+ (assoc-ref inputs "gtk+")))
3701 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3702 ;; has not effect.
25f9a068
FB
3703 (setenv "LD_LIBRARY_PATH"
3704 (string-append cairo "/lib:" gtk+ "/lib"))
3705 (setenv "HOME" (getcwd))
3706 (call-with-output-file "setup.cfg"
3707 (lambda (port)
1bbc659f
FB
3708 (format port "[directories]~%
3709basedirlist = ~a,~a~%
57b7b8cd 3710 [rc_options]~%
1bbc659f
FB
3711backend = TkAgg~%"
3712 (assoc-ref inputs "tcl")
3713 (assoc-ref inputs "tk"))))))
25f9a068
FB
3714 (alist-cons-after
3715 'install 'install-doc
ca33a3ad 3716 (lambda* (#:key inputs outputs #:allow-other-keys)
25f9a068
FB
3717 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3718 (doc (string-append data "/doc/" ,name "-" ,version))
3719 (info (string-append data "/info"))
3720 (html (string-append doc "/html")))
ca33a3ad
HG
3721 ;; Make installed package available for building the
3722 ;; documentation
3723 (add-installed-pythonpath inputs outputs)
25f9a068 3724 (with-directory-excursion "doc"
25f9a068
FB
3725 ;; Produce pdf in 'A4' format.
3726 (substitute* (find-files "." "conf\\.py")
3727 (("latex_paper_size = 'letter'")
3728 "latex_paper_size = 'a4'"))
3729 (mkdir-p html)
3730 (mkdir-p info)
3731 ;; The doc recommends to run the 'html' target twice.
3732 (system* "python" "make.py" "html")
3733 (system* "python" "make.py" "html")
18b31516 3734 (copy-recursively "build/html" html)
25f9a068
FB
3735 (system* "python" "make.py" "latex")
3736 (system* "python" "make.py" "texinfo")
18b31516
FB
3737 (symlink (string-append html "/_images")
3738 (string-append info "/matplotlib-figures"))
3739 (with-directory-excursion "build/texinfo"
3740 (substitute* "matplotlib.texi"
3741 (("@image\\{([^,]*)" all file)
3742 (string-append "@image{matplotlib-figures/" file)))
3743 (symlink (string-append html "/_images")
3744 "./matplotlib-figures")
3745 (system* "makeinfo" "--no-split"
3746 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3747 (copy-file "build/texinfo/matplotlib.info"
3748 (string-append info "/matplotlib.info"))
3749 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3750 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3751 %standard-phases))))
1c65314c
FB
3752 (home-page "http://matplotlib.org")
3753 (synopsis "2D plotting library for Python")
3754 (description
3755 "Matplotlib is a Python 2D plotting library which produces publication
3756quality figures in a variety of hardcopy formats and interactive environments
3757across platforms. Matplotlib can be used in Python scripts, the python and
3758ipython shell, web application servers, and six graphical user interface
3759toolkits.")
3f641af0 3760 (license license:psfl)
57b7b8cd 3761 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3762
764c077b 3763(define-public python2-matplotlib
57b7b8cd
LC
3764 (let ((matplotlib (package-with-python2
3765 (strip-python2-variant python-matplotlib))))
764c077b 3766 (package (inherit matplotlib)
88c26834
AE
3767 ;; Make sure to use special packages for Python 2 instead
3768 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3769 (propagated-inputs
7ca0dbc3 3770 `(("python2-pycairo" ,python2-pycairo)
764c077b 3771 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3772 ("python2-tkinter" ,python-2 "tk")
3773 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3774 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3775
0dde6232
RW
3776(define-public python2-pysnptools
3777 (package
3778 (name "python2-pysnptools")
a800018e 3779 (version "0.3.9")
0dde6232
RW
3780 (source
3781 (origin
3782 (method url-fetch)
3f2e9675 3783 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3784 (sha256
3785 (base32
a800018e 3786 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3787 (build-system python-build-system)
3788 (arguments
3789 `(#:python ,python-2)) ; only Python 2.7 is supported
3790 (propagated-inputs
3791 `(("python2-numpy" ,python2-numpy)
3792 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
3793 ("python2-pandas" ,python2-pandas)))
3794 (native-inputs
3795 `(("python2-cython" ,python2-cython)))
0dde6232 3796 (native-inputs
f3b98f4f 3797 `(("unzip" ,unzip)))
0dde6232
RW
3798 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3799 (synopsis "Library for reading and manipulating genetic data")
3800 (description
3801 "PySnpTools is a library for reading and manipulating genetic data. It
3802can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3803those files. It can also efficiently manipulate ranges of integers using set
3804operators such as union, intersection, and difference.")
3f641af0 3805 (license license:asl2.0)))
0dde6232 3806
c9b1b4f9
RW
3807(define-public python-rpy2
3808 (package
3809 (name "python-rpy2")
ec3bcbc7 3810 (version "2.7.6")
c9b1b4f9
RW
3811 (source
3812 (origin
3813 (method url-fetch)
ec3bcbc7 3814 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3815 (sha256
3816 (base32
ec3bcbc7 3817 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9 3818 (build-system python-build-system)
482d9591
HG
3819 (propagated-inputs
3820 `(("python-six" ,python-six)))
c9b1b4f9 3821 (inputs
482d9591 3822 `(("readline" ,readline)
c9b1b4f9
RW
3823 ("icu4c" ,icu4c)
3824 ("pcre" ,pcre)
3825 ("r" ,r)))
3826 (native-inputs
f3b98f4f 3827 `(("zlib" ,zlib)))
c9b1b4f9
RW
3828 (home-page "http://rpy.sourceforge.net/")
3829 (synopsis "Python interface to the R language")
3830 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3831low-level interface to R from Python, a proposed high-level interface,
3832including wrappers to graphical libraries, as well as R-like structures and
3833functions.")
3f641af0 3834 (license license:gpl3+)))
c9b1b4f9
RW
3835
3836(define-public python2-rpy2
3837 (let ((rpy2 (package-with-python2 python-rpy2)))
3838 (package (inherit rpy2)
3839 (native-inputs
3840 `(("python2-singledispatch" ,python2-singledispatch)
3841 ,@(package-native-inputs rpy2))))))
3842
bb986599
FB
3843(define-public python-scipy
3844 (package
3845 (name "python-scipy")
ba8a0824 3846 (version "0.16.0")
bb986599
FB
3847 (source
3848 (origin
3849 (method url-fetch)
de67e922
LF
3850; http://downloads.sourceforge.net/project/scipy/scipy/0.16.1/scipy-0.16.1.tar.gz
3851 (uri (string-append "mirror://sourceforge/scipy/scipy/" version
da6ce3f1 3852 "/scipy-" version ".tar.xz"))
bb986599
FB
3853 (sha256
3854 (base32
ba8a0824 3855 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3856 (build-system python-build-system)
dd86c0d1 3857 (propagated-inputs
bb986599
FB
3858 `(("python-numpy" ,python-numpy)
3859 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3860 ("python-pyparsing" ,python-pyparsing)))
3861 (inputs
3862 `(("lapack" ,lapack)
719b01c1 3863 ("openblas" ,openblas)))
bb986599 3864 (native-inputs
dd86c0d1
RW
3865 `(("python-nose" ,python-nose)
3866 ("python-sphinx" ,python-sphinx)
5248d49e 3867 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3868 ("gfortran" ,gfortran)
bb986599
FB
3869 ("texlive" ,texlive)
3870 ("perl" ,perl)))
3871 (outputs '("out" "doc"))
3872 (arguments
3873 `(#:phases
3874 (alist-cons-before
719b01c1 3875 'build 'configure-openblas
bb986599 3876 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3877 (call-with-output-file "site.cfg"
3878 (lambda (port)
3879 (format port
3880 "[blas]
3881libraries = openblas
3882library_dirs = ~a/lib
3883include_dirs = ~a/include
d548e6aa
HG
3884
3885# backslash-n to make emacs happy
3886\n[atlas]
719b01c1
RW
3887library_dirs = ~a/lib
3888atlas_libs = openblas
3889"
3890 (assoc-ref inputs "openblas")
3891 (assoc-ref inputs "openblas")
3892 (assoc-ref inputs "openblas"))))
3893 #t)
bb986599
FB
3894 (alist-cons-after
3895 'install 'install-doc
d548e6aa 3896 (lambda* (#:key inputs outputs #:allow-other-keys)
bb986599
FB
3897 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3898 (doc (string-append data "/doc/" ,name "-" ,version))
3899 (html (string-append doc "/html"))
3900 (pyver ,(string-append "PYVER=")))
d548e6aa
HG
3901 ;; Make installed package available for building the
3902 ;; documentation
3903 (add-installed-pythonpath inputs outputs)
bb986599 3904 (with-directory-excursion "doc"
bb986599
FB
3905 ;; Fix generation of images for mathematical expressions.
3906 (substitute* (find-files "source" "conf\\.py")
3907 (("pngmath_use_preview = True")
3908 "pngmath_use_preview = False"))
3909 (mkdir-p html)
3910 (system* "make" "html" pyver)
3911 (system* "make" "latex" "PAPER=a4" pyver)
3912 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3913 (copy-file "build/latex/scipy-ref.pdf"
3914 (string-append doc "/scipy-ref.pdf"))
3915 (with-directory-excursion "build/html"
3916 (for-each (lambda (file)
3917 (let* ((dir (dirname file))
3918 (tgt-dir (string-append html "/" dir)))
96c46210 3919 (install-file file html)))
bb986599
FB
3920 (find-files "." ".*"))))))
3921 ;; Tests can only be run after the library has been installed and not
3922 ;; within the source directory.
3923 (alist-cons-after
3924 'install 'check
89b5c60e 3925 (lambda _
bb986599
FB
3926 (with-directory-excursion "/tmp"
3927 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3928 (alist-delete
3929 'check
4f9ff21e
RW
3930 (alist-cons-after
3931 'unpack 'fix-tests
3932 (lambda _
3933 (substitute* "scipy/integrate/tests/test_quadpack.py"
3934 (("libm.so") "libm.so.6"))
3935 #t)
3936 %standard-phases)))))))
bb986599
FB
3937 (home-page "http://www.scipy.org/")
3938 (synopsis "The Scipy library provides efficient numerical routines")
3939 (description "The SciPy library is one of the core packages that make up
3940the SciPy stack. It provides many user-friendly and efficient numerical
3941routines such as routines for numerical integration and optimization.")
3f641af0 3942 (license license:bsd-3)))
bb986599 3943
764c077b 3944(define-public python2-scipy
57b7b8cd 3945 (package-with-python2 python-scipy))
bb986599 3946
73acc193 3947(define-public python-socksipy-branch
3948 (package
3949 (name "python-socksipy-branch")
3950 (version "1.01")
3951 (source
3952 (origin
3953 (method url-fetch)
3954 (uri (pypi-uri "SocksiPy-branch" version))
3955 (sha256
3956 (base32
3957 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
3958 (build-system python-build-system)
3959 (arguments
3960 `(#:tests? #f)) ; There are no tests
3961 (home-page "https://code.google.com/archive/p/socksipy-branch/")
3962 (synopsis "Python SOCKS module")
3963 (description
3964 "SocksiPy - A Python SOCKS client module. It provides a
3965socket-like interface that supports connections to any TCP
3966service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
3967The original version was developed by Dan Haim, this is a
3968branch created by Mario Vilas to address some open issues,
3969as the original project seems to have been abandoned circa 2007.")
3970 (license license:bsd-3)))
3971
3972(define-public python2-socksipy-branch
3973 (package-with-python2 python-socksipy-branch))
3974
94914805
EB
3975(define-public python-sqlalchemy
3976 (package
3977 (name "python-sqlalchemy")
a4ba286b 3978 (version "1.0.12")
94914805
EB
3979 (source
3980 (origin
3981 (method url-fetch)
3982 (uri (string-append "https://pypi.python.org/packages/source/S/"
3983 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3984 (sha256
3985 (base32
a4ba286b 3986 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3987 (build-system python-build-system)
3988 (native-inputs
3989 `(("python-cython" ,python-cython) ;for c extensions
3990 ("python-pytest" ,python-pytest)
3991 ("python-mock" ,python-mock))) ;for tests
3992 (arguments
3993 `(#:phases (alist-replace
3994 'check
3995 (lambda _ (zero? (system* "py.test")))
3996 %standard-phases)))
3997 (home-page "http://www.sqlalchemy.org")
3998 (synopsis "Database abstraction library")
3999 (description
4000 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4001gives application developers the full power and flexibility of SQL. It
4002provides a full suite of well known enterprise-level persistence patterns,
4003designed for efficient and high-performing database access, adapted into a
4004simple and Pythonic domain language.")
3f641af0 4005 (license license:x11)))
94914805
EB
4006
4007(define-public python2-sqlalchemy
4008 (package-with-python2 python-sqlalchemy))
c937562e 4009
4a093330
DM
4010(define-public python-pycodestyle
4011 (package
4012 (name "python-pycodestyle")
4013 (version "2.0.0")
4014 (source
4015 (origin
4016 (method url-fetch)
4017 (uri (pypi-uri "pycodestyle" version))
4018 (sha256
4019 (base32
4020 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
4021 (build-system python-build-system)
4022 (home-page "https://pycodestyle.readthedocs.io/")
4023 (synopsis "Python style guide checker")
4024 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4025Python code against some of the style conventions in
4026@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4027 (license license:expat)))
4a093330
DM
4028
4029(define-public python2-pycodestyle
f210e944 4030 (package-with-python2 python-pycodestyle))
b91912c4
DM
4031
4032(define-public python-orderedmultidict
4033 (package
4034 (name "python-orderedmultidict")
9e2802cb 4035 (version "0.7.11")
b91912c4
DM
4036 (source
4037 (origin
4038 (method url-fetch)
4039 (uri (pypi-uri "orderedmultidict" version))
4040 (sha256
4041 (base32
9e2802cb 4042 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
b91912c4
DM
4043 (build-system python-build-system)
4044 (arguments
4045 `(#:phases
4046 (modify-phases %standard-phases
4047 (add-after 'unpack 'fix-tests
4048 (lambda _
4049 ;; The package uses nosetest for running the tests.
4050 ;; Adding this initfile allows to run the test suite
4051 ;; without requiring nosetest.
4052 (zero? (system* "touch" "tests/__init__.py")))))))
4053 (propagated-inputs
4054 `(("python-six" ,python-six)))
4055 (native-inputs
4056 `(("python-pycodestyle" ,python-pycodestyle)))
4057 (home-page "https://github.com/gruns/orderedmultidict")
4058 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4059 (description "This package contains a library for ordered multivalue
4060dictionaries. A multivalue dictionary is a dictionary that can store
4061multiple values for the same key. An ordered multivalue dictionary is a
4062multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4063 (license license:unlicense)))
b91912c4
DM
4064
4065(define-public python2-orderedmultidict
f210e944 4066 (package-with-python2 python-orderedmultidict))
9dede065
DM
4067
4068(define-public python-furl
4069 (package
4070 (name "python-furl")
4071 (version "0.5.6")
4072 (source
4073 (origin
4074 (method url-fetch)
4075 (uri (pypi-uri "furl" version))
4076 (sha256
4077 (base32
4078 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4079 (build-system python-build-system)
4080 (propagated-inputs
4081 `(("python-six" ,python-six)
4082 ("python-orderedmultidict" ,python-orderedmultidict)))
4083 (native-inputs
4084 `(("python-pycodestyle" ,python-pycodestyle)))
4085 (home-page "https://github.com/gruns/furl")
4086 (synopsis "URL manipulation in Python")
4087 (description "Furl provides an easy-to-use alternative to the
4088@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4089 (license license:unlicense)))
9dede065
DM
4090
4091(define-public python2-furl
f210e944 4092 (package-with-python2 python-furl))
462bf271
DM
4093
4094(define-public python-flask-babel
4095 (package
4096 (name "python-flask-babel")
4097 (version "0.11.1")
4098 (source
4099 (origin
4100 (method url-fetch)
4101 (uri (pypi-uri "Flask-Babel" version))
4102 (sha256
4103 (base32
4104 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4105 (build-system python-build-system)
4106 (propagated-inputs
4107 `(("python-flask" ,python-flask)
4108 ("python-babel" ,python-babel)
4109 ("python-jinja2" ,python-jinja2)
4110 ("python-pytz" ,python-pytz)))
4111 (home-page "https://github.com/python-babel/flask-babel")
4112 (synopsis "Add i18n/l10n support to Flask applications")
4113 (description "This package implements internationalization and localization
4114support for Flask. This is based on the Python babel module as well as pytz -
4115both of which are installed automatically if you install this library.")
f210e944 4116 (license license:bsd-3)))
462bf271
DM
4117
4118(define-public python2-flask-babel
f210e944 4119 (package-with-python2 python-flask-babel))
4a093330 4120
de2966cf
EF
4121(define-public python-sqlalchemy-utils
4122 (package
4123 (name "python-sqlalchemy-utils")
bb4b1706 4124 (version "0.32.11")
de2966cf
EF
4125 (source
4126 (origin
4127 (method url-fetch)
4128 (uri (pypi-uri "SQLAlchemy-Utils" version))
4129 (sha256
4130 (base32
bb4b1706 4131 "1wghyvk73cmq3iqyg3fczw128fv2pan2v76m0xg1bw05h8fhvnk3"))))
de2966cf 4132 (build-system python-build-system)
c22b4f87 4133 (propagated-inputs
de2966cf
EF
4134 `(("python-six" ,python-six)
4135 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb
DM
4136 (native-inputs
4137 `(("python-pytest" ,python-pytest)))
de2966cf
EF
4138 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4139 (synopsis "Various utility functions for SQLAlchemy")
4140 (description
4141 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4142for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4143
4144You might also want to install the following optional dependencies:
4145@enumerate
4146@item @code{python-passlib}
4147@item @code{python-babel}
4148@item @code{python-cryptography}
4149@item @code{python-pytz}
4150@item @code{python-psycopg2}
4151@item @code{python-furl}
4152@item @code{python-flask-babel}
4153@end enumerate
4154")
de2966cf
EF
4155 (license license:bsd-3)))
4156
4157(define-public python2-sqlalchemy-utils
f210e944 4158 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4159
af5a4602
CAW
4160(define-public python-alembic
4161 (package
4162 (name "python-alembic")
4418990d 4163 (version "0.8.10")
af5a4602
CAW
4164 (source
4165 (origin
4166 (method url-fetch)
4167 (uri (pypi-uri "alembic" version))
4168 (sha256
4169 (base32
4418990d 4170 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
af5a4602
CAW
4171 (build-system python-build-system)
4172 (native-inputs
4173 `(("python-mock" ,python-mock)
4174 ("python-pytest-cov" ,python-pytest-cov)))
4175 (propagated-inputs
4176 `(("python-sqlalchemy" ,python-sqlalchemy)
4177 ("python-mako" ,python-mako)
4178 ("python-editor" ,python-editor)))
4179 (home-page "http://bitbucket.org/zzzeek/alembic")
4180 (synopsis
4181 "Database migration tool for SQLAlchemy")
4182 (description
4183 "Alembic is a lightweight database migration tool for usage with the
4184SQLAlchemy Database Toolkit for Python.")
f210e944 4185 (license license:expat)))
af5a4602
CAW
4186
4187(define-public python2-alembic
f210e944 4188 (package-with-python2 python-alembic))
af5a4602 4189
138adbbe
TD
4190(define-public python-autopep8
4191 (package
4192 (name "python-autopep8")
4193 (version "1.2.4")
4194 (source
4195 (origin
4196 (method url-fetch)
4197 (uri (pypi-uri "autopep8" version))
4198 (sha256
4199 (base32
4200 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4201 (build-system python-build-system)
4202 (propagated-inputs
4203 `(("python-pep8" ,python-pep8)))
4204 (home-page "https://github.com/hhatto/autopep8")
4205 (synopsis "Format Python code according to the PEP 8 style guide")
4206 (description
4207 "@code{autopep8} automatically formats Python code to conform to
4208the PEP 8 style guide. It uses the pycodestyle utility to determine
4209what parts of the code needs to be formatted. @code{autopep8} is
4210capable of fixing most of the formatting issues that can be reported
4211by pycodestyle.")
4212 (license (license:non-copyleft
4213 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4214
4215(define-public python2-autopep8
4216 (package-with-python2 python-autopep8))
4217
1671c07c
EB
4218(define-public python-distutils-extra
4219 (package
4220 (name "python-distutils-extra")
4221 (version "2.38")
4222 (source
4223 (origin
4224 (method url-fetch)
4225 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4226 version "/+download/python-distutils-extra-"
4227 version ".tar.gz"))
4228 (sha256
4229 (base32
4230 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4231 (build-system python-build-system)
1671c07c
EB
4232 (home-page "https://launchpad.net/python-distutils-extra/")
4233 (synopsis "Enhancements to Python's distutils")
4234 (description
4235 "The python-distutils-extra module enables you to easily integrate
4236gettext support, themed icons, and scrollkeeper-based documentation into
4237Python's distutils.")
3f641af0 4238 (license license:gpl2)))
1671c07c
EB
4239
4240(define-public python2-distutils-extra
4241 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4242
4243(define-public python2-elib.intl
4244 (package
4245 (name "python2-elib.intl")
4246 (version "0.0.3")
4247 (source
4248 (origin
4249 ;; This project doesn't tag releases or publish tarballs, so we take
4250 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4251 (method git-fetch)
4252 (uri (git-reference
4253 (url "https://github.com/dieterv/elib.intl.git")
4254 (commit "d09997cfef")))
4255 (sha256
4256 (base32
4257 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4258 (build-system python-build-system)
ea5456c8
EB
4259 (arguments
4260 ;; incompatible with Python 3 (exception syntax)
4261 `(#:python ,python-2
b41a05ce 4262 #:tests? #f))
ea5456c8
EB
4263 (home-page "https://github.com/dieterv/elib.intl")
4264 (synopsis "Enhanced internationalization for Python")
4265 (description
4266 "The elib.intl module provides enhanced internationalization (I18N)
4267services for your Python modules and applications.")
3f641af0 4268 (license license:lgpl3+)))
ea5456c8 4269
c937562e
EB
4270(define-public python-pillow
4271 (package
4272 (name "python-pillow")
aba5182c 4273 (version "3.3.3")
c937562e
EB
4274 (source
4275 (origin
4276 (method url-fetch)
f1d9231d 4277 (uri (pypi-uri "Pillow" version))
c937562e
EB
4278 (sha256
4279 (base32
aba5182c 4280 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4281 (build-system python-build-system)
4282 (native-inputs
f3b98f4f 4283 `(("python-nose" ,python-nose)))
c937562e 4284 (inputs
5ff408d9
SB
4285 `(("freetype" ,freetype)
4286 ("lcms" ,lcms)
c937562e
EB
4287 ("zlib" ,zlib)
4288 ("libjpeg" ,libjpeg)
4289 ("openjpeg" ,openjpeg)
5ff408d9
SB
4290 ("libtiff" ,libtiff)
4291 ("libwebp" ,libwebp)))
c937562e 4292 (arguments
e5358a6b 4293 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4294 (add-after
4295 'install 'check-installed
6151120a 4296 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4297 (begin
4298 (setenv "HOME" (getcwd))
6151120a
HG
4299 ;; Make installed package available for running the
4300 ;; tests
4301 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4302 (and (zero? (system* "python" "selftest.py"
4303 "--installed"))
4304 (zero? (system* "python" "test-installed.py"))))))
4305 (delete 'check))))
c937562e
EB
4306 (home-page "https://pypi.python.org/pypi/Pillow")
4307 (synopsis "Fork of the Python Imaging Library")
4308 (description
4309 "The Python Imaging Library adds image processing capabilities to your
4310Python interpreter. This library provides extensive file format support, an
4311efficient internal representation, and fairly powerful image processing
4312capabilities. The core image library is designed for fast access to data
4313stored in a few basic pixel formats. It should provide a solid foundation for
4314a general image processing tool.")
3f641af0 4315 (license (license:x11-style
c937562e
EB
4316 "http://www.pythonware.com/products/pil/license.htm"
4317 "The PIL Software License"))))
4318
4319(define-public python2-pillow
4320 (package-with-python2 python-pillow))
bb986599 4321
a415f036
FB
4322(define-public python-pycparser
4323 (package
4324 (name "python-pycparser")
5043b20d 4325 (version "2.17")
a415f036
FB
4326 (source
4327 (origin
4328 (method url-fetch)
38eb6919 4329 (uri (pypi-uri "pycparser" version))
a415f036
FB
4330 (sha256
4331 (base32
5043b20d 4332 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
a415f036
FB
4333 (outputs '("out" "doc"))
4334 (build-system python-build-system)
4335 (native-inputs
f3b98f4f 4336 `(("pkg-config" ,pkg-config)))
a415f036 4337 (arguments
89b5c60e 4338 `(#:phases
819939cb
TGR
4339 (modify-phases %standard-phases
4340 (replace 'check
4341 (lambda _
4342 (with-directory-excursion "tests"
4343 (zero? (system* "python" "all_tests.py")))))
4344 (add-after 'install 'install-doc
4345 (lambda* (#:key outputs #:allow-other-keys)
4346 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4347 (doc (string-append data "/doc/" ,name "-" ,version))
4348 (examples (string-append doc "/examples")))
4349 (mkdir-p examples)
4350 (for-each (lambda (file)
4351 (copy-file (string-append "." file)
4352 (string-append doc file)))
4353 '("/README.rst" "/CHANGES" "/LICENSE"))
4354 (copy-recursively "examples" examples)))))))
a415f036
FB
4355 (home-page "https://github.com/eliben/pycparser")
4356 (synopsis "C parser in Python")
4357 (description
4358 "Pycparser is a complete parser of the C language, written in pure Python
4359using the PLY parsing library. It parses C code into an AST and can serve as
4360a front-end for C compilers or analysis tools.")
3f641af0 4361 (license license:bsd-3)))
a415f036
FB
4362
4363(define-public python2-pycparser
4364 (package-with-python2 python-pycparser))
57c3f716
FB
4365
4366(define-public python-cffi
4367 (package
4368 (name "python-cffi")
2d3a437c 4369 (version "1.4.2")
57c3f716
FB
4370 (source
4371 (origin
4372 (method url-fetch)
2d3a437c 4373 (uri (pypi-uri "cffi" version))
89b5c60e 4374 (sha256
2d3a437c 4375 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4376 (build-system python-build-system)
4377 (outputs '("out" "doc"))
4378 (inputs
4379 `(("libffi" ,libffi)))
4380 (propagated-inputs ; required at run-time
4381 `(("python-pycparser" ,python-pycparser)))
4382 (native-inputs
4383 `(("pkg-config" ,pkg-config)
4384 ("python-sphinx" ,python-sphinx)
f3b98f4f 4385 ("python-pytest" ,python-pytest)))
57c3f716 4386 (arguments
4179f952 4387 `(#:phases
57c3f716
FB
4388 (alist-cons-after
4389 'install 'install-doc
4390 (lambda* (#:key outputs #:allow-other-keys)
4391 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4392 (doc (string-append data "/doc/" ,name "-" ,version))
4393 (html (string-append doc "/html")))
4394 (with-directory-excursion "doc"
4395 (system* "make" "html")
4396 (mkdir-p html)
4397 (copy-recursively "build/html" html))
4398 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4399 %standard-phases)))
4400 (home-page "http://cffi.readthedocs.org")
4401 (synopsis "Foreign function interface for Python")
4402 (description
4403 "Foreign Function Interface for Python calling C code.")
bd3fa666 4404 (license license:expat)))
57c3f716
FB
4405
4406(define-public python2-cffi
4407 (package-with-python2 python-cffi))
6fa14469
FB
4408
4409(define-public python-xcffib
4410 (package
4411 (name "python-xcffib")
4412 (version "0.1.9")
4413 (source
4414 (origin
4415 (method url-fetch)
4416 (uri (string-append "https://pypi.python.org/packages/source/x/"
4417 "xcffib/xcffib-" version ".tar.gz"))
4418 (sha256
4419 (base32
4420 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4421 (build-system python-build-system)
4422 (inputs
482d9591 4423 `(("libxcb" ,libxcb)))
6fa14469 4424 (propagated-inputs
482d9591
HG
4425 `(("python-cffi" ,python-cffi) ; used at run time
4426 ("python-six" ,python-six)))
6fa14469 4427 (arguments
89b5c60e 4428 `(#:phases
6fa14469
FB
4429 (alist-cons-after
4430 'install 'install-doc
4431 (lambda* (#:key outputs #:allow-other-keys)
4432 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4433 "/doc/" ,name "-" ,version)))
4434 (mkdir-p doc)
4435 (copy-file "README.md"
4436 (string-append doc "/README.md"))))
4437 %standard-phases)))
4438 (home-page "https://github.com/tych0/xcffib")
4439 (synopsis "XCB Python bindings")
4440 (description
4441 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4442support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4443 (license license:expat)))
6fa14469
FB
4444
4445(define-public python2-xcffib
4446 (package-with-python2 python-xcffib))
4447
9e099723
FB
4448(define-public python-cairocffi
4449 (package
4450 (name "python-cairocffi")
4451 (version "0.6")
4452 (source
4453 (origin
4454 (method url-fetch)
4455 ;; The archive on pypi is missing the 'utils' directory!
4456 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4457 version ".tar.gz"))
f586c877 4458 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4459 (sha256
4460 (base32
4461 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4462 (build-system python-build-system)
4463 (outputs '("out" "doc"))
4464 (inputs
4465 `(("gdk-pixbuf" ,gdk-pixbuf)
4466 ("cairo" ,cairo)))
4467 (native-inputs
4468 `(("pkg-config" ,pkg-config)
4469 ("python-sphinx" ,python-sphinx)
f3b98f4f 4470 ("python-docutils" ,python-docutils)))
9e099723
FB
4471 (propagated-inputs
4472 `(("python-xcffib" ,python-xcffib))) ; used at run time
4473 (arguments
89b5c60e 4474 `(#:phases
9e099723
FB
4475 (alist-cons-after
4476 'install 'install-doc
4477 (lambda* (#:key inputs outputs #:allow-other-keys)
4478 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4479 (doc (string-append data "/doc/" ,name "-" ,version))
4480 (html (string-append doc "/html")))
89b5c60e 4481 (setenv "LD_LIBRARY_PATH"
9e099723
FB
4482 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4483 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4484 (setenv "LANG" "en_US.UTF-8")
4485 (mkdir-p html)
4486 (for-each (lambda (file)
4487 (copy-file (string-append "." file)
4488 (string-append doc file)))
4489 '("/README.rst" "/CHANGES" "/LICENSE"))
4490 (system* "python" "setup.py" "build_sphinx")
4491 (copy-recursively "docs/_build/html" html)))
4492 %standard-phases)))
4493 (home-page "https://github.com/SimonSapin/cairocffi")
4494 (synopsis "Python bindings and object-oriented API for Cairo")
4495 (description
4496 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4497Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4498graphics library with support for multiple backends including image buffers,
4499PNG, PostScript, PDF, and SVG file output.")
3f641af0 4500 (license license:bsd-3)))
9e099723
FB
4501
4502(define-public python2-cairocffi
4503 (package-with-python2 python-cairocffi))
4504
3cff95cb
RW
4505(define-public python-decorator
4506 (package
4507 (name "python-decorator")
d79fa7da 4508 (version "4.0.10")
3cff95cb
RW
4509 (source
4510 (origin
4511 (method url-fetch)
e21338be 4512 (uri (pypi-uri "decorator" version))
3cff95cb 4513 (sha256
d79fa7da 4514 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
3cff95cb
RW
4515 (build-system python-build-system)
4516 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 4517 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4518 (synopsis "Python module to simplify usage of decorators")
4519 (description
4520 "The aim of the decorator module is to simplify the usage of decorators
4521for the average programmer, and to popularize decorators usage giving examples
4522of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4523etc. The core of this module is a decorator factory.")
4524 (license license:expat)))
4525
4526(define-public python2-decorator
4527 (package-with-python2 python-decorator))
4528
2c0499ad
RW
4529(define-public python-drmaa
4530 (package
4531 (name "python-drmaa")
4532 (version "0.7.6")
4533 (source
4534 (origin
4535 (method url-fetch)
4536 (uri (string-append
4537 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4538 version ".tar.gz"))
4539 (sha256
4540 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4541 (build-system python-build-system)
4542 ;; The test suite requires libdrmaa which is provided by the cluster
4543 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4544 ;; should be set to the path of the libdrmaa library.
4545 (arguments '(#:tests? #f))
4546 (native-inputs
f3b98f4f 4547 `(("python-nose" ,python-nose)))
2c0499ad
RW
4548 (home-page "https://pypi.python.org/pypi/drmaa")
4549 (synopsis "Python bindings for the DRMAA library")
4550 (description
4551 "A Python package for Distributed Resource Management (DRM) job
4552submission and control. This package is an implementation of the DRMAA 1.0
4553Python language binding specification.")
3f641af0 4554 (license license:bsd-3)))
2c0499ad
RW
4555
4556(define-public python2-drmaa
4557 (package-with-python2 python-drmaa))
4558
d05c6da0
RW
4559(define-public python-gridmap
4560 (package
4561 (name "python-gridmap")
4562 (version "0.13.0")
4563 (source
4564 (origin
4565 (method url-fetch)
4566 (uri (string-append
4567 "https://github.com/pygridtools/gridmap/archive/v"
4568 version ".tar.gz"))
4569 (file-name (string-append name "-" version ".tar.gz"))
4570 (sha256
4571 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4572 (build-system python-build-system)
f22efa01 4573 (propagated-inputs
d05c6da0
RW
4574 `(("python-psutil" ,python-psutil)
4575 ("python-drmaa" ,python-drmaa)
4576 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
4577 (home-page "https://github.com/pygridtools/gridmap")
4578 (synopsis "Create jobs on a cluster directly from Python")
4579 (description
4580 "Gridmap is a Python package to allow you to easily create jobs on the
4581cluster directly from Python. You can directly map Python functions onto the
4582cluster without needing to write any wrapper code yourself.")
3f641af0 4583 (license license:gpl3+)))
d05c6da0
RW
4584
4585(define-public python2-gridmap
4586 (package-with-python2 python-gridmap))
4587
cb6d5c54
RW
4588(define-public python-pexpect
4589 (package
4590 (name "python-pexpect")
4591 (version "3.3")
4592 (source
4593 (origin
4594 (method url-fetch)
4595 (uri (string-append "https://pypi.python.org/packages/source/p/"
4596 "pexpect/pexpect-" version ".tar.gz"))
4597 (sha256
4598 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4599 (build-system python-build-system)
4600 (arguments
4601 `(#:phases
4602 (modify-phases %standard-phases
4603 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4604 (native-inputs
4605 `(("python-nose" ,python-nose)))
4606 (home-page "http://pexpect.readthedocs.org/")
4607 (synopsis "Controlling interactive console applications")
4608 (description
4609 "Pexpect is a pure Python module for spawning child applications;
4610controlling them; and responding to expected patterns in their output.
4611Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4612child application and control it as if a human were typing commands.")
3f641af0 4613 (license license:isc)))
cb6d5c54
RW
4614
4615(define-public python2-pexpect
4616 (package-with-python2 python-pexpect))
4617
229ad120
RW
4618(define-public python-setuptools-scm
4619 (package
4620 (name "python-setuptools-scm")
42d6d0d0 4621 (version "1.11.1")
229ad120
RW
4622 (source (origin
4623 (method url-fetch)
383af6b0 4624 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4625 (sha256
4626 (base32
42d6d0d0 4627 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120
RW
4628 (build-system python-build-system)
4629 (home-page "https://github.com/pypa/setuptools_scm/")
4630 (synopsis "Manage Python package versions in SCM metadata")
4631 (description
383af6b0 4632 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4633@dfn{software configuration management} (SCM) metadata instead of declaring
4634them as the version argument or in a SCM managed file.")
4635 (license license:expat)))
4636
4637(define-public python2-setuptools-scm
4638 (package-with-python2 python-setuptools-scm))
4639
b74270ee
RW
4640(define-public python-pathpy
4641 (package
4642 (name "python-pathpy")
4643 (version "8.1.1")
4644 (source
4645 (origin
4646 (method url-fetch)
4647 (uri (string-append "https://pypi.python.org/packages/source/p/"
4648 "path.py/path.py-" version ".tar.gz"))
4649 (sha256
4650 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 4651 (outputs '("out" "doc"))
b74270ee
RW
4652 (build-system python-build-system)
4653 (propagated-inputs
4654 `(("python-appdirs" ,python-appdirs)))
4655 (native-inputs
f3b98f4f 4656 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
4657 ("python-sphinx" ,python-sphinx)
4658 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
4659 ("python-pytest" ,python-pytest)
4660 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
4661 (arguments
4662 `(#:phases
4663 (modify-phases %standard-phases
4664 (add-after 'build 'build-doc
4665 (lambda _
4666 (setenv "LANG" "en_US.UTF-8")
4667 (zero? (system* "python" "setup.py" "build_sphinx"))))
4668 (add-after 'install 'install-doc
4669 (lambda* (#:key outputs #:allow-other-keys)
4670 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4671 (doc (string-append data "/doc/" ,name "-" ,version))
4672 (html (string-append doc "/html")))
4673 (mkdir-p html)
4674 (for-each (lambda (file)
4675 (copy-file file (string-append doc "/" file)))
4676 '("README.rst" "CHANGES.rst"))
4677 (copy-recursively "build/sphinx/html" html)))))))
b74270ee
RW
4678 (home-page "http://github.com/jaraco/path.py")
4679 (synopsis "Python module wrapper for built-in os.path")
4680 (description
4681 "@code{path.py} implements path objects as first-class entities, allowing
4682common operations on files to be invoked on those path objects directly.")
4683 (license license:expat)))
4684
4685(define-public python2-pathpy
4686 (package-with-python2 python-pathpy))
4687
0d34e01b
RW
4688(define-public python-pickleshare
4689 (package
4690 (name "python-pickleshare")
4691 (version "0.5")
4692 (source
4693 (origin
4694 (method url-fetch)
4695 (uri (string-append "https://pypi.python.org/packages/source/p/"
4696 "pickleshare/pickleshare-" version ".tar.gz"))
4697 (sha256
4698 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4699 (build-system python-build-system)
4700 (propagated-inputs
4701 `(("python-pathpy" ,python-pathpy)))
4702 (home-page "https://github.com/vivainio/pickleshare")
4703 (synopsis "Tiny key value database with concurrency support")
4704 (description
4705 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4706Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4707shelve, many processes can access the database simultaneously. Changing a
4708value in database is immediately visible to other processes accessing the same
4709database. Concurrency is possible because the values are stored in separate
4710files. Hence the “database” is a directory where all files are governed by
4711PickleShare.")
4712 (license license:expat)))
4713
4714(define-public python2-pickleshare
4715 (package-with-python2 python-pickleshare))
4716
cd6e5189
RW
4717(define-public python-simplegeneric
4718 (package
4719 (name "python-simplegeneric")
4720 (version "0.8.1")
4721 (source
4722 (origin
4723 (method url-fetch)
4724 (uri (string-append "https://pypi.python.org/packages/source/s/"
4725 "simplegeneric/simplegeneric-" version ".zip"))
4726 (sha256
4727 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4728 (build-system python-build-system)
4729 (native-inputs
f3b98f4f 4730 `(("unzip" ,unzip)))
cd6e5189
RW
4731 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4732 (synopsis "Python module for simple generic functions")
4733 (description
4734 "The simplegeneric module lets you define simple single-dispatch generic
4735functions, akin to Python’s built-in generic functions like @code{len()},
4736@code{iter()} and so on. However, instead of using specially-named methods,
4737these generic functions use simple lookup tables, akin to those used by
4738e.g. @code{pickle.dump()} and other generic functions found in the Python
4739standard library.")
3f641af0 4740 (license license:zpl2.1)))
cd6e5189
RW
4741
4742(define-public python2-simplegeneric
4743 (package-with-python2 python-simplegeneric))
4744
ddc7d8ed 4745(define-public python-ipython-genutils
c4abbac3 4746 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
4747 (package
4748 (name "python-ipython-genutils")
4749 (version "0.1.0")
4750 (source
4751 (origin
4752 (method url-fetch)
4753 (uri (string-append "https://pypi.python.org/packages/source/i/"
4754 "ipython_genutils/ipython_genutils-"
4755 version ".tar.gz"))
4756 (sha256
4757 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4758 (build-system python-build-system)
4759 (arguments `(#:tests? #f)) ; no tests
4760 (home-page "http://ipython.org")
4761 (synopsis "Vestigial utilities from IPython")
4762 (description
c4abbac3
HG
4763 "This package provides retired utilities from IPython. No packages
4764outside IPython/Jupyter should depend on it.
4765
4766This package shouldn't exist. It contains some common utilities shared by
4767Jupyter and IPython projects during The Big Split. As soon as possible, those
4768packages will remove their dependency on this, and this package will go
4769away.")
3f641af0 4770 (license license:bsd-3)))
ddc7d8ed
RW
4771
4772(define-public python2-ipython-genutils
4773 (package-with-python2 python-ipython-genutils))
4774
2b10eb48
RW
4775(define-public python-traitlets
4776 (package
4777 (name "python-traitlets")
a5ba1481 4778 (version "4.2.0")
2b10eb48
RW
4779 (source
4780 (origin
4781 (method url-fetch)
cc0c4fde 4782 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4783 (sha256
4784 (base32
a5ba1481 4785 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
4786 (build-system python-build-system)
4787 (arguments
4788 `(#:phases
4789 (modify-phases %standard-phases
4790 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4791 (propagated-inputs
4792 `(("python-ipython-genutils" ,python-ipython-genutils)
4793 ("python-decorator" ,python-decorator)))
4794 (native-inputs
cc0c4fde
EF
4795 `(("python-mock" ,python-mock)
4796 ("python-nose" ,python-nose)))
2b10eb48
RW
4797 (home-page "http://ipython.org")
4798 (synopsis "Configuration system for Python applications")
4799 (description
4800 "Traitlets is a framework that lets Python classes have attributes with
4801type checking, dynamically calculated default values, and ‘on change’
4802callbacks. The package also includes a mechanism to use traitlets for
4803configuration, loading values from files or from command line arguments. This
4804is a distinct layer on top of traitlets, so you can use traitlets in your code
4805without using the configuration machinery.")
3f641af0 4806 (license license:bsd-3)))
2b10eb48
RW
4807
4808(define-public python2-traitlets
4809 (package-with-python2 python-traitlets))
4810
4263b06f
RW
4811(define-public python-jupyter-core
4812 (package
4813 (name "python-jupyter-core")
45cc957c 4814 (version "4.2.1")
4263b06f
RW
4815 (source
4816 (origin
4817 (method url-fetch)
4818 (uri (string-append (pypi-uri "jupyter_core" version)))
4819 (sha256
4820 (base32
45cc957c 4821 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
4263b06f
RW
4822 (build-system python-build-system)
4823 ;; FIXME: not sure how to run the tests
4824 (arguments `(#:tests? #f))
4825 (propagated-inputs
4826 `(("python-traitlets" ,python-traitlets)))
4827 (home-page "http://jupyter.org/")
4828 (synopsis "Jupyter base package")
4829 (description
4830 "Jupyter core is the base package on which Jupyter projects rely.")
4831 (license license:bsd-3)))
4832
4833(define-public python2-jupyter-core
4834 (package-with-python2 python-jupyter-core))
4835
9ff01f2d
RW
4836(define-public python-jupyter-client
4837 (package
4838 (name "python-jupyter-client")
4839 (version "4.4.0")
4840 (source
4841 (origin
4842 (method url-fetch)
4843 (uri (pypi-uri "jupyter_client" version))
4844 (sha256
4845 (base32
4846 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
4847 (build-system python-build-system)
4848 ;; Tests fail because of missing native python kernel which I assume is
4849 ;; provided by the ipython package, which we cannot use because it would
4850 ;; cause a dependency cycle.
4851 (arguments `(#:tests? #f))
4852 (propagated-inputs
4853 `(("python-pyzmq" ,python-pyzmq)
4854 ("python-traitlets" ,python-traitlets)
4855 ("python-jupyter-core" ,python-jupyter-core)))
4856 (home-page "http://jupyter.org/")
4857 (synopsis "Jupyter protocol implementation and client libraries")
4858 (description
4859 "The @code{jupyter_client} package contains the reference implementation
4860of the Jupyter protocol. It also provides client and kernel management APIs
4861for working with kernels, and the @code{jupyter kernelspec} entrypoint for
4862installing @code{kernelspec}s for use with Jupyter frontends.")
4863 (license license:bsd-3)))
4864
4865(define-public python2-jupyter-client
4866 (package-with-python2 python-jupyter-client))
4867
ab526102
RW
4868(define-public python-ipykernel
4869 (package
4870 (name "python-ipykernel")
f165648e 4871 (version "4.5.2")
ab526102
RW
4872 (source
4873 (origin
4874 (method url-fetch)
4875 (uri (pypi-uri "ipykernel" version))
4876 (sha256
f165648e 4877 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
ab526102
RW
4878 (build-system python-build-system)
4879 ;; The tests load a submodule of IPython. However, IPython itself depends
4880 ;; on ipykernel.
4881 (arguments `(#:tests? #f))
4882 (propagated-inputs
4883 ;; imported at runtime during connect
4884 `(("python-jupyter-client" ,python-jupyter-client)))
4885 (home-page "http://ipython.org")
4886 (synopsis "IPython Kernel for Jupyter")
4887 (description
4888 "This package provides the IPython kernel for Jupyter.")
4889 (license license:bsd-3)))
4890
4891(define-public python2-ipykernel
4892 (package-with-python2 python-ipykernel))
4893
5ff6effc
RW
4894(define-public python-testpath
4895 (package
4896 (name "python-testpath")
4897 (version "0.2")
4898 (source
4899 (origin
4900 (method url-fetch)
4901 (uri (string-append "https://github.com/jupyter/testpath/archive/"
4902 version ".tar.gz"))
4903 (file-name (string-append name "-" version ".tar.gz"))
4904 (sha256
4905 (base32
4906 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
4907 (build-system python-build-system)
4908 (arguments
4909 `(#:tests? #f ; this package does not even have a setup.py
4910 #:phases
4911 (modify-phases %standard-phases
4912 (delete 'install)
4913 (replace 'build
4914 (lambda* (#:key inputs outputs #:allow-other-keys)
4915 (let ((dir (string-append
4916 (assoc-ref outputs "out")
4917 "/lib/python"
4918 (string-take (string-take-right
4919 (assoc-ref inputs "python") 5) 3)
4920 "/site-packages/testpath")))
4921 (mkdir-p dir)
4922 (copy-recursively "testpath" dir))
4923 #t)))))
4924 (home-page "https://github.com/takluyver/testpath")
4925 (synopsis "Test utilities for code working with files and commands")
4926 (description
4927 "Testpath is a collection of utilities for Python code working with files
4928and commands. It contains functions to check things on the filesystem, and
4929tools for mocking system commands and recording calls to those.")
4930 (license license:expat)))
4931
4932(define-public python2-testpath
4933 (package-with-python2 python-testpath))
4934
ae1ab9fe
FB
4935(define-public python-ipython
4936 (package
4937 (name "python-ipython")
4dbc8ec4 4938 (version "4.0.3")
ae1ab9fe
FB
4939 (source
4940 (origin
fceac880 4941 (method url-fetch)
accd5f99 4942 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 4943 (sha256
4dbc8ec4 4944 (base32 "1h2gp1p06sww9rzfkfzqy489bh47gj3910y2b1wdk3dcx1cqz4is"))))
ae1ab9fe
FB
4945 (build-system python-build-system)
4946 (outputs '("out" "doc"))
3a0b1b9a
FB
4947 (propagated-inputs
4948 `(("python-pyzmq" ,python-pyzmq)
accd5f99 4949 ("python-terminado" ,python-terminado)
ae1ab9fe 4950 ("python-matplotlib" ,python-matplotlib)
5d26e542 4951 ("python-numpy" ,python-numpy)
ae1ab9fe 4952 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4953 ("python-jinja2" ,python-jinja2)
4954 ("python-mistune" ,python-mistune)
accd5f99
RW
4955 ("python-pexpect" ,python-pexpect)
4956 ("python-pickleshare" ,python-pickleshare)
4957 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 4958 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
4959 ("python-traitlets" ,python-traitlets)
4960 ("python-ipykernel" ,python-ipykernel)
4961 ("python-pygments" ,python-pygments)))
4962 (inputs
4963 `(("readline" ,readline)
4964 ("which" ,which)))
ae1ab9fe
FB
4965 (native-inputs
4966 `(("pkg-config" ,pkg-config)
accd5f99
RW
4967 ("python-requests" ,python-requests) ;; for tests
4968 ("python-testpath" ,python-testpath)
4969 ("python-nose" ,python-nose)
ae1ab9fe
FB
4970 ("python-sphinx" ,python-sphinx)
4971 ("texlive" ,texlive)
f3b98f4f 4972 ("texinfo" ,texinfo)))
ae1ab9fe 4973 (arguments
89b5c60e 4974 `(#:phases
3a0b1b9a
FB
4975 (modify-phases %standard-phases
4976 (add-after
4977 'install 'install-doc
4978 (lambda* (#:key inputs outputs #:allow-other-keys)
4979 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4980 (doc (string-append data "/doc/" ,name "-" ,version))
4981 (html (string-append doc "/html"))
4982 (man1 (string-append data "/man/man1"))
4983 (info (string-append data "/info"))
4984 (examples (string-append doc "/examples")))
afd3d931 4985 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
4986 ;; Make installed package available for running the tests
4987 (add-installed-pythonpath inputs outputs)
3a0b1b9a 4988 (with-directory-excursion "docs"
accd5f99
RW
4989 ;; FIXME: pdf fails to build
4990 ;;(system* "make" "pdf" "PAPER=a4")
4991 (system* "make" "html")
3a0b1b9a
FB
4992 (system* "make" "info"))
4993 (copy-recursively "docs/man" man1)
4994 (copy-recursively "examples" examples)
accd5f99 4995 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
4996 ;; (copy-file "docs/build/latex/ipython.pdf"
4997 ;; (string-append doc "/ipython.pdf"))
4998 (mkdir-p info)
4999 (copy-file "docs/build/texinfo/ipython.info"
5000 (string-append info "/ipython.info"))
5001 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5002 ;; Tests can only be run after the library has been installed and not
5003 ;; within the source directory.
5004 (delete 'check)
5005 (add-after
5006 'install 'check
eee5cd04 5007 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
5008 (if tests?
5009 (with-directory-excursion "/tmp"
eee5cd04
HG
5010 ;; Make installed package available for running the tests
5011 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
5012 (setenv "HOME" "/tmp/") ;; required by a test
5013 (zero? (system* (string-append (assoc-ref outputs "out")
5014 "/bin/iptest"))))
5015 #t)))
5016 (add-before
5017 'install 'fix-tests
5018 (lambda* (#:key inputs #:allow-other-keys)
5019 (substitute* "./IPython/utils/_process_posix.py"
5020 (("/usr/bin/env', 'which") (which "which")))
5021 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5022 (("#!/usr/bin/env python")
5023 (string-append "#!" (which "python"))))
5024 ;; Disable 1 failing test
5025 (substitute* "./IPython/core/tests/test_magic.py"
5026 (("def test_dirops\\(\\):" all)
5027 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
5028 (home-page "http://ipython.org")
5029 (synopsis "IPython is a tool for interactive computing in Python")
5030 (description
5031 "IPython provides a rich architecture for interactive computing with:
5032Powerful interactive shells, a browser-based notebook, support for interactive
5033data visualization, embeddable interpreters and tools for parallel
5034computing.")
135ba811
EF
5035 (license license:bsd-3)
5036 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
5037
5038(define-public python2-ipython
135ba811 5039 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
5040 (package
5041 (inherit ipython)
5042 ;; FIXME: some tests are failing
5043 (arguments
5044 `(#:tests? #f ,@(package-arguments ipython)))
3a0b1b9a 5045 ;; FIXME: add pyreadline once available.
e62600fe 5046 (native-inputs
135ba811 5047 `(("python2-mock" ,python2-mock)
77a6932a 5048 ,@(package-native-inputs ipython))))))
03411993
AE
5049
5050(define-public python-isodate
5051 (package
5052 (name "python-isodate")
b6785c2e 5053 (version "0.5.4")
03411993
AE
5054 (source
5055 (origin
5056 (method url-fetch)
b6785c2e 5057 (uri (pypi-uri "isodate" version))
03411993
AE
5058 (sha256
5059 (base32
b6785c2e 5060 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5061 (build-system python-build-system)
03411993
AE
5062 (home-page
5063 "http://cheeseshop.python.org/pypi/isodate")
5064 (synopsis
5065 "Python date parser and formatter")
5066 (description
5067 "Python-isodate is a python module for parsing and formatting
5068ISO 8601 dates, time and duration.")
3f641af0 5069 (license license:bsd-3)))
03411993
AE
5070
5071(define-public python2-isodate
5072 (package-with-python2 python-isodate))
673ab897
AE
5073
5074(define-public python-html5lib
5075 (package
5076 (name "python-html5lib")
a14061aa 5077 (version "1.0b10")
673ab897
AE
5078 (source
5079 (origin
5080 (method url-fetch)
fee04c19 5081 (uri (pypi-uri "html5lib" version))
673ab897
AE
5082 (sha256
5083 (base32
a14061aa 5084 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5085 (build-system python-build-system)
3dd75476 5086 (propagated-inputs
4eb6ed28
MB
5087 `(("python-six" ,python-six)
5088 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5089 (arguments
5090 `(#:test-target "check"))
5091 (home-page
5092 "https://github.com/html5lib/html5lib-python")
5093 (synopsis
5094 "Python HTML parser based on the WHATWG HTML specifcation")
5095 (description
5096 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5097and written in Python.")
bd3fa666 5098 (license license:expat)))
673ab897
AE
5099
5100(define-public python2-html5lib
5101 (package-with-python2 python-html5lib))
e99f4211 5102
8ee62c97
RW
5103;; Needed for python-bleach, a dependency of python-notebook
5104(define-public python-html5lib-0.9
5105 (package
5106 (inherit python-html5lib)
5107 (version "0.999")
5108 (source
5109 (origin
5110 (method url-fetch)
5111 (uri (pypi-uri "html5lib" version))
5112 (sha256
5113 (base32
5114 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5115
5116(define-public python2-html5lib-0.9
5117 (package-with-python2 python-html5lib-0.9))
5118
adbca19e
MB
5119(define-public python-webencodings
5120 (package
5121 (name "python-webencodings")
5122 (version "0.5")
5123 (source (origin
5124 (method url-fetch)
5125 (uri (pypi-uri "webencodings" version))
5126 (sha256
5127 (base32
5128 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5129 (build-system python-build-system)
5130 (arguments
5131 '(#:phases
5132 (modify-phases %standard-phases
5133 (replace 'check
5134 (lambda _
5135 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5136 (native-inputs
5137 `(("python-pytest" ,python-pytest)))
5138 (home-page "https://github.com/SimonSapin/python-webencodings")
5139 (synopsis "Character encoding aliases for legacy web content")
5140 (description
5141 "In order to be compatible with legacy web content when interpreting
5142something like @code{Content-Type: text/html; charset=latin1}, tools need
5143to use a particular set of aliases for encoding labels as well as some
5144overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
5145the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
5146or @code{UTF-16} BOM takes precedence over any other encoding declaration.
5147The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
5148defines all such details so that implementations do not have to
5149reverse-engineer each other.
5150
5151This module implements the Encoding standard and has encoding labels and
5152BOM detection, but the actual implementation for encoders and decoders
5153is Python’s.")
5154 (license license:bsd-3)))
5155
5156(define-public python2-webencodings
5157 (package-with-python2 python-webencodings))
5158
e99f4211
MW
5159(define-public python-urwid
5160 (package
5161 (name "python-urwid")
51ff41f6 5162 (version "1.3.1")
e99f4211
MW
5163 (source
5164 (origin
5165 (method url-fetch)
b97c1bfd 5166 (uri (pypi-uri "urwid" version))
e99f4211
MW
5167 (sha256
5168 (base32
51ff41f6 5169 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 5170 (build-system python-build-system)
b97c1bfd
LF
5171 (arguments
5172 `(#:phases
5173 (modify-phases %standard-phases
5174 ;; Disable failing test. Bug filed upstream:
5175 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5176 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5177 (add-after 'unpack 'disable-failing-test
5178 (lambda _
5179 (substitute* "urwid/tests/test_event_loops.py"
5180 (("test_remove_watch_file")
5181 "disable_remove_watch_file")))))))
e99f4211
MW
5182 (home-page "http://urwid.org")
5183 (synopsis "Console user interface library for Python")
5184 (description
5185 "Urwid is a curses-based UI/widget library for Python. It includes many
5186features useful for text console applications.")
3f641af0 5187 (license license:lgpl2.1+)))
e99f4211
MW
5188
5189(define-public python2-urwid
5190 (package-with-python2 python-urwid))
d95a56c6 5191
5220022a
JL
5192(define-public python-openid
5193 (package
5194 (name "python-openid")
5195 (version "3.0.10")
5196 (source
5197 (origin
5198 (method url-fetch)
5199 (uri (pypi-uri "python3-openid" version))
5200 (sha256
5201 (base32
5202 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
5203 (build-system python-build-system)
5204 (home-page "https://github.com/necaris/python3-openid")
5205 (synopsis "OpenID support for servers and consumers")
5206 (description "This library provides OpenID authentication for Python, both
5207for clients and servers.")
5208 (license license:asl2.0)))
5209
3ef00f56 5210(define-public python2-openid
5211 (package
5212 (name "python2-openid")
5213 (version "2.2.5")
5214 (source
5215 (origin
5216 (method url-fetch)
5217 (uri (pypi-uri "python-openid" version))
5218 (sha256
5219 (base32
5220 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
5221 (build-system python-build-system)
5222 (arguments
5223 ;; Python 3 support is in `python3-openid`, a separate package.
5224 `(#:python ,python-2))
5225 (home-page "https://github.com/openid/python-openid")
5226 (synopsis "OpenID support for servers and consumers")
5227 (description "This library provides OpenID authentication for Python, both
5228for clients and servers.")
5229 (license license:asl2.0)))
5230
47d0b292
TS
5231(define-public python-urwidtrees
5232 (package
5233 (name "python-urwidtrees")
37ec4623 5234 (version "1.0.2")
47d0b292
TS
5235 (source
5236 (origin
5237 (method url-fetch)
37ec4623
TS
5238 ;; package author intends on distributing via github rather than pypi:
5239 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5240 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5241 version ".tar.gz"))
5242 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5243 (sha256
5244 (base32
37ec4623 5245 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5246 (build-system python-build-system)
5247 (arguments
5248 '(#:tests? #f)) ; no tests
f22efa01 5249 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
5250 (home-page "https://github.com/pazz/urwidtrees")
5251 (synopsis "Tree widgets for urwid")
5252 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5253toolkit. Use it to build trees of widgets.")
3f641af0 5254 (license license:gpl3+)))
47d0b292
TS
5255
5256(define-public python2-urwidtrees
5257 (package-with-python2 python-urwidtrees))
5258
d95a56c6
PAR
5259(define-public python-dbus
5260 (package
5261 (name "python-dbus")
5262 (version "1.2.0")
5263 (source
5264 (origin
5265 (method url-fetch)
5266 (uri (string-append
5cc3096c 5267 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5268 version ".tar.gz"))
5269 (sha256
5270 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5271 (build-system gnu-build-system)
6717c879
SB
5272 (arguments
5273 '(#:phases
5274 (modify-phases %standard-phases
5275 (add-before
5276 'check 'pre-check
5277 (lambda _
5278 ;; XXX: For the missing '/etc/machine-id'.
5279 (substitute* "test/run-test.sh"
5280 (("DBUS_FATAL_WARNINGS=1")
5281 "DBUS_FATAL_WARNINGS=0"))
5282 #t)))))
d95a56c6
PAR
5283 (native-inputs
5284 `(("pkg-config" ,pkg-config)))
5285 (inputs
5286 `(("python" ,python)
2e88d113 5287 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5288 (synopsis "Python bindings for D-bus")
5289 (description "python-dbus provides bindings for libdbus, the reference
5290implementation of D-Bus.")
5291 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5292 (license license:expat)))
b52af02b
MW
5293
5294(define-public python2-dbus
5295 (package (inherit python-dbus)
5296 (name "python2-dbus")
5297 (inputs `(("python" ,python-2)
5298 ,@(alist-delete "python"
5299 (package-inputs python-dbus)
5300 equal?)))
5301 ;; FIXME: on Python 2, the test_utf8 fails with:
5302 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5303 (arguments `(#:tests? #f))))
a6ac8332
AE
5304
5305(define-public python-apsw
5306 (package
5307 (name "python-apsw")
917708c2 5308 (version "3.9.2-r1")
a6ac8332
AE
5309 (source
5310 (origin
5311 (method url-fetch)
917708c2 5312 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5313 (sha256
5314 (base32
917708c2 5315 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5316 (build-system python-build-system)
5317 (inputs
f3b98f4f 5318 `(("sqlite" ,sqlite)))
a6ac8332
AE
5319 (arguments
5320 `(#:phases
5321 ;; swap check and install phases
5322 (alist-cons-after
5323 'install 'check
5324 (assoc-ref %standard-phases 'check)
5325 (alist-delete
5326 'check
5327 %standard-phases))))
5328 (home-page "https://github.com/rogerbinns/apsw/")
5329 (synopsis "Another Python SQLite Wrapper")
5330 (description "APSW is a Python wrapper for the SQLite
5331embedded relational database engine. In contrast to other wrappers such as
5332pysqlite it focuses on being a minimal layer over SQLite attempting just to
5333translate the complete SQLite API into Python.")
abde5f37 5334 (license license:zlib)))
a6ac8332
AE
5335
5336(define-public python2-apsw
5337 (package-with-python2 python-apsw))
26b307e2
AE
5338
5339(define-public python-lxml
5340 (package
5341 (name "python-lxml")
d58a3203 5342 (version "3.6.0")
26b307e2
AE
5343 (source
5344 (origin
5345 (method url-fetch)
97bbc480 5346 (uri (pypi-uri "lxml" version))
26b307e2 5347 (sha256
d58a3203
EF
5348 (base32
5349 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5350 (build-system python-build-system)
5351 (inputs
5352 `(("libxml2" ,libxml2)
f3b98f4f 5353 ("libxslt" ,libxslt)))
26b307e2
AE
5354 (home-page "http://lxml.de/")
5355 (synopsis
5356 "Python XML processing library")
5357 (description
5358 "The lxml XML toolkit is a Pythonic binding for the C libraries
5359libxml2 and libxslt.")
3f641af0 5360 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5361
5362(define-public python2-lxml
5363 (package-with-python2 python-lxml))
4ed20663 5364
b32a1e47
CAW
5365;; beautifulsoup4 has a totally different namespace than 3.x,
5366;; and pypi seems to put it under its own name, so I guess we should too
5367(define-public python-beautifulsoup4
5368 (package
5369 (name "python-beautifulsoup4")
67fd4a12 5370 (version "4.5.1")
b32a1e47
CAW
5371 (source
5372 (origin
5373 (method url-fetch)
5374 (uri (pypi-uri "beautifulsoup4" version))
5375 (sha256
5376 (base32
67fd4a12 5377 "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"))))
b32a1e47 5378 (build-system python-build-system)
5f37f0b6
LF
5379 (arguments
5380 `(#:phases
5381 (modify-phases %standard-phases
5382 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5383 ;; must use this conversion script when building with Python 3. The
5384 ;; conversion script also runs the tests.
5385 ;; For more information, see the file 'convert-py3k' in the source
5386 ;; distribution.
5387 (replace 'check
5388 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5389 (home-page
5390 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5391 (synopsis
5392 "Python screen-scraping library")
5393 (description
5394 "Beautiful Soup is a Python library designed for rapidly setting up
5395screen-scraping projects. It offers Pythonic idioms for navigating,
5396searching, and modifying a parse tree, providing a toolkit for
5397dissecting a document and extracting what you need. It automatically
5398converts incoming documents to Unicode and outgoing documents to UTF-8.")
f210e944 5399 (license license:expat)))
b32a1e47
CAW
5400
5401(define-public python2-beautifulsoup4
5402 (package
5403 (inherit (package-with-python2
5404 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 5405 (arguments `(#:python ,python-2))))
b32a1e47 5406
4dcb135e 5407(define-public python-cssutils
092e86f5 5408 (package
4dcb135e 5409 (name "python-cssutils")
58d1d816 5410 (version "1.0.1")
092e86f5
AE
5411 (source
5412 (origin
5413 (method url-fetch)
58d1d816 5414 (uri (pypi-uri "cssutils" version))
092e86f5 5415 (sha256
58d1d816
EF
5416 (base32
5417 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5418 (build-system python-build-system)
5419 (native-inputs
4dcb135e 5420 `(("unzip" ,unzip))) ; for unpacking the source
092e86f5 5421 (arguments
4dcb135e 5422 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
092e86f5
AE
5423 (home-page "http://cthedot.de/cssutils/")
5424 (synopsis
5425 "CSS Cascading Style Sheets library for Python")
5426 (description
5427 "Cssutils is a Python package for parsing and building CSS
5428Cascading Style Sheets. Currently it provides a DOM only and no rendering
5429options.")
3f641af0 5430 (license license:lgpl3+)))
880ff77c 5431
4dcb135e
EB
5432(define-public python2-cssutils
5433 (package-with-python2 python-cssutils))
5434
880ff77c
AE
5435(define-public python-cssselect
5436 (package
5437 (name "python-cssselect")
d5ccd9ab 5438 (version "0.9.2")
880ff77c
AE
5439 (source
5440 (origin
5441 (method url-fetch)
d5ccd9ab 5442 (uri (pypi-uri "cssselect" version))
880ff77c 5443 (sha256
d5ccd9ab
EF
5444 (base32
5445 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 5446 (build-system python-build-system)
880ff77c
AE
5447 (arguments
5448 ;; tests fail with message
5449 ;; AttributeError: 'module' object has no attribute 'tests'
5450 `(#:tests? #f))
5451 (home-page
5452 "https://pythonhosted.org/cssselect/")
5453 (synopsis
5454 "CSS3 selector parser and translator to XPath 1.0")
5455 (description
5456 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5457them to XPath 1.0 expressions. Such expressions can be used in lxml or
5458another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5459 (license license:bsd-3)))
880ff77c
AE
5460
5461(define-public python2-cssselect
5462 (package-with-python2 python-cssselect))
60357f99 5463
03702173 5464(define-public python-openid-cla
5465 (package
5466 (name "python-openid-cla")
5467 (version "1.2")
5468 (source
5469 (origin
5470 (method url-fetch)
5471 (uri (pypi-uri "python-openid-cla" version))
5472 (sha256
5473 (base32
5474 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
5475 (build-system python-build-system)
5476 (home-page "https://github.com/puiterwijk/python-openid-cla/")
5477 (synopsis "Implementation of the OpenID CLA extension for python-openid")
5478 (description "@code{openid-cla} is an implementation of the OpenID
5479contributor license agreement extension for python-openid.")
5480 (license license:bsd-3)))
5481
5482(define-public python2-openid-cla
5483 (package-with-python2 python-openid-cla))
5484
a0e41de4 5485(define-public python-openid-teams
5486 (package
5487 (name "python-openid-teams")
5488 (version "1.1")
5489 (source
5490 (origin
5491 (method url-fetch)
5492 (uri (pypi-uri "python-openid-teams" version))
5493 (sha256
5494 (base32
5495 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
5496 (build-system python-build-system)
5497 (home-page "https://github.com/puiterwijk/python-openid-teams/")
5498 (synopsis "Implementation of the OpenID teams extension for python-openid")
5499 (description
5500 "@code{openid-teams} is an implementation of the OpenID
5501teams extension for python-openid.")
5502 (license license:bsd-3)))
5503
5504(define-public python2-openid-teams
5505 (package-with-python2 python-openid-teams))
5506
60357f99
AE
5507(define-public python-netifaces
5508 (package
5509 (name "python-netifaces")
5510 (version "0.10.4")
5511 (source
5512 (origin
5513 (method url-fetch)
5514 (uri (string-append
5515 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5516 version
5517 ".tar.gz"))
5518 (sha256
5519 (base32
5520 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5521 (build-system python-build-system)
60357f99
AE
5522 (home-page
5523 "https://bitbucket.org/al45tair/netifaces")
5524 (synopsis
5525 "Python module for portable network interface information")
5526 (description
5527 "Netifaces is a Python module providing information on network
5528interfaces in an easy and portable manner.")
5529 (license license:expat)))
5530
5531(define-public python2-netifaces
5532 (package-with-python2 python-netifaces))
92cb152b 5533
32f77c04
RW
5534(define-public python-networkx
5535 (package
5536 (name "python-networkx")
a4d9609c 5537 (version "1.11")
32f77c04
RW
5538 (source
5539 (origin
5540 (method url-fetch)
a4d9609c 5541 (uri (pypi-uri "networkx" version))
32f77c04 5542 (sha256
a4d9609c 5543 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5544 (build-system python-build-system)
5545 ;; python-decorator is needed at runtime
5546 (propagated-inputs
5547 `(("python-decorator" ,python-decorator)))
5548 (native-inputs
f3b98f4f 5549 `(("python-nose" ,python-nose)))
32f77c04
RW
5550 (home-page "http://networkx.github.io/")
5551 (synopsis "Python module for creating and manipulating graphs and networks")
5552 (description
5553 "NetworkX is a Python package for the creation, manipulation, and study
5554of the structure, dynamics, and functions of complex networks.")
3f641af0 5555 (license license:bsd-3)))
32f77c04
RW
5556
5557(define-public python2-networkx
5558 (package-with-python2 python-networkx))
5559
92cb152b
RW
5560(define-public snakemake
5561 (package
5562 (name "snakemake")
5563 (version "3.2.1")
5564 (source
5565 (origin
5566 (method url-fetch)
5567 (uri (string-append
5568 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
5569 version ".tar.gz"))
5570 (sha256
5571 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
5572 (build-system python-build-system)
92cb152b
RW
5573 (home-page "https://bitbucket.org/johanneskoester/snakemake")
5574 (synopsis "Python-based execution environment for make-like workflows")
5575 (description
5576 "Snakemake aims to reduce the complexity of creating workflows by
5577providing a clean and modern domain specific specification language (DSL) in
5578Python style, together with a fast and comfortable execution environment.")
5579 (license license:expat)))
a1920bc9 5580
35de1fbd
RW
5581(define-public python-seaborn
5582 (package
5583 (name "python-seaborn")
ccc18762 5584 (version "0.7.1")
35de1fbd
RW
5585 (source
5586 (origin
5587 (method url-fetch)
fc899d4f 5588 (uri (pypi-uri "seaborn" version))
35de1fbd 5589 (sha256
ccc18762 5590 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
35de1fbd
RW
5591 (build-system python-build-system)
5592 (propagated-inputs
5593 `(("python-pandas" ,python-pandas)
5594 ("python-matplotlib" ,python-matplotlib)
5595 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5596 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5597 (synopsis "Statistical data visualization")
5598 (description
5599 "Seaborn is a library for making attractive and informative statistical
5600graphics in Python. It is built on top of matplotlib and tightly integrated
5601with the PyData stack, including support for numpy and pandas data structures
5602and statistical routines from scipy and statsmodels.")
3f641af0 5603 (license license:bsd-3)
fc899d4f 5604 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5605
5606(define-public python2-seaborn
fc899d4f
EF
5607 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5608 (package
5609 (inherit base)
5610 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 5611 ,@(package-propagated-inputs base))))))
35de1fbd 5612
90fc547f
RW
5613(define-public python-sympy
5614 (package
5615 (name "python-sympy")
5616 (version "0.7.6")
5617 (source
5618 (origin
5619 (method url-fetch)
5620 (uri (string-append
5621 "https://github.com/sympy/sympy/releases/download/sympy-"
5622 version "/sympy-" version ".tar.gz"))
5623 (sha256
5624 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
5625 (build-system python-build-system)
90fc547f
RW
5626 (home-page "http://www.sympy.org/")
5627 (synopsis "Python library for symbolic mathematics")
5628 (description
5629 "SymPy is a Python library for symbolic mathematics. It aims to become a
5630full-featured computer algebra system (CAS) while keeping the code as simple
5631as possible in order to be comprehensible and easily extensible.")
3f641af0 5632 (license license:bsd-3)))
90fc547f
RW
5633
5634(define-public python2-sympy
5635 (package-with-python2 python-sympy))
5636
e8c9b010
SR
5637(define-public python-q
5638 (package
5639 (name "python-q")
5640 (version "2.6")
5641 (source
5642 (origin
5643 (method url-fetch)
5644 (uri (pypi-uri "q" version))
5645 (sha256
5646 (base32
5647 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
5648 (build-system python-build-system)
5649 (home-page "https://github.com/zestyping/q")
5650 (synopsis "Quick-and-dirty debugging output for tired programmers")
5651 (description
5652 "q is a Python module for \"print\" style of debugging Python code. It
5653provides convenient short API for print out of values, tracebacks, and
5654falling into the Python interpreter.")
f210e944 5655 (license license:asl2.0)))
e8c9b010
SR
5656
5657(define-public python2-q
f210e944 5658 (package-with-python2 python-q))
e8c9b010 5659
a1920bc9
FB
5660(define-public python-testlib
5661 (package
5662 (name "python-testlib")
5663 (version "0.6.5")
5664 (source
5665 (origin
5666 (method url-fetch)
5667 (uri (string-append
5668 "https://pypi.python.org/packages/source/t/testlib/testlib-"
5669 version ".zip"))
5670 (sha256
5671 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
5672 (build-system python-build-system)
a1920bc9 5673 (native-inputs
632735f2 5674 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
5675 (synopsis "Python micro test suite harness")
5676 (description "A micro unittest suite harness for Python.")
5677 (home-page "https://github.com/trentm/testlib")
1cb9c006 5678 (license license:expat)))
a1920bc9
FB
5679
5680(define-public python2-testlib
5681 (package-with-python2 python-testlib))
db62afa5
LC
5682
5683(define-public python2-xlib
5684 (package
5685 (name "python2-xlib")
5686 (version "0.14")
5687 (source (origin
5688 (method url-fetch)
de67e922
LF
5689 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
5690 "/" version "/"
db62afa5
LC
5691 "python-xlib-" version ".tar.gz"))
5692 (sha256
5693 (base32
5694 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
5695 (build-system python-build-system)
5696 (arguments
5697 `(#:python ,python-2 ;Python 2 only
5698 #:tests? #f)) ;no tests
db62afa5
LC
5699 (home-page "http://python-xlib.sourceforge.net/")
5700 (synopsis "Python X11 client library")
5701 (description
5702 "The Python X Library is intended to be a fully functional X client
5703library for Python programs. It is useful to implement low-level X clients.
5704It is written entirely in Python.")
3f641af0 5705 (license license:gpl2+)))
0234ca06
DT
5706
5707(define-public python-singledispatch
5708 (package
5709 (name "python-singledispatch")
5710 (version "3.4.0.3")
5711 (source
5712 (origin
5713 (method url-fetch)
bdb67d84 5714 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
5715 (sha256
5716 (base32
5717 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
5718 (build-system python-build-system)
5e1c9d24
HG
5719 (native-inputs
5720 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
5721 (home-page
5722 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
5723 (synopsis "Backport of singledispatch feature from Python 3.4")
5724 (description
5725 "This library brings functools.singledispatch from Python 3.4 to Python
57262.6-3.3.")
5727 (license license:expat)))
5728
5729(define-public python2-singledispatch
5730 (package-with-python2 python-singledispatch))
feaae484 5731
310d218f
RW
5732(define-public python-tornado
5733 (package
5734 (name "python-tornado")
a724924b 5735 (version "4.3")
310d218f
RW
5736 (source
5737 (origin
5738 (method url-fetch)
a724924b 5739 (uri (pypi-uri "tornado" version))
310d218f 5740 (sha256
a724924b 5741 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 5742 (build-system python-build-system)
310d218f 5743 (native-inputs
b455439b 5744 `(("python-certifi" ,python-certifi)))
f22efa01 5745 (propagated-inputs
b455439b 5746 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 5747 (home-page "http://www.tornadoweb.org/")
310d218f
RW
5748 (synopsis "Python web framework and asynchronous networking library")
5749 (description
5750 "Tornado is a Python web framework and asynchronous networking library,
5751originally developed at FriendFeed. By using non-blocking network I/O,
5752Tornado can scale to tens of thousands of open connections, making it ideal
5753for long polling, WebSockets, and other applications that require a long-lived
5754connection to each user.")
3f641af0 5755 (license license:asl2.0)
b455439b 5756 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
5757
5758(define-public python2-tornado
b455439b 5759 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 5760 (package (inherit tornado)
f22efa01 5761 (propagated-inputs
310d218f
RW
5762 `(("python2-backport-ssl-match-hostname"
5763 ,python2-backport-ssl-match-hostname)
b455439b 5764 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 5765 ,@(package-propagated-inputs tornado))))))
310d218f 5766
6b59fc10
EF
5767;; the python- version can be removed with python-3.5
5768(define-public python-backports-abc
5769 (package
5770 (name "python-backports-abc")
27f9148e 5771 (version "0.5")
6b59fc10
EF
5772 (source
5773 (origin
5774 (method url-fetch)
5775 (uri (pypi-uri "backports_abc" version))
5776 (sha256
5777 (base32
27f9148e 5778 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6b59fc10 5779 (build-system python-build-system)
6b59fc10 5780 (home-page "https://github.com/cython/backports_abc")
66e07664 5781 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
5782 (description
5783 "Python-backports-abc provides a backport of additions to the
5784'collections.abc' module in Python-3.5.")
3f641af0 5785 (license license:psfl)))
6b59fc10
EF
5786
5787(define-public python2-backports-abc
5788 (package-with-python2 python-backports-abc))
5789
feaae484
SB
5790(define-public python-waf
5791 (package
5792 (name "python-waf")
7dd55dfe 5793 (version "1.9.5")
feaae484
SB
5794 (source (origin
5795 (method url-fetch)
bae67829 5796 (uri (string-append "https://waf.io/"
feaae484
SB
5797 "waf-" version ".tar.bz2"))
5798 (sha256
5799 (base32
7dd55dfe 5800 "1sl3ipi2czds57rlzjnpdzqa0skx8asfvmh3qmibpvdwf15rpppg"))))
feaae484
SB
5801 (build-system python-build-system)
5802 (arguments
5803 '(#:phases
5804 (modify-phases %standard-phases
5805 (replace 'build
7dd55dfe
EF
5806 (lambda _
5807 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 5808 (replace 'check
7dd55dfe
EF
5809 (lambda _
5810 (zero? (system* "python" "waf" "--version"))))
feaae484 5811 (replace 'install
7dd55dfe
EF
5812 (lambda _
5813 (copy-file "waf" %output))))))
5814 (home-page "http://waf.io/")
feaae484
SB
5815 (synopsis "Python-based build system")
5816 (description
5817 "Waf is a Python-based framework for configuring, compiling and installing
5818applications.")
3f641af0 5819 (license license:bsd-3)))
feaae484
SB
5820
5821(define-public python2-waf
5822 (package-with-python2 python-waf))
45203542
RW
5823
5824(define-public python-pyzmq
5825 (package
5826 (name "python-pyzmq")
3655ee76 5827 (version "15.1.0")
45203542
RW
5828 (source
5829 (origin
5830 (method url-fetch)
3655ee76 5831 (uri (pypi-uri "pyzmq" version))
45203542 5832 (sha256
3655ee76 5833 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5834 (build-system python-build-system)
5835 (arguments
5836 `(#:configure-flags
5837 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5838 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5839 ;; --inplace' for 'python setup.py test' to work.
5840 #:tests? #f))
5841 (inputs
5842 `(("zeromq" ,zeromq)))
5843 (native-inputs
5844 `(("pkg-config" ,pkg-config)
f3b98f4f 5845 ("python-nose" ,python-nose)))
45203542
RW
5846 (home-page "http://github.com/zeromq/pyzmq")
5847 (synopsis "Python bindings for 0MQ")
5848 (description
5849 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 5850 (license license:bsd-4)))
45203542
RW
5851
5852(define-public python2-pyzmq
5853 (package-with-python2 python-pyzmq))
d889e6c4
CR
5854
5855(define-public python-pep8
5856 (package
5857 (name "python-pep8")
db251311 5858 (version "1.7.0")
d889e6c4
CR
5859 (source
5860 (origin
5861 (method url-fetch)
db251311 5862 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5863 (sha256
5864 (base32
db251311 5865 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 5866 (build-system python-build-system)
d889e6c4
CR
5867 (home-page "http://pep8.readthedocs.org/")
5868 (synopsis "Python style guide checker")
5869 (description
5870 "This tools checks Python code against some of the style conventions in
5871PEP 8.")
5872 (license license:expat)))
5873
5874(define-public python2-pep8
5875 (package-with-python2 python-pep8))
e31d7f44
CR
5876
5877(define-public python-pyflakes
5878 (package
5879 (name "python-pyflakes")
2abc3972 5880 (version "1.0.0")
e31d7f44
CR
5881 (source
5882 (origin
5883 (method url-fetch)
2abc3972 5884 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5885 (sha256
5886 (base32
2abc3972 5887 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 5888 (build-system python-build-system)
e31d7f44
CR
5889 (home-page
5890 "https://github.com/pyflakes/pyflakes")
5891 (synopsis "Passive checker of Python programs")
5892 (description
5893 "Pyflakes statically checks Python source code for common errors.")
5894 (license license:expat)))
a59e017c 5895
7261d9eb
CR
5896(define-public python2-pyflakes
5897 (package-with-python2 python-pyflakes))
5898
a59e017c
CR
5899(define-public python-mccabe
5900 (package
5901 (name "python-mccabe")
c6ebd40d 5902 (version "0.4.0")
a59e017c
CR
5903 (source
5904 (origin
5905 (method url-fetch)
c6ebd40d 5906 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5907 (sha256
5908 (base32
c6ebd40d 5909 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 5910 (build-system python-build-system)
328bb95d 5911 (native-inputs
c6ebd40d 5912 `(("python-pytest" ,python-pytest)
f3b98f4f 5913 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
5914 (home-page "https://github.com/flintwork/mccabe")
5915 (synopsis "McCabe checker, plugin for flake8")
5916 (description
5917 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5918complexity of Python source code.")
7362371d 5919 (license license:expat)))
a59e017c
CR
5920
5921(define-public python2-mccabe
5922 (package-with-python2 python-mccabe))
e8df8f47 5923
7477fbb1
CR
5924(define-public python-mccabe-0.2.1
5925 (package (inherit python-mccabe)
5926 (version "0.2.1")
5927 (source
5928 (origin
5929 (method url-fetch)
5930 (uri (pypi-uri "mccabe" version))
5931 (sha256
5932 (base32
f3b98f4f 5933 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
5934
5935(define-public python2-mccabe-0.2.1
5936 (package-with-python2 python-mccabe-0.2.1))
5937
e8df8f47
CR
5938;; Flake8 2.4.1 requires an older version of pep8.
5939;; This should be removed ASAP.
5940(define-public python-pep8-1.5.7
5941 (package (inherit python-pep8)
5942 (version "1.5.7")
5943 (source
5944 (origin
5945 (method url-fetch)
5946 (uri (string-append
5947 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5948 version
5949 ".tar.gz"))
5950 (sha256
5951 (base32
5952 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5953
5954(define-public python2-pep8-1.5.7
5955 (package-with-python2 python-pep8-1.5.7))
5956
5957;; Flake8 2.4.1 requires an older version of pyflakes.
5958;; This should be removed ASAP.
5959(define-public python-pyflakes-0.8.1
5960 (package (inherit python-pyflakes)
5961 (version "0.8.1")
5962 (source
5963 (origin
5964 (method url-fetch)
5965 (uri (string-append
5966 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5967 version
5968 ".tar.gz"))
5969 (sha256
5970 (base32
5971 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5972
5973(define-public python2-pyflakes-0.8.1
7261d9eb 5974 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5975
5976(define-public python-flake8
5977 (package
5978 (name "python-flake8")
43789136 5979 (version "2.5.4")
e8df8f47
CR
5980 (source
5981 (origin
5982 (method url-fetch)
1b995533 5983 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5984 (sha256
5985 (base32
011271c7
HG
5986 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
5987 (modules '((guix build utils)))
5988 (snippet
5989 '(begin
5990 ;; Remove pre-compiled .pyc files from source.
5991 (for-each delete-file-recursively
5992 (find-files "." "__pycache__" #:directories? #t))
5993 (for-each delete-file (find-files "." "\\.pyc$"))
5994 #t))))
e8df8f47 5995 (build-system python-build-system)
482d9591 5996 (propagated-inputs
f3b98f4f 5997 `(("python-pep8" ,python-pep8)
43789136 5998 ("python-pyflakes" ,python-pyflakes)
482d9591 5999 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
6000 (native-inputs
6001 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
6002 ("python-nose" ,python-nose)))
6003 (home-page "https://gitlab.com/pycqa/flake8")
6004 (synopsis
6005 "The modular source code checker: pep8, pyflakes and co")
6006 (description
6007 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
6008 (license license:expat)))
6009
6010(define-public python2-flake8
6011 (package-with-python2 python-flake8))
61b9ac53 6012
abf21efc
CR
6013;; This will only be needed by the python-hacking package and will not be
6014;; necessary once python-hacking > 0.10.2 is released.
6015(define-public python-flake8-2.2.4
6016 (package (inherit python-flake8)
482d9591 6017 (propagated-inputs
f3b98f4f 6018 `(("python-pep8" ,python-pep8-1.5.7)
abf21efc 6019 ("python-pyflakes" ,python-pyflakes-0.8.1)
482d9591 6020 ("python-mccabe" ,python-mccabe-0.2.1)))
328bb95d 6021 (native-inputs
482d9591 6022 `(("python-mock" ,python-mock)
abf21efc
CR
6023 ("python-nose" ,python-nose)))
6024 (version "2.2.4")
6025 (source
6026 (origin
6027 (method url-fetch)
6028 (uri (pypi-uri "flake8" version))
6029 (sha256
6030 (base32
b9c8ccce
HG
6031 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
6032 (modules '((guix build utils)))
6033 (snippet
6034 '(begin
6035 ;; Remove pre-compiled .pyc files from source.
6036 (for-each delete-file-recursively
6037 (find-files "." "__pycache__" #:directories? #t))
6038 (for-each delete-file (find-files "." "\\.pyc$"))
6039 #t))))))
abf21efc
CR
6040
6041(define-public python2-flake8-2.2.4
6042 (package-with-python2 python-flake8-2.2.4))
6043
1f42d824
MFM
6044(define-public python-flake8-polyfill
6045 (package
6046 (name "python-flake8-polyfill")
6047 (version "1.0.1")
6048 (source
6049 (origin
6050 (method url-fetch)
6051 (uri (pypi-uri "flake8-polyfill" version))
6052 (sha256
6053 (base32
6054 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
6055 (build-system python-build-system)
6056 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
6057 (synopsis "Polyfill package for Flake8 plugins")
6058 (description
6059 "This package that provides some compatibility helpers for Flake8
6060plugins that intend to support Flake8 2.x and 3.x simultaneously.")
6061 (license license:expat)))
6062
6063(define-public python2-flake8-polyfill
6064 (package-with-python2 python-flake8-polyfill))
6065
61b9ac53
FB
6066(define-public python-mistune
6067 (package
6068 (name "python-mistune")
08b81336 6069 (version "0.7.3")
61b9ac53
FB
6070 (source
6071 (origin
6072 (method url-fetch)
eff8d773 6073 (uri (pypi-uri "mistune" version))
61b9ac53
FB
6074 (sha256
6075 (base32
08b81336 6076 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
61b9ac53 6077 (build-system python-build-system)
328bb95d 6078 (native-inputs
f3b98f4f 6079 `(("python-nose" ,python-nose)
61b9ac53
FB
6080 ("python-cython" ,python-cython)))
6081 (home-page "https://github.com/lepture/mistune")
6082 (synopsis "Markdown parser in pure Python")
6083 (description "This package provides a fast markdown parser in pure
6084Python.")
3f641af0 6085 (license license:bsd-3)))
61b9ac53
FB
6086
6087(define-public python2-mistune
6088 (package-with-python2 python-mistune))
6d992d07 6089
b9893908
EE
6090(define-public python-markdown
6091 (package
6092 (name "python-markdown")
791ac6a6 6093 (version "2.6.7")
b9893908
EE
6094 (source
6095 (origin
6096 (method url-fetch)
6097 (uri (pypi-uri "Markdown" version))
6098 (sha256
6099 (base32
791ac6a6 6100 "1h055llfd0ps0ig7qb3v1j9068xv90dc9s7xkhkgz9zg8r4g5sys"))))
b9893908
EE
6101 (build-system python-build-system)
6102 (arguments
6103 `(#:phases
6104 (modify-phases %standard-phases
6105 (replace 'check
6106 (lambda _
6107 (zero? (system* "python" "run-tests.py")))))))
6108 (native-inputs
6109 `(("python-nose" ,python-nose)
6110 ("python-pyyaml" ,python-pyyaml)))
6111 (home-page "https://pythonhosted.org/Markdown/")
6112 (synopsis "Python implementation of Markdown")
6113 (description
6114 "This package provides a Python implementation of John Gruber's
6115Markdown. The library features international input, various Markdown
6116extensions, and several HTML output formats. A command line wrapper
6117markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 6118 (license license:bsd-3)))
b9893908
EE
6119
6120(define-public python2-markdown
6121 (package-with-python2 python-markdown))
6122
6d992d07
FB
6123(define-public python-ptyprocess
6124 (package
6125 (name "python-ptyprocess")
6126 (version "0.5")
6127 (source
6128 (origin
6129 (method url-fetch)
6130 (uri (string-append
6131 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
6132 version ".tar.gz"))
6133 (sha256
6134 (base32
6135 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
6136 (build-system python-build-system)
328bb95d 6137 (native-inputs
f3b98f4f 6138 `(("python-nose" ,python-nose)))
6d992d07
FB
6139 (arguments
6140 `(#:phases
6141 (modify-phases %standard-phases
6142 (replace 'check
6143 (lambda _
6144 (zero? (system* "nosetests")))))))
6145 (home-page "https://github.com/pexpect/ptyprocess")
6146 (synopsis "Run a subprocess in a pseudo terminal")
6147 (description
6148 "This package provides a Python library used to launch a subprocess in a
6149pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 6150 (license license:isc)))
6d992d07
FB
6151
6152(define-public python2-ptyprocess
6153 (package-with-python2 python-ptyprocess))
4aadb1df 6154
df893a38
MB
6155(define-public python-cram
6156 (package
6157 (name "python-cram")
6158 (version "0.7")
6159 (home-page "https://bitheap.org/cram/")
6160 (source (origin
6161 (method url-fetch)
6162 (uri (list (string-append home-page "cram-"
6163 version ".tar.gz")
6164 (pypi-uri "cram" version)))
6165 (sha256
6166 (base32
6167 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
6168 (arguments
6169 '(#:phases
6170 (modify-phases %standard-phases
6171 (add-after 'unpack 'patch-source
6172 (lambda _
6173 (substitute* (find-files "cram" ".*\\.py$")
6174 ;; Replace default shell path.
6175 (("/bin/sh") (which "sh")))
6176 (substitute* (find-files "tests" ".*\\.t$")
6177 (("md5") "md5sum")
6178 (("/bin/bash") (which "bash"))
6179 (("/bin/sh") (which "sh")))
6180 (substitute* "cram/_test.py"
6181 ;; This hack works around a bug triggered by substituting
6182 ;; the /bin/sh paths. "tests/usage.t" compares the output of
6183 ;; "cram -h", which breaks the output at 80 characters. This
6184 ;; causes the line showing the default shell to break into two
6185 ;; lines, but the test expects a single line...
6186 (("env\\['COLUMNS'\\] = '80'")
6187 "env['COLUMNS'] = '160'"))
6188 #t))
6189 (delete 'check)
6190 (add-after 'install 'check
6191 ;; The test phase uses the built library and executable.
6192 ;; It's easier to run it after install since the build
6193 ;; directory contains version-specific PATH.
6194 (lambda* (#:key inputs outputs #:allow-other-keys)
6195 (add-installed-pythonpath inputs outputs)
6196 (setenv "PATH" (string-append (getenv "PATH") ":"
6197 (assoc-ref outputs "out") "/bin"))
6198 (zero? (system* "make" "test")))))))
6199 (build-system python-build-system)
6200 (native-inputs
6201 `(("python-coverage" ,python-coverage)
6202 ("which" ,which)))
6203 (synopsis "Simple testing framework for command line applications")
6204 (description
6205 "Cram is a functional testing framework for command line applications.
6206Cram tests look like snippets of interactive shell sessions. Cram runs each
6207command and compares the command output in the test with the command’s actual
6208output.")
6209 (license license:gpl2+)))
6210
6211(define-public python2-cram
6212 (package-with-python2 python-cram))
6213
4aadb1df
FB
6214(define-public python-terminado
6215 (package
6216 (name "python-terminado")
783fb0a3 6217 (version "0.6")
4aadb1df
FB
6218 (source
6219 (origin
6220 (method url-fetch)
783fb0a3 6221 (uri (pypi-uri "terminado" version))
4aadb1df
FB
6222 (sha256
6223 (base32
783fb0a3 6224 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
6225 (build-system python-build-system)
6226 (propagated-inputs
6227 `(("python-tornado" ,python-tornado)
6228 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
6229 (native-inputs
6230 `(("python-nose" ,python-nose)))
4aadb1df
FB
6231 (arguments
6232 `(#:phases
6233 (modify-phases %standard-phases
6234 (replace 'check
6235 (lambda _
6236 (zero? (system* "nosetests")))))))
6237 (home-page "https://github.com/takluyver/terminado")
6238 (synopsis "Terminals served to term.js using Tornado websockets")
6239 (description "This package provides a Tornado websocket backend for the
6240term.js Javascript terminal emulator library.")
3f641af0 6241 (license license:bsd-2)
783fb0a3 6242 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
6243
6244(define-public python2-terminado
783fb0a3 6245 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 6246 (package (inherit terminado)
783fb0a3
EF
6247 (propagated-inputs
6248 `(("python2-backport-ssl-match-hostname"
6249 ,python2-backport-ssl-match-hostname)
00e10c6e 6250 ,@(package-propagated-inputs terminado))))))
5faa5ce4 6251
789de5e2 6252(define-public python-straight-plugin
6253 (package
6254 (name "python-straight-plugin")
6255 (version "1.4.1")
6256 (source
6257 (origin
6258 (method url-fetch)
6259 (uri (pypi-uri "straight.plugin" version))
6260 (sha256
6261 (base32
6262 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6263 (build-system python-build-system)
6264 (home-page "https://github.com/ironfroggy/straight.plugin")
6265 (synopsis "Simple namespaced plugin facility")
6266 (description "Straight Plugin provides a type of plugin you can create from
6267almost any existing Python modules, and an easy way for outside developers to
6268add functionality and customization to your projects with their own plugins.")
6269 (license license:expat)))
6270
6271(define-public python2-straight-plugin
6272 (package-with-python2 python-straight-plugin))
6273
d582eaac
SB
6274(define-public python-fonttools
6275 (package
6276 (name "python-fonttools")
6277 (version "2.5")
6278 (source (origin
6279 (method url-fetch)
6280 (uri (string-append
6281 "https://pypi.python.org/packages/source/F/FontTools/"
6282 "fonttools-" version ".tar.gz"))
6283 (sha256
6284 (base32
6285 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
6286 (build-system python-build-system)
9e8c6a37
HG
6287 (arguments
6288 '(#:test-target "check"
6289 #:phases
6290 (modify-phases %standard-phases
6291 (add-after 'unpack 'patch-setuppy
6292 ;; Remove the undocumented "extra_path" argument, which adds an
6293 ;; intervening directories between site-packages and the package
6294 ;; directory.
6295 (lambda _
6296 (substitute* "setup.py"
6297 (("^[ \t]*extra_path *= *'FontTools',") ""))
6298 #t)))))
d582eaac
SB
6299 (home-page "http://github.com/behdad/fonttools")
6300 (synopsis "Tools to manipulate font files")
6301 (description
6302 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 6303supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
6304of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6305also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6306from an XML-based format.")
3f641af0
DC
6307 (license (license:non-copyleft
6308 "file://LICENSE.txt"
6309 "See LICENSE.txt in the distribution."))))
d582eaac
SB
6310
6311(define-public python2-fonttools
6312 (package-with-python2 python-fonttools))
75710da6 6313
5faa5ce4
RW
6314(define-public python-ly
6315 (package
6316 (name "python-ly")
5135354f 6317 (version "0.9.4")
5faa5ce4
RW
6318 (source
6319 (origin
6320 (method url-fetch)
5135354f
RW
6321 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6322 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6323 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
6324 (sha256
6325 (base32
5135354f 6326 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 6327 (build-system python-build-system)
5faa5ce4
RW
6328 (synopsis "Tool and library for manipulating LilyPond files")
6329 (description "This package provides a Python library to parse, manipulate
6330or create documents in LilyPond format. A command line program ly is also
6331provided that can be used to do various manipulations with LilyPond files.")
6332 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 6333 (license license:gpl2+)))
7e7b27d9
CR
6334
6335(define-public python-appdirs
6336 (package
6337 (name "python-appdirs")
6338 (version "1.4.0")
6339 (source
6340 (origin
6341 (method url-fetch)
6342 (uri (string-append
6343 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
6344 version
6345 ".tar.gz"))
6346 (sha256
6347 (base32
6348 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
6349 (build-system python-build-system)
7e7b27d9
CR
6350 (home-page "http://github.com/ActiveState/appdirs")
6351 (synopsis
6352 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6353 (description
6354 "This module provides a portable way of finding out where user data
6355should be stored on various operating systems.")
6356 (license license:expat)))
6357
6358(define-public python2-appdirs
6359 (package-with-python2 python-appdirs))
89b2e0b0
LF
6360
6361(define-public python-llfuse
6362 (package
6363 (name "python-llfuse")
e36ace36 6364 (version "1.1.1")
89b2e0b0
LF
6365 (source (origin
6366 (method url-fetch)
6367 (uri (string-append
6368 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6369 "llfuse-" version ".tar.bz2"))
6370 (sha256
6371 (base32
e36ace36 6372 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6373 (build-system python-build-system)
6374 (inputs
6375 `(("fuse" ,fuse)
6376 ("attr" ,attr)))
6377 (native-inputs
f3b98f4f 6378 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
6379 (synopsis "Python bindings for FUSE")
6380 (description
6381 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6382 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6383 (license license:lgpl2.0+)
cd0569c4 6384 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6385
6386(define-public python2-llfuse
cd0569c4
LF
6387 (package (inherit (package-with-python2
6388 (strip-python2-variant python-llfuse)))
6389 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6390
6391;; For attic-0.16
6392(define-public python-llfuse-0.41
6393 (package (inherit python-llfuse)
229b3661 6394 (version "0.41.1")
cd0569c4
LF
6395 (source (origin
6396 (method url-fetch)
6397 (uri (string-append
6398 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6399 "llfuse-" version ".tar.bz2"))
6400 (sha256
6401 (base32
229b3661 6402 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6403 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6404 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6405 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6406
6407(define-public python-msgpack
6408 (package
6409 (name "python-msgpack")
aed625bd 6410 (version "0.4.8")
641c9871
LF
6411 (source (origin
6412 (method url-fetch)
ae831df4 6413 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6414 (sha256
6415 (base32
aed625bd 6416 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6417 (build-system python-build-system)
641c9871
LF
6418 (synopsis "MessagePack (de)serializer")
6419 (description "MessagePack is a fast, compact binary serialization format,
6420suitable for similar data to JSON. This package provides CPython bindings for
6421reading and writing MessagePack data.")
6422 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 6423 (license license:asl2.0)))
bd74be7b
LF
6424
6425(define-public python2-msgpack
f210e944 6426 (package-with-python2 python-msgpack))
641c9871 6427
6e5e39f4
CR
6428(define-public python-netaddr
6429 (package
6430 (name "python-netaddr")
6431 (version "0.7.18")
6432 (source
6433 (origin
6434 (method url-fetch)
6435 (uri (string-append
6436 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6437 version
6438 ".tar.gz"))
6439 (sha256
6440 (base32
6441 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6442 (build-system python-build-system)
6443 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
6444 (home-page "https://github.com/drkjam/netaddr/")
6445 (synopsis "Pythonic manipulation of network addresses")
6446 (description
6447 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6448and MAC network addresses.")
3f641af0 6449 (license license:bsd-3)))
6e5e39f4
CR
6450
6451(define-public python2-netaddr
6452 (package-with-python2 python-netaddr))
8c692a52
CR
6453
6454(define-public python-wrapt
6455 (package
6456 (name "python-wrapt")
6457 (version "1.10.5")
6458 (source
6459 (origin
6460 (method url-fetch)
6461 (uri (string-append
6462 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
6463 version
6464 ".tar.gz"))
6465 (sha256
6466 (base32
6467 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
6468 (build-system python-build-system)
6469 (arguments
6470 ;; Tests are not included in the tarball, they are only available in the
6471 ;; git repository.
6472 `(#:tests? #f))
8c692a52
CR
6473 (home-page "https://github.com/GrahamDumpleton/wrapt")
6474 (synopsis "Module for decorators, wrappers and monkey patching")
6475 (description
6476 "The aim of the wrapt module is to provide a transparent object proxy for
6477 Python, which can be used as the basis for the construction of function
6478 wrappers and decorator functions.")
3f641af0 6479 (license license:bsd-2)))
8c692a52
CR
6480
6481(define-public python2-wrapt
6482 (package-with-python2 python-wrapt))
b85c85be
CR
6483
6484(define-public python-iso8601
6485 (package
6486 (name "python-iso8601")
fe84bc9a 6487 (version "0.1.11")
b85c85be
CR
6488 (source
6489 (origin
6490 (method url-fetch)
fe84bc9a 6491 (uri (pypi-uri "iso8601" version))
b85c85be 6492 (sha256
fe84bc9a
EF
6493 (base32
6494 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 6495 (build-system python-build-system)
b85c85be
CR
6496 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6497 (synopsis "Module to parse ISO 8601 dates")
6498 (description
6499 "This module parses the most common forms of ISO 8601 date strings (e.g.
6500@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6501 (license license:expat)))
6502
6503(define-public python2-iso8601
6504 (package-with-python2 python-iso8601))
5e412b63
CR
6505
6506(define-public python-monotonic
6507 (package
6508 (name "python-monotonic")
6509 (version "0.3")
6510 (source
6511 (origin
6512 (method url-fetch)
6513 (uri (string-append
6514 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6515 version
6516 ".tar.gz"))
6517 (sha256
6518 (base32
6519 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6520 (build-system python-build-system)
5e412b63
CR
6521 (home-page "https://github.com/atdt/monotonic")
6522 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6523 (description
6524 "This module provides a monotonic() function which returns the value (in
6525fractional seconds) of a clock which never goes backwards.")
3f641af0 6526 (license license:asl2.0)))
5e412b63
CR
6527
6528(define-public python2-monotonic
6529 (package-with-python2 python-monotonic))
de34afac
CR
6530
6531(define-public python-webob
6532 (package
6533 (name "python-webob")
b8834c21 6534 (version "1.5.1")
de34afac
CR
6535 (source
6536 (origin
6537 (method url-fetch)
b8834c21 6538 (uri (pypi-uri "WebOb" version))
de34afac
CR
6539 (sha256
6540 (base32
b8834c21 6541 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 6542 (build-system python-build-system)
328bb95d 6543 (native-inputs
f3b98f4f 6544 `(("python-nose" ,python-nose)))
de34afac
CR
6545 (home-page "http://webob.org/")
6546 (synopsis "WSGI request and response object")
6547 (description
6548 "WebOb provides wrappers around the WSGI request environment, and an
6549object to help create WSGI responses.")
6550 (license license:expat)))
6551
6552(define-public python2-webob
6553 (package-with-python2 python-webob))
350ba0a3 6554
02a8a187
BW
6555(define-public python-xlrd
6556 (package
6557 (name "python-xlrd")
c2ad4d70 6558 (version "1.0.0")
02a8a187
BW
6559 (source (origin
6560 (method url-fetch)
e775f48e 6561 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6562 (sha256
6563 (base32
c2ad4d70 6564 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6565 (build-system python-build-system)
6566 (arguments
6567 `(#:phases
6568 (modify-phases %standard-phases
c2ad4d70 6569 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6570 ;; run tests instead for now.
6571 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 6572 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
6573 (home-page "http://www.python-excel.org/")
6574 (synopsis "Library for extracting data from Excel files")
6575 (description "This packages provides a library to extract data from
c598e35c 6576spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
6577@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
6578Unicode-aware. It is not intended as an end-user tool.")
3f641af0 6579 (license license:bsd-3)))
02a8a187
BW
6580
6581(define-public python2-xlrd
6582 (package-with-python2 python-xlrd))
6583
350ba0a3
CR
6584(define-public python-prettytable
6585 (package
6586 (name "python-prettytable")
6587 (version "0.7.2")
6588 (source
6589 (origin
6590 (method url-fetch)
6591 (uri (string-append
6592 "https://pypi.python.org/packages/source/P/PrettyTable/"
6593 "prettytable-" version ".tar.bz2"))
6594 (sha256
6595 (base32
6596 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
6597 (build-system python-build-system)
350ba0a3
CR
6598 (home-page "http://code.google.com/p/prettytable/")
6599 (synopsis "Display tabular data in an ASCII table format")
6600 (description
6601 "A library designed to represent tabular data in visually appealing ASCII
6602tables. PrettyTable allows for selection of which columns are to be printed,
6603independent alignment of columns (left or right justified or centred) and
6604printing of sub-tables by specifying a row range.")
3f641af0 6605 (license license:bsd-3)))
350ba0a3
CR
6606
6607(define-public python2-prettytable
6608 (package-with-python2 python-prettytable))
7a8ac75a 6609
9f8ee3fe
RW
6610(define-public python-tables
6611 (package
6612 (name "python-tables")
6613 (version "3.2.2")
6614 (source
6615 (origin
6616 (method url-fetch)
6617 (uri (pypi-uri "tables" version))
6618 (sha256
6619 (base32
bac23672
HG
6620 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
6621 (modules '((guix build utils)))
6622 (snippet
6623 '(begin
6624 ;; Remove pre-compiled .pyc files from source.
6625 (for-each delete-file-recursively
6626 (find-files "." "__pycache__" #:directories? #t))
6627 (for-each delete-file (find-files "." "\\.pyc$"))
6628 #t))))
9f8ee3fe
RW
6629 (build-system python-build-system)
6630 (arguments
6631 `(;; FIXME: python-build-system does not pass configure-flags to "build"
6632 ;; or "check", so we must override the build and check phases.
6633 #:phases
6634 (modify-phases %standard-phases
6635 (add-after 'unpack 'use-gcc
6636 (lambda _
6637 (substitute* "setup.py"
6638 (("compiler = new_compiler\\(\\)" line)
6639 (string-append line
6640 "\ncompiler.set_executables(compiler='gcc',"
6641 "compiler_so='gcc',"
6642 "linker_exe='gcc',"
6643 "linker_so='gcc -shared')")))
6644 #t))
6645 (replace 'build
6646 (lambda* (#:key inputs #:allow-other-keys)
6647 (zero? (system* "python" "setup.py" "build"
6648 (string-append "--hdf5="
6649 (assoc-ref inputs "hdf5"))))))
6650 (replace 'check
6651 (lambda* (#:key inputs #:allow-other-keys)
6652 (zero? (system* "python" "setup.py" "check"
6653 (string-append "--hdf5="
6654 (assoc-ref inputs "hdf5")))))))))
6655 (propagated-inputs
6656 `(("python-numexpr" ,python-numexpr)
6657 ("python-numpy" ,python-numpy)))
6658 (native-inputs
f3b98f4f 6659 `(("python-cython" ,python-cython)
9f8ee3fe
RW
6660 ("pkg-config" ,pkg-config)))
6661 (inputs
6662 `(("hdf5" ,hdf5)
6663 ("bzip2" ,bzip2)
6664 ("zlib" ,zlib)))
6665 (home-page "http://www.pytables.org/")
6666 (synopsis "Hierarchical datasets for Python")
6667 (description "PyTables is a package for managing hierarchical datasets and
6668designed to efficently cope with extremely large amounts of data.")
3f641af0 6669 (license license:bsd-3)))
9f8ee3fe
RW
6670
6671(define-public python2-tables
6672 (package-with-python2 python-tables))
6673
7a8ac75a
RW
6674(define-public python-pyasn1
6675 (package
6676 (name "python-pyasn1")
caa0edb3 6677 (version "0.1.9")
7a8ac75a
RW
6678 (source
6679 (origin
6680 (method url-fetch)
caa0edb3 6681 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
6682 (sha256
6683 (base32
caa0edb3 6684 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
6685 (build-system python-build-system)
6686 (home-page "http://pyasn1.sourceforge.net/")
6687 (synopsis "ASN.1 types and codecs")
6688 (description
6689 "This is an implementation of ASN.1 types and codecs in Python. It is
6690suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 6691 (license license:bsd-2)))
7a8ac75a
RW
6692
6693(define-public python2-pyasn1
6694 (package-with-python2 python-pyasn1))
9a49a535 6695
5988c299
EF
6696(define-public python-pyasn1-modules
6697 (package
6698 (name "python-pyasn1-modules")
6699 (version "0.0.8")
6700 (source
6701 (origin
6702 (method url-fetch)
6703 (uri (pypi-uri "pyasn1-modules" version))
6704 (sha256
6705 (base32
6706 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
6707 (build-system python-build-system)
5988c299
EF
6708 (propagated-inputs
6709 `(("python-pyasn1" ,python-pyasn1)))
3b3b60d0 6710 (home-page "https://sourceforge.net/projects/pyasn1/")
5988c299
EF
6711 (synopsis "ASN.1 codec implementations")
6712 (description
6713 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
6714implementations of ASN.1-based codecs and protocols.")
3f641af0 6715 (license license:bsd-3)))
5988c299
EF
6716
6717(define-public python2-pyasn1-modules
6718 (package-with-python2 python-pyasn1-modules))
6719
520af157 6720(define-public python-ipaddress
9a49a535 6721 (package
520af157
DC
6722 (name "python-ipaddress")
6723 (version "1.0.16")
6724 (source (origin
6725 (method url-fetch)
6726 (uri (pypi-uri "ipaddress" version))
6727 (sha256
6728 (base32
6729 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 6730 (build-system python-build-system)
9a49a535
RW
6731 (home-page "https://github.com/phihag/ipaddress")
6732 (synopsis "IP address manipulation library")
6733 (description
520af157
DC
6734 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
6735 in Python. This library is used to create, poke at, and manipulate IPv4 and
6736 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
6737 module to older versions of Python.")
f210e944 6738 (license license:psfl)))
520af157
DC
6739
6740(define-public python2-ipaddress
f210e944 6741 (package-with-python2 python-ipaddress))
3f00e078 6742
4a238186
HG
6743(define-public python2-ipaddr
6744 (package
6745 (name "python2-ipaddr")
6746 (version "2.1.11")
6747 (source
6748 (origin
6749 (method url-fetch)
6750 (uri (pypi-uri "ipaddr" version))
6751 (sha256
6752 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
6753 (build-system python-build-system)
6754 (arguments
6755 `(#:python ,python-2 ;version 2 only
6756 #:phases
6757 (modify-phases %standard-phases
6758 (replace 'check
6759 (lambda* _
6760 (zero? (system* "python" "ipaddr_test.py")))))))
6761 (home-page "https://github.com/google/ipaddr-py")
6762 (synopsis "IP address manipulation library")
6763 (description
6764 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
6765IPv6 addresses and networks.
6766
6767For new implementations you may prefer to use the standard module
6768@code{ipaddress}, which was introduced in Python 3.3 and backported to older
6769versions of Python.")
3f641af0 6770 (license license:asl2.0)))
4a238186 6771
3f00e078
RW
6772(define-public python-idna
6773 (package
6774 (name "python-idna")
6775 (version "2.0")
6776 (source
6777 (origin
6778 (method url-fetch)
6779 (uri (string-append "https://pypi.python.org/packages/source/i/"
6780 "idna/idna-" version ".tar.gz"))
6781 (sha256
6782 (base32
6783 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
6784 (build-system python-build-system)
3f00e078
RW
6785 (home-page "https://github.com/kjd/idna")
6786 (synopsis "Internationalized domain names in applications")
6787 (description
6788 "This is a library to support the Internationalised Domain Names in
6789Applications (IDNA) protocol as specified in RFC 5891. This version of the
6790protocol is often referred to as “IDNA2008” and can produce different results
6791from the earlier standard from 2003. The library is also intended to act as a
6792suitable drop-in replacement for the “encodings.idna” module that comes with
6793the Python standard library but currently only supports the older 2003
6794specification.")
3f641af0 6795 (license license:bsd-4)))
3f00e078
RW
6796
6797(define-public python2-idna
6798 (package-with-python2 python-idna))
36ebf972
RW
6799
6800(define-public python-pretend
6801 (package
6802 (name "python-pretend")
6803 (version "1.0.8")
6804 (source
6805 (origin
6806 (method url-fetch)
6807 (uri (string-append "https://pypi.python.org/packages/source/p/"
6808 "pretend/pretend-" version ".tar.gz"))
6809 (sha256
6810 (base32
6811 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
6812 (build-system python-build-system)
36ebf972
RW
6813 (home-page "https://github.com/alex/pretend")
6814 (synopsis "Library for stubbing in Python")
6815 (description
6816 "Pretend is a library to make stubbing with Python easier. Stubbing is a
6817technique for writing tests. You may hear the term mixed up with mocks,
6818fakes, or doubles. Basically, a stub is an object that returns pre-canned
6819responses, rather than doing any computation.")
3f641af0 6820 (license license:bsd-3)))
36ebf972
RW
6821
6822(define-public python2-pretend
6823 (package-with-python2 python-pretend))
aa759a51
RW
6824
6825(define-public python-cryptography-vectors
6826 (package
6827 (name "python-cryptography-vectors")
27fab2bf 6828 (version "1.7.1")
aa759a51
RW
6829 (source
6830 (origin
6831 (method url-fetch)
9c509ca9 6832 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
6833 (sha256
6834 (base32
27fab2bf 6835 "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
aa759a51 6836 (build-system python-build-system)
aa759a51 6837 (home-page "https://github.com/pyca/cryptography")
66e07664 6838 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
6839 (description
6840 "This package contains test vectors for the cryptography package.")
6841 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6842 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
6843
6844(define-public python2-cryptography-vectors
6845 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
6846
6847(define-public python-cryptography
6848 (package
6849 (name "python-cryptography")
27fab2bf 6850 (version "1.7.1")
88b47cb0
RW
6851 (source
6852 (origin
6853 (method url-fetch)
9c509ca9 6854 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
6855 (sha256
6856 (base32
27fab2bf 6857 "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
88b47cb0
RW
6858 (build-system python-build-system)
6859 (inputs
6860 `(("openssl" ,openssl)))
6861 (propagated-inputs
6862 `(("python-cffi" ,python-cffi)
6863 ("python-six" ,python-six)
6864 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6865 ("python-idna" ,python-idna)
6866 ("python-iso8601" ,python-iso8601)))
6867 (native-inputs
6868 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6869 ("python-hypothesis" ,python-hypothesis)
88b47cb0 6870 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6871 ("python-pyasn1" ,python-pyasn1)
6872 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad
MB
6873 ("python-pytz" ,python-pytz)
6874 ("python-pytest" ,python-pytest-2.9.2)))
88b47cb0
RW
6875 (home-page "https://github.com/pyca/cryptography")
6876 (synopsis "Cryptographic recipes and primitives for Python")
6877 (description
6878 "cryptography is a package which provides cryptographic recipes and
6879primitives to Python developers. It aims to be the “cryptographic standard
6880library” for Python. The package includes both high level recipes, and low
6881level interfaces to common cryptographic algorithms such as symmetric ciphers,
6882message digests and key derivation functions.")
6883 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6884 (license (list license:bsd-3 license:asl2.0))
519e2f4f 6885 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6886
6887(define-public python2-cryptography
519e2f4f
LF
6888 (let ((crypto (package-with-python2
6889 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6890 (package (inherit crypto)
6891 (propagated-inputs
6892 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6893 ("python2-backport-ssl-match-hostname"
6894 ,python2-backport-ssl-match-hostname)
68f1cdec 6895 ("python2-enum34" ,python2-enum34)
88b47cb0 6896 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6897
6898(define-public python-pyopenssl
6899 (package
6900 (name "python-pyopenssl")
61684de2 6901 (version "16.2.0")
5af999b8
RW
6902 (source
6903 (origin
6904 (method url-fetch)
eb68d268 6905 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
6906 (sha256
6907 (base32
61684de2 6908 "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp"))))
5af999b8 6909 (build-system python-build-system)
5af999b8
RW
6910 (propagated-inputs
6911 `(("python-cryptography" ,python-cryptography)
6912 ("python-six" ,python-six)))
6913 (inputs
6914 `(("openssl" ,openssl)))
5af999b8
RW
6915 (home-page "https://github.com/pyca/pyopenssl")
6916 (synopsis "Python wrapper module around the OpenSSL library")
6917 (description
6918 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6919library.")
3f641af0 6920 (license license:asl2.0)))
5af999b8
RW
6921
6922(define-public python2-pyopenssl
519e2f4f 6923 (package-with-python2 python-pyopenssl))
643725a1
CR
6924
6925(define-public python-pip
6926 (package
6927 (name "python-pip")
392c26b0 6928 (version "9.0.1")
643725a1
CR
6929 (source
6930 (origin
6931 (method url-fetch)
6fb54e3b 6932 (uri (pypi-uri "pip" version))
643725a1
CR
6933 (sha256
6934 (base32
392c26b0 6935 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
643725a1 6936 (build-system python-build-system)
392c26b0
MC
6937 (arguments
6938 '(#:tests? #f)) ; there are no tests in the pypi archive.
643725a1 6939 (home-page "https://pip.pypa.io/")
392c26b0 6940 (synopsis "Package manager for Python software")
643725a1 6941 (description
392c26b0 6942 "Pip is a package manager for Python software, that finds packages on the
643725a1
CR
6943Python Package Index (PyPI).")
6944 (license license:expat)))
6945
6946(define-public python2-pip
6947 (package-with-python2 python-pip))
d8c4998f
LC
6948
6949(define-public python-tlsh
6950 (package
6951 (name "python-tlsh")
99b00dc7 6952 (version "3.4.4")
d8c4998f
LC
6953 (home-page "https://github.com/trendmicro/tlsh")
6954 (source (origin
99b00dc7
EF
6955 (method url-fetch)
6956 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6957 version ".tar.gz"))
d8c4998f
LC
6958 (sha256
6959 (base32
99b00dc7
EF
6960 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6961 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6962 (build-system cmake-build-system)
6963 (arguments
6964 '(#:out-of-source? #f
6965 #:phases (modify-phases %standard-phases
6966 (replace
6967 'install
6968 (lambda* (#:key outputs #:allow-other-keys)
6969 ;; Build and install the Python bindings. The underlying
6970 ;; C++ library is apparently not meant to be installed.
6971 (let ((out (assoc-ref outputs "out")))
6972 (with-directory-excursion "py_ext"
6973 (and (system* "python" "setup.py" "build")
6974 (system* "python" "setup.py" "install"
6975 (string-append "--prefix=" out))))))))))
6976 (inputs `(("python" ,python-wrapper))) ;for the bindings
6977 (synopsis "Fuzzy matching library for Python")
6978 (description
6979 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6980Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6981value which can be used for similarity comparisons. Similar objects have
6982similar hash values, which allows for the detection of similar objects by
6983comparing their hash values. The byte stream should have a sufficient amount
6984of complexity; for example, a byte stream of identical bytes will not generate
6985a hash value.")
3f641af0 6986 (license license:asl2.0)))
d8c4998f
LC
6987
6988(define-public python2-tlsh
6989 (package
6990 (inherit python-tlsh)
6991 (name "python2-tlsh")
6992 (inputs `(("python" ,python-2)))))
d96034ed 6993
67f66812
BW
6994(define-public python-termcolor
6995 (package
6996 (name "python-termcolor")
6997 (version "1.1.0")
6998 (source
6999 (origin
7000 (method url-fetch)
7001 (uri (pypi-uri "python-termcolor" version))
7002 (sha256
7003 (base32
7004 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
7005 (build-system python-build-system)
7006 (arguments
7007 ;; There are no tests.
7008 `(#:tests? #f))
7009 (home-page "http://pypi.python.org/pypi/termcolor")
7010 (synopsis "ANSII Color formatting for terminal output")
7011 (description
7012 "This package provides ANSII Color formatting for output in terminals.")
7013 (license license:expat)))
7014
7015(define-public python2-termcolor
7016 (package-with-python2 python-termcolor))
7017
d96034ed
LC
7018(define-public python-libarchive-c
7019 (package
7020 (name "python-libarchive-c")
03fd001c 7021 (version "2.2")
d96034ed
LC
7022 (source (origin
7023 (method url-fetch)
03fd001c 7024 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
7025 (sha256
7026 (base32
03fd001c 7027 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
7028 (build-system python-build-system)
7029 (arguments
7030 '(#:phases (modify-phases %standard-phases
7031 (add-before
7032 'build 'reference-libarchive
7033 (lambda* (#:key inputs #:allow-other-keys)
7034 ;; Retain the absolute file name of libarchive.so.
7035 (let ((libarchive (assoc-ref inputs "libarchive")))
7036 (substitute* "libarchive/ffi.py"
7037 (("find_library\\('archive'\\)")
7038 (string-append "'" libarchive
b41a05ce 7039 "/lib/libarchive.so'")))))))))
d96034ed 7040 (inputs
f3b98f4f 7041 `(("libarchive" ,libarchive)))
d96034ed
LC
7042 (home-page "https://github.com/Changaco/python-libarchive-c")
7043 (synopsis "Python interface to libarchive")
7044 (description
7045 "This package provides Python bindings to libarchive, a C library to
7046access possibly compressed archives in many different formats. It uses
7047Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 7048 (license license:lgpl2.0+)))
d96034ed
LC
7049
7050(define-public python2-libarchive-c
7051 (package-with-python2 python-libarchive-c))
5e1c9367
LC
7052
7053(define-public python-file
7054 (package
7055 (inherit file)
7056 (name "python-file")
7ffa5d4a
LF
7057 (source (origin
7058 (inherit (package-source file))
7059 ;; This patch should not be applied to python2-file.
7060 (patches (search-patches "python-file-double-encoding-bug.patch"))))
5e1c9367
LC
7061 (build-system python-build-system)
7062 (arguments
7063 '(#:tests? #f ;no tests
00bf74be 7064 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
7065 #:phases (modify-phases %standard-phases
7066 (add-before 'build 'change-directory
7067 (lambda _
7068 (chdir "python")
7069 #t))
7070 (add-before 'build 'set-library-file-name
7071 (lambda* (#:key inputs #:allow-other-keys)
7072 (let ((file (assoc-ref inputs "file")))
7073 (substitute* "magic.py"
7074 (("find_library\\('magic'\\)")
7075 (string-append "'" file "/lib/libmagic.so'")))
7076 #t))))))
7077 (inputs `(("file" ,file)))
7078 (self-native-input? #f)
daeeea71
CM
7079 (synopsis "Python bindings to the libmagic file type guesser. Note that
7080this module and the python-magic module both provide a \"magic.py\" file;
7081these two modules, which are different and were developed separately, both
f210e944 7082serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
7083
7084(define-public python2-file
f210e944 7085 (package-with-python2 python-file))
85d4aeac
LC
7086
7087(define-public python-debian
7088 (package
7089 (name "python-debian")
02d7f337 7090 (version "0.1.28")
85d4aeac
LC
7091 (source
7092 (origin
7093 (method url-fetch)
5e217a8b 7094 (uri (pypi-uri name version))
85d4aeac
LC
7095 (sha256
7096 (base32
02d7f337 7097 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
85d4aeac 7098 (build-system python-build-system)
f22efa01 7099 (propagated-inputs
85d4aeac 7100 `(("python-six" ,python-six)))
85d4aeac
LC
7101 (home-page "http://packages.debian.org/sid/python-debian")
7102 (synopsis "Debian package related modules")
7103 (description
5c7bdc9a
LC
7104 ;; XXX: Use @enumerate instead of @itemize to work around
7105 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
7106 "This package provides Python modules that abstract many formats of
7107Debian-related files, such as:
7108
5c7bdc9a 7109@enumerate
85d4aeac
LC
7110@item Debtags information;
7111@item @file{debian/changelog} files;
7112@item packages files, pdiffs;
7113@item control files of single or multiple RFC822-style paragraphs---e.g.
7114 @file{debian/control}, @file{.changes}, @file{.dsc};
7115@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
7116 contained files and meta-information.
5c7bdc9a 7117@end enumerate\n")
85d4aeac
LC
7118
7119 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 7120 (license license:gpl3+)))
85d4aeac
LC
7121
7122(define-public python2-debian
7123 (package-with-python2 python-debian))
816a6538 7124
2d321bb2
RW
7125(define-public python-nbformat
7126 (package
7127 (name "python-nbformat")
7128 (version "4.1.0")
7129 (source
7130 (origin
7131 (method url-fetch)
7132 (uri (pypi-uri "nbformat" version))
7133 (sha256
7134 (base32
7135 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
7136 (build-system python-build-system)
7137 (arguments `(#:tests? #f)) ; no test target
7138 (propagated-inputs
7139 `(("python-ipython-genutils" ,python-ipython-genutils)
7140 ("python-jsonschema" ,python-jsonschema)
7141 ("python-jupyter-core" ,python-jupyter-core)
7142 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
7143 (home-page "http://jupyter.org")
7144 (synopsis "Jupyter Notebook format")
7145 (description "This package provides the reference implementation of the
7146Jupyter Notebook format and Python APIs for working with notebooks.")
7147 (license license:bsd-3)))
7148
7149(define-public python2-nbformat
7150 (package-with-python2 python-nbformat))
7151
55436048
RW
7152(define-public python-bleach
7153 (package
7154 (name "python-bleach")
7155 (version "1.4.3")
7156 (source
7157 (origin
7158 (method url-fetch)
7159 (uri (pypi-uri "bleach" version))
7160 (sha256
7161 (base32
7162 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7163 (build-system python-build-system)
7164 (propagated-inputs
7165 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
7166 ("python-six" ,python-six)))
7167 (native-inputs
7168 `(("python-nose" ,python-nose)))
7169 (home-page "http://github.com/jsocol/bleach")
7170 (synopsis "Whitelist-based HTML-sanitizing tool")
7171 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7172 (license license:asl2.0)))
7173
7174(define-public python2-bleach
7175 (package-with-python2 python-bleach))
7176
60590a3a
RW
7177(define-public python-entrypoints
7178 (package
7179 (name "python-entrypoints")
7180 (version "0.2.2")
7181 (source
7182 (origin
7183 (method url-fetch)
7184 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
7185 version ".tar.gz"))
7186 (file-name (string-append name "-" version ".tar.gz"))
7187 (sha256
7188 (base32
7189 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
7190 (build-system python-build-system)
7191 ;; The package does not come with a setup.py file, so we have to generate
7192 ;; one ourselves.
7193 (arguments
7194 `(#:tests? #f
7195 #:phases
7196 (modify-phases %standard-phases
7197 (add-after 'unpack 'create-setup.py
7198 (lambda _
7199 (call-with-output-file "setup.py"
7200 (lambda (port)
7201 (format port "\
7202from setuptools import setup
7203setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7204" ,version))))))))
7205 (home-page "https://github.com/takluyver/entrypoints")
7206 (synopsis "Discover and load entry points from installed Python packages")
7207 (description "Entry points are a way for Python packages to advertise
7208objects with some common interface. The most common examples are
7209@code{console_scripts} entry points, which define shell commands by
7210identifying a Python function to run. The @code{entrypoints} module contains
7211functions to find and load entry points.")
7212 (license license:expat)))
7213
7214(define-public python2-entrypoints
7215 (package-with-python2 python-entrypoints))
7216
c60898a8
RW
7217(define-public python-nbconvert
7218 (package
7219 (name "python-nbconvert")
7220 (version "5.0.0b1")
7221 (source
7222 (origin
7223 (method url-fetch)
7224 (uri (pypi-uri "nbconvert" version))
7225 (sha256
7226 (base32
7227 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7228 (build-system python-build-system)
7229 ;; The "bdist_egg" target is disabled by default, causing the installation
7230 ;; to fail.
7231 (arguments `(#:configure-flags (list "bdist_egg")))
7232 (propagated-inputs
7233 `(("python-bleach" ,python-bleach)
7234 ("python-entrypoints" ,python-entrypoints)
7235 ("python-jinja2" ,python-jinja2)
7236 ("python-jupyter-core" ,python-jupyter-core)
7237 ("python-mistune" ,python-mistune)
7238 ("python-nbformat" ,python-nbformat)
7239 ("python-pygments" ,python-pygments)
c60898a8
RW
7240 ("python-traitlets" ,python-traitlets)))
7241 (home-page "http://jupyter.org")
7242 (synopsis "Converting Jupyter Notebooks")
7243 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7244notebooks to various other formats via Jinja templates. It allows you to
7245convert an @code{.ipynb} notebook file into various static formats including:
7246
7247@enumerate
7248@item HTML
7249@item LaTeX
7250@item PDF
7251@item Reveal JS
7252@item Markdown (md)
7253@item ReStructured Text (rst)
7254@item executable script
7255@end enumerate\n")
7256 (license license:bsd-3)))
7257
7258(define-public python2-nbconvert
7259 (package-with-python2 python-nbconvert))
7260
a0d62280
RW
7261(define-public python-notebook
7262 (package
7263 (name "python-notebook")
7264 (version "4.2.3")
7265 (source (origin
7266 (method url-fetch)
7267 (uri (pypi-uri "notebook" version))
7268 (sha256
7269 (base32
7270 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7271 (build-system python-build-system)
7272 (arguments
7273 `(#:phases
7274 (modify-phases %standard-phases
7275 (replace 'check
7276 (lambda _
7277 ;; HOME must be set for tests
7278 (setenv "HOME" "/tmp")
7279 (zero? (system* "nosetests")))))))
7280 (propagated-inputs
7281 `(("python-jupyter-core" ,python-jupyter-core)
7282 ("python-nbformat" ,python-nbformat)
7283 ("python-nbconvert" ,python-nbconvert)
7284 ("python-ipython" ,python-ipython)))
7285 (native-inputs
7286 `(("python-nose" ,python-nose)
7287 ("python-sphinx" ,python-sphinx)
7288 ("python-requests" ,python-requests)))
7289 (home-page "http://jupyter.org/")
7290 (synopsis "Web-based notebook environment for interactive computing")
7291 (description
7292 "The Jupyter HTML notebook is a web-based notebook environment for
7293interactive computing.")
3a735ecf 7294 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
7295 (license license:bsd-3)))
7296
7297(define-public python2-notebook
3a735ecf
HG
7298 (let ((base (package-with-python2
7299 (strip-python2-variant python-notebook))))
7300 (package (inherit base)
7301 (native-inputs
7302 `(("python2-mock" ,python2-mock)
7303 ,@(package-native-inputs base)))
7304 (arguments
7305 (substitute-keyword-arguments (package-arguments base)
7306 ((#:phases phases)
7307 `(modify-phases ,phases
7308 (add-before 'check 'disable-test-case
7309 ;; The test requires network access to localhost. Curiously it
7310 ;; fails with Python 2 only. Simply make the test-case return
7311 ;; immediately.
7312 (lambda _
7313 (substitute*
7314 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7315 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 7316
d55724ed
RW
7317(define-public python-widgetsnbextension
7318 (package
7319 (name "python-widgetsnbextension")
7320 (version "1.2.6")
7321 (source
7322 (origin
7323 (method url-fetch)
7324 (uri (pypi-uri "widgetsnbextension" version))
7325 (sha256
7326 (base32
7327 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7328 (build-system python-build-system)
7329 (propagated-inputs
7330 `(("python-notebook" ,python-notebook)))
7331 (native-inputs
f3b98f4f 7332 `(("python-nose" ,python-nose)))
d55724ed
RW
7333 (home-page "http://ipython.org")
7334 (synopsis "IPython HTML widgets for Jupyter")
7335 (description "This package provides interactive HTML widgets for Jupyter
7336notebooks.")
7337 (license license:bsd-3)))
7338
7339(define-public python2-widgetsnbextension
7340 (package-with-python2 python-widgetsnbextension))
7341
4fe2e344
RW
7342(define-public python-ipywidgets
7343 (package
7344 (name "python-ipywidgets")
7345 (version "5.2.2")
7346 (source
7347 (origin
7348 (method url-fetch)
7349 (uri (pypi-uri "ipywidgets" version))
7350 (sha256
7351 (base32
7352 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7353 (build-system python-build-system)
7354 ;; FIXME: it's not clear how to run the tests.
7355 (arguments `(#:tests? #f))
7356 (propagated-inputs
7357 `(("python-ipykernel" ,python-ipykernel)
7358 ("python-ipython" ,python-ipython)
4fe2e344
RW
7359 ("python-traitlets" ,python-traitlets)
7360 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7361 (home-page "http://ipython.org")
7362 (synopsis "IPython HTML widgets for Jupyter")
7363 (description "Ipywidgets are interactive HTML widgets for Jupyter
7364notebooks and the IPython kernel. Notebooks come alive when interactive
7365widgets are used. Users gain control of their data and can visualize changes
7366in the data.")
7367 (license license:bsd-3)))
7368
7369(define-public python2-ipywidgets
7370 (package-with-python2 python-ipywidgets))
7371
8ceebf8f
RW
7372(define-public python-jupyter-console
7373 (package
7374 (name "python-jupyter-console")
7375 (version "5.0.0")
7376 (source
7377 (origin
7378 (method url-fetch)
7379 (uri (pypi-uri "jupyter_console" version))
7380 (sha256
7381 (base32
7382 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7383 (build-system python-build-system)
7384 ;; FIXME: it's not clear how to run the tests.
7385 (arguments `(#:tests? #f))
7386 (propagated-inputs
7387 `(("python-ipykernel" ,python-ipykernel)
7388 ("python-ipython" ,python-ipython)
7389 ("python-jupyter-client" ,python-jupyter-client)
7390 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 7391 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
7392 (home-page "https://jupyter.org")
7393 (synopsis "Jupyter terminal console")
7394 (description "This package provides a terminal-based console frontend for
7395Jupyter kernels. It also allows for console-based interaction with non-Python
7396Jupyter kernels such as IJulia and IRKernel.")
7397 (license license:bsd-3)))
7398
7399(define-public python2-jupyter-console
7400 (package-with-python2 python-jupyter-console))
7401
c27ae827
RW
7402(define-public jupyter
7403 (package
7404 (name "jupyter")
7405 (version "1.0.0")
7406 (source
7407 (origin
7408 (method url-fetch)
7409 (uri (pypi-uri "jupyter" version))
7410 (sha256
7411 (base32
7412 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7413 (build-system python-build-system)
7414 ;; FIXME: it's not clear how to run the tests.
7415 (arguments `(#:tests? #f))
7416 (propagated-inputs
7417 `(("python-ipykernel" ,python-ipykernel)
7418 ("python-ipywidgets" ,python-ipywidgets)
7419 ("python-jupyter-console" ,python-jupyter-console)
7420 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 7421 ("python-notebook" ,python-notebook)))
c27ae827
RW
7422 (home-page "http://jupyter.org")
7423 (synopsis "Web application for interactive documents")
7424 (description
7425 "The Jupyter Notebook is a web application that allows you to create and
7426share documents that contain live code, equations, visualizations and
7427explanatory text. Uses include: data cleaning and transformation, numerical
7428simulation, statistical modeling, machine learning and much more.")
7429 (license license:bsd-3)))
7430
816a6538
LC
7431(define-public python-chardet
7432 (package
7433 (name "python-chardet")
7434 (version "2.3.0")
7435 (source
7436 (origin
7437 (method url-fetch)
7438 (uri (string-append
7439 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7440 version
7441 ".tar.gz"))
7442 (sha256
7443 (base32
7444 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7445 (build-system python-build-system)
816a6538
LC
7446 (home-page "https://github.com/chardet/chardet")
7447 (synopsis "Universal encoding detector for Python 2 and 3")
7448 (description
7449 "This package provides @code{chardet}, a Python module that can
7450automatically detect a wide range of file encodings.")
3f641af0 7451 (license license:lgpl2.1+)))
816a6538
LC
7452
7453(define-public python2-chardet
7454 (package-with-python2 python-chardet))
2fc5f186 7455
1872f1bb
KM
7456(define-public python-docopt
7457 (package
7458 (name "python-docopt")
7459 (version "0.6.2")
7460 (source
7461 (origin
7462 (method url-fetch)
7463 ;; The release on PyPI does not include tests.
7464 (uri (string-append
7465 "https://github.com/docopt/docopt/archive/"
7466 version ".tar.gz"))
7467 (file-name (string-append name "-" version ".tar.gz"))
7468 (sha256
7469 (base32
7470 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7471 (build-system python-build-system)
7472 (native-inputs
f3b98f4f 7473 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
7474 (arguments
7475 `(#:phases (alist-replace
7476 'check
7477 (lambda _ (zero? (system* "py.test")))
7478 %standard-phases)))
7479 (home-page "http://docopt.org")
7480 (synopsis "Command-line interface description language for Python")
7481 (description "This library allows the user to define a command-line
7482interface from a program's help message rather than specifying it
7483programatically with command-line parsers like @code{getopt} and
7484@code{argparse}.")
7485 (license license:expat)))
7486
7487(define-public python2-docopt
7488 (package-with-python2 python-docopt))
7489
2fc5f186
LF
7490(define-public python-zope-event
7491 (package
7492 (name "python-zope-event")
7493 (version "4.1.0")
7494 (source
7495 (origin
7496 (method url-fetch)
7497 (uri (string-append "https://pypi.python.org/packages/source/z"
7498 "/zope.event/zope.event-" version ".tar.gz"))
7499 (sha256
7500 (base32
7501 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7502 (build-system python-build-system)
2fc5f186
LF
7503 (home-page "http://pypi.python.org/pypi/zope.event")
7504 (synopsis "Event publishing system for Python")
7505 (description "Zope.event provides an event publishing API, intended for
7506use by applications which are unaware of any subscribers to their events. It
7507is a simple event-dispatching system on which more sophisticated event
7508dispatching systems can be built.")
3f641af0 7509 (license license:zpl2.1)))
2fc5f186
LF
7510
7511(define-public python2-zope-event
7512 (package-with-python2 python-zope-event))
97abe268
LF
7513
7514(define-public python-zope-interface
7515 (package
7516 (name "python-zope-interface")
7517 (version "4.1.3")
7518 (source
7519 (origin
7520 (method url-fetch)
7521 (uri (string-append "https://pypi.python.org/packages/source/z"
7522 "/zope.interface/zope.interface-" version ".tar.gz"))
7523 (sha256
7524 (base32
7525 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7526 (build-system python-build-system)
38d480a8 7527 (native-inputs
97abe268
LF
7528 `(("python-zope-event" ,python-zope-event)))
7529 (home-page "https://github.com/zopefoundation/zope.interface")
7530 (synopsis "Python implementation of the \"design by contract\"
7531methodology")
7532 (description "Zope.interface provides an implementation of \"object
7533interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7534conforming to a given API or contract.")
3f641af0 7535 (license license:zpl2.1)))
97abe268
LF
7536
7537(define-public python2-zope-interface
7538 (package-with-python2 python-zope-interface))
81f2373c
LF
7539
7540(define-public python-zope-exceptions
7541 (package
7542 (name "python-zope-exceptions")
7543 (version "4.0.8")
7544 (source
7545 (origin
7546 (method url-fetch)
7547 (uri (string-append "https://pypi.python.org/packages/source/z"
7548 "/zope.exceptions/zope.exceptions-"
7549 version ".tar.gz"))
7550 (sha256
7551 (base32
7552 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
7553 (build-system python-build-system)
7554 (arguments
7555 '(#:tests? #f)) ; circular dependency with zope.testrunner
7556 (propagated-inputs
7557 `(("python-zope-interface" ,python-zope-interface)))
7558 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
7559 (synopsis "Zope exceptions")
7560 (description "Zope.exceptions provides general-purpose exception types
7561that have uses outside of the Zope framework.")
3f641af0 7562 (license license:zpl2.1)))
81f2373c
LF
7563
7564(define-public python2-zope-exceptions
7565 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
7566
7567(define-public python-zope-testing
7568 (package
7569 (name "python-zope-testing")
7570 (version "4.5.0")
7571 (source
7572 (origin
7573 (method url-fetch)
7574 (uri (string-append "https://pypi.python.org/packages/source/z"
7575 "/zope.testing/zope.testing-" version ".tar.gz"))
7576 (sha256
7577 (base32
b02f7a21
HG
7578 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
7579 (modules '((guix build utils)))
7580 (snippet
7581 '(begin
7582 ;; Remove pre-compiled .pyc files backup files from source.
7583 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
7584 #t))))
900e3c0e
LF
7585 (build-system python-build-system)
7586 (native-inputs
7587 `(("python-zope-exceptions" ,python-zope-exceptions)))
7588 (propagated-inputs
7589 `(("python-zope-interface" ,python-zope-interface)))
7590 (home-page "http://pypi.python.org/pypi/zope.testing")
7591 (synopsis "Zope testing helpers")
7592 (description "Zope.testing provides a number of testing utilities for HTML
7593forms, HTTP servers, regular expressions, and more.")
3f641af0 7594 (license license:zpl2.1)))
900e3c0e
LF
7595
7596(define-public python2-zope-testing
7597 (package-with-python2 python-zope-testing))
01614c4f
LF
7598
7599(define-public python-zope-testrunner
7600 (package
7601 (name "python-zope-testrunner")
7602 (version "4.4.9")
7603 (source
7604 (origin
7605 (method url-fetch)
7606 (uri (string-append "https://pypi.python.org/packages/source/z"
7607 "/zope.testrunner/zope.testrunner-"
7608 version ".zip"))
7609 (sha256
7610 (base32
7611 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
7612 (build-system python-build-system)
7613 (native-inputs
7614 `(("python-six" ,python-six)
e408ffc3 7615 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
7616 ("python-zope-exceptions" ,python-zope-exceptions)
7617 ("python-zope-testing" ,python-zope-testing)
7618 ("unzip" ,unzip)))
7619 (propagated-inputs
7620 `(("python-zope-interface" ,python-zope-interface)))
7621 (home-page "http://pypi.python.org/pypi/zope.testrunner")
7622 (synopsis "Zope testrunner script")
7623 (description "Zope.testrunner provides a script for running Python
7624tests.")
3f641af0 7625 (license license:zpl2.1)))
01614c4f
LF
7626
7627(define-public python2-zope-testrunner
7628 (let ((base (package-with-python2 python-zope-testrunner)))
7629 (package
7630 (inherit base)
7631 (native-inputs
7632 (append (package-native-inputs base)
7633 `(("python2-subunit" ,python2-subunit)
7634 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
7635
7636(define-public python-zope-i18nmessageid
7637 (package
7638 (name "python-zope-i18nmessageid")
7639 (version "4.0.3")
7640 (source
7641 (origin
7642 (method url-fetch)
7643 (uri (string-append
7644 "https://pypi.python.org/packages/source/z"
7645 "/zope.i18nmessageid/zope.i18nmessageid-"
7646 version ".tar.gz"))
7647 (sha256
7648 (base32
7649 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
7650 (build-system python-build-system)
6a5c710c
LF
7651 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
7652 (synopsis "Message identifiers for internationalization")
7653 (description "Zope.i18nmessageid provides facilities for declaring
7654internationalized messages within program source text.")
3f641af0 7655 (license license:zpl2.1)))
6a5c710c
LF
7656
7657(define-public python2-zope-i18nmessageid
7658 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
7659
7660(define-public python-zope-schema
7661 (package
7662 (name "python-zope-schema")
7663 (version "4.4.2")
7664 (source
7665 (origin
7666 (method url-fetch)
7667 (uri (string-append "https://pypi.python.org/packages/source/z"
7668 "/zope.schema/zope.schema-" version ".tar.gz"))
7669 (sha256
7670 (base32
7671 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
7672 (build-system python-build-system)
7673 (propagated-inputs
7674 `(("python-zope-event" ,python-zope-event)
7675 ("python-zope-interface" ,python-zope-interface)))
7676 (native-inputs
47f77210
HG
7677 `(("python-zope-testing" ,python-zope-testing)
7678 ("python-coverage" ,python-coverage)
7679 ("python-nose" ,python-nose)))
71fb09f3
LF
7680 (home-page "http://pypi.python.org/pypi/zope.schema")
7681 (synopsis "Zope data schemas")
7682 (description "Zope.scheme provides extensions to zope.interface for
7683defining data schemas.")
3f641af0 7684 (license license:zpl2.1)))
71fb09f3
LF
7685
7686(define-public python2-zope-schema
7687 (package-with-python2 python-zope-schema))
fbac9b17
LF
7688
7689(define-public python-zope-configuration
7690 (package
7691 (name "python-zope-configuration")
7692 (version "4.0.3")
7693 (source (origin
7694 (method url-fetch)
7695 (uri (string-append "https://pypi.python.org/packages/source/z"
7696 "/zope.configuration/zope.configuration-"
7697 version ".tar.gz"))
7698 (sha256
7699 (base32
7700 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
7701 (build-system python-build-system)
7702 (propagated-inputs
7703 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7704 ("python-zope-schema" ,python-zope-schema)))
7705 (home-page "http://pypi.python.org/pypi/zope.configuration")
7706 (synopsis "Zope Configuration Markup Language")
7707 (description "Zope.configuration implements ZCML, the Zope Configuration
7708Markup Language.")
3f641af0 7709 (license license:zpl2.1)))
fbac9b17
LF
7710
7711(define-public python2-zope-configuration
7712 (package-with-python2 python-zope-configuration))
2ad52086
LF
7713
7714(define-public python-zope-proxy
7715 (package
7716 (name "python-zope-proxy")
7717 (version "4.1.6")
7718 (source
7719 (origin
7720 (method url-fetch)
7721 (uri (string-append "https://pypi.python.org/packages/source/z"
7722 "/zope.proxy/zope.proxy-" version ".tar.gz"))
7723 (sha256
7724 (base32
7725 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
7726 (build-system python-build-system)
7727 (propagated-inputs
7728 `(("python-zope-interface" ,python-zope-interface)))
7729 (home-page "http://pypi.python.org/pypi/zope.proxy")
7730 (synopsis "Generic, transparent proxies")
7731 (description "Zope.proxy provides generic, transparent proxies for Python.
7732Proxies are special objects which serve as mostly-transparent wrappers around
7733another object, intervening in the apparent behavior of the wrapped object
7734only when necessary to apply the policy (e.g., access checking, location
7735brokering, etc.) for which the proxy is responsible.")
3f641af0 7736 (license license:zpl2.1)))
2ad52086
LF
7737
7738(define-public python2-zope-proxy
7739 (package-with-python2 python-zope-proxy))
f404b5ea
LF
7740
7741(define-public python-zope-location
7742 (package
7743 (name "python-zope-location")
7744 (version "4.0.3")
7745 (source
7746 (origin
7747 (method url-fetch)
7748 (uri (string-append "https://pypi.python.org/packages/source/z"
7749 "/zope.location/zope.location-" version ".tar.gz"))
7750 (sha256
7751 (base32
7752 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
7753 (build-system python-build-system)
d27f176a 7754 (propagated-inputs
f404b5ea
LF
7755 `(("python-zope-proxy" ,python-zope-proxy)
7756 ("python-zope-schema" ,python-zope-schema)))
7757 (home-page "http://pypi.python.org/pypi/zope.location/")
7758 (synopsis "Zope location library")
7759 (description "Zope.location implements the concept of \"locations\" in
7760Zope3, which are are special objects that have a structural location.")
3f641af0 7761 (license license:zpl2.1)))
f404b5ea
LF
7762
7763(define-public python2-zope-location
7764 (package-with-python2 python-zope-location))
d4b77f36
LF
7765
7766(define-public python-zope-security
7767 (package
7768 (name "python-zope-security")
7769 (version "4.0.3")
7770 (source
7771 (origin
7772 (method url-fetch)
7773 (uri (string-append "https://pypi.python.org/packages/source/z"
7774 "/zope.security/zope.security-" version ".tar.gz"))
7775 (sha256
7776 (base32
7777 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
7778 (build-system python-build-system)
7779 (propagated-inputs
7780 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 7781 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7
HG
7782 ("python-zope-schema" ,python-zope-schema)))
7783 (native-inputs
7784 `(("python-zope-component" ,python-zope-component)
7785 ("python-zope-configuration" ,python-zope-configuration)
7786 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
7787 ("python-zope-testrunner" ,python-zope-testrunner)
7788 ("python-zope-testing" ,python-zope-testing)))
7789 (home-page "http://pypi.python.org/pypi/zope.security")
7790 (synopsis "Zope security framework")
7791 (description "Zope.security provides a generic mechanism to implement
7792security policies on Python objects.")
3f641af0 7793 (license license:zpl2.1)))
d4b77f36
LF
7794
7795(define-public python2-zope-security
04417662
EF
7796 (let ((zope-security (package-with-python2 python-zope-security)))
7797 (package (inherit zope-security)
7798 (propagated-inputs
7799 `(("python2-zope-testrunner" ,python2-zope-testrunner)
7800 ,@(alist-delete
7801 "python-zope-testrunner"
7802 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
7803
7804(define-public python-zope-component
7805 (package
7806 (name "python-zope-component")
7807 (version "4.2.2")
7808 (source
7809 (origin
7810 (method url-fetch)
7811 (uri (string-append "https://pypi.python.org/packages/source/z"
7812 "/zope.component/zope.component-" version ".tar.gz"))
7813 (sha256
7814 (base32
7815 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
7816 (build-system python-build-system)
7817 (arguments
7818 ;; Skip tests due to circular dependency with python-zope-security.
7819 '(#:tests? #f))
7820 (native-inputs
7821 `(("python-zope-testing" ,python-zope-testing)))
7822 (propagated-inputs
7823 `(("python-zope-event" ,python-zope-event)
7824 ("python-zope-interface" ,python-zope-interface)
7825 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7826 ("python-zope-configuration" ,python-zope-configuration)))
7827 (home-page "https://github.com/zopefoundation/zope.component")
7828 (synopsis "Zope Component Architecture")
7829 (description "Zope.component represents the core of the Zope Component
7830Architecture. Together with the zope.interface package, it provides
7831facilities for defining, registering and looking up components.")
3f641af0 7832 (license license:zpl2.1)))
a6b61b27
LF
7833
7834(define-public python2-zope-component
7835 (package-with-python2 python-zope-component))
3859ac12 7836
1ae44b80 7837(define-public python-pythondialog
b5f218be 7838 (package
1ae44b80 7839 (name "python-pythondialog")
42c4b246 7840 (version "3.4.0")
b5f218be
LF
7841 (source
7842 (origin
7843 (method url-fetch)
1ae44b80 7844 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
7845 (sha256
7846 (base32
1ae44b80 7847 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
7848 (build-system python-build-system)
7849 (arguments
7850 `(#:phases
7851 (modify-phases %standard-phases
7852 (add-after 'unpack 'patch-path
7853 (lambda* (#:key inputs #:allow-other-keys)
7854 (let* ((dialog (assoc-ref inputs "dialog")))
7855 ;; Since this library really wants to grovel the search path, we
7856 ;; must hardcode dialog's store path into it.
7857 (substitute* "dialog.py"
7858 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
7859 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
7860 #t))))
b5f218be
LF
7861 #:tests? #f)) ; no test suite
7862 (propagated-inputs
7863 `(("dialog" ,dialog)))
7864 (home-page "http://pythondialog.sourceforge.net/")
7865 (synopsis "Python interface to the UNIX dialog utility")
7866 (description "A Python wrapper for the dialog utility. Its purpose is to
7867provide an easy to use, pythonic and comprehensive Python interface to dialog.
7868This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 7869 (license license:lgpl2.1)
1ae44b80
LF
7870 (properties `((python2-variant . ,(delay python2-pythondialog))))))
7871
7872(define-public python2-pythondialog
7873 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
7874 (package
7875 (inherit base)
7876 (version (package-version python-pythondialog))
7877 (source (origin
7878 (method url-fetch)
7879 (uri (pypi-uri "python2-pythondialog" version))
7880 (sha256
7881 (base32
7882 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 7883
3859ac12
LF
7884(define-public python-pyrfc3339
7885 (package
7886 (name "python-pyrfc3339")
d9aa097b 7887 (version "1.0")
3859ac12
LF
7888 (source
7889 (origin
7890 (method url-fetch)
d9aa097b 7891 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
7892 (sha256
7893 (base32
d9aa097b 7894 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
7895 (build-system python-build-system)
7896 (propagated-inputs
7897 `(("python-pytz" ,python-pytz)))
7898 (native-inputs
f3b98f4f 7899 `(("python-nose" ,python-nose)))
3859ac12
LF
7900 (home-page "https://github.com/kurtraschke/pyRFC3339")
7901 (synopsis "Python timestamp library")
7902 (description "Python library for generating and parsing RFC 3339-compliant
7903timestamps.")
7904 (license license:expat)))
7905
7906(define-public python2-pyrfc3339
7907 (package-with-python2 python-pyrfc3339))
5eea2005
LF
7908
7909(define-public python-werkzeug
7910 (package
7911 (name "python-werkzeug")
bbb99d6b 7912 (version "0.11.15")
5eea2005
LF
7913 (source
7914 (origin
7915 (method url-fetch)
4b47cbfa 7916 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
7917 (sha256
7918 (base32
bbb99d6b 7919 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
5eea2005
LF
7920 (build-system python-build-system)
7921 (native-inputs
7922 `(("python-pytest" ,python-pytest)))
7923 (home-page "http://werkzeug.pocoo.org/")
7924 (synopsis "Utilities for WSGI applications")
7925 (description "One of the most advanced WSGI utility modules. It includes a
7926powerful debugger, full-featured request and response objects, HTTP utilities to
7927handle entity tags, cache control headers, HTTP dates, cookie handling, file
7928uploads, a powerful URL routing system and a bunch of community-contributed
7929addon modules.")
3f641af0 7930 (license license:x11)))
5eea2005
LF
7931
7932(define-public python2-werkzeug
7933 (package-with-python2 python-werkzeug))
99fffa8a
LF
7934
7935(define-public python-configobj
7936 (package
7937 (name "python-configobj")
7938 (version "5.0.6")
7939 (source (origin
7940 (method url-fetch)
7941 (uri (string-append
7942 "https://pypi.python.org/packages/source/c/configobj/"
7943 "configobj-" version ".tar.gz"))
7944 (sha256
7945 (base32
7946 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
7947 ;; Patch setup.py so it looks for python-setuptools, which is
7948 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 7949 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 7950 (build-system python-build-system)
861f70c9 7951 (propagated-inputs
f3b98f4f 7952 `(("python-six" ,python-six)))
99fffa8a
LF
7953 (synopsis "Config file reading, writing and validation")
7954 (description "ConfigObj is a simple but powerful config file reader and
7955writer: an ini file round tripper. Its main feature is that it is very easy to
7956use, with a straightforward programmer’s interface and a simple syntax for
7957config files.")
7958 (home-page "https://github.com/DiffSK/configobj")
3f641af0 7959 (license license:bsd-3)))
99fffa8a
LF
7960
7961(define-public python2-configobj
7962 (package-with-python2 python-configobj))
79e8a291
LF
7963
7964(define-public python-configargparse
7965 (package
7966 (name "python-configargparse")
7967 (version "0.10.0")
7968 (source (origin
7969 (method url-fetch)
7970 (uri (string-append
7971 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
7972 "ConfigArgParse-" version ".tar.gz"))
7973 (sha256
7974 (base32
7975 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
7976 (build-system python-build-system)
7977 (arguments
7978 ;; FIXME: Bug in test suite filed upstream:
7979 ;; https://github.com/bw2/ConfigArgParse/issues/32
7980 '(#:tests? #f))
7981 (synopsis "Replacement for argparse")
7982 (description "A drop-in replacement for argparse that allows options to also
7983be set via config files and/or environment variables.")
7984 (home-page "https://github.com/bw2/ConfigArgParse")
7985 (license license:expat)))
7986
7987(define-public python2-configargparse
7988 (package-with-python2 python-configargparse))
ab41f979
LF
7989
7990(define-public python-ndg-httpsclient
7991 (package
7992 (name "python-ndg-httpsclient")
ae476d01 7993 (version "0.4.2")
ab41f979
LF
7994 (source (origin
7995 (method url-fetch)
7be13d00 7996 (uri (pypi-uri "ndg_httpsclient" version))
ab41f979
LF
7997 (sha256
7998 (base32
ae476d01 7999 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
ab41f979 8000 (build-system python-build-system)
a39cc016
LF
8001 (arguments
8002 '(;; The tests appear to require networking.
8003 #:tests? #f))
ab41f979
LF
8004 (propagated-inputs
8005 `(("python-pyopenssl" ,python-pyopenssl)))
8006 (synopsis "HTTPS support for Python's httplib and urllib2")
8007 (description "This is a HTTPS client implementation for httplib and urllib2
8008based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
8009over the default provided with Python and importantly enables full verification
8010of the SSL peer.")
8011 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 8012 (license license:bsd-3)))
ab41f979
LF
8013
8014;; python2-openssl requires special care, so package-with-python2 is
8015;; insufficient.
8016(define-public python2-ndg-httpsclient
8017 (package (inherit python-ndg-httpsclient)
8018 (name "python2-ndg-httpsclient")
8019 (arguments `(#:python ,python-2))
8020 (propagated-inputs
8021 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
8022
8023(define-public python-contextlib2
8024 (package
8025 (name "python-contextlib2")
8026 (version "0.4.0")
8027 (source
8028 (origin
8029 (method url-fetch)
8030 (uri (pypi-uri "contextlib2" version))
8031 (sha256
8032 (base32
8033 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
8034 (build-system python-build-system)
8035 (arguments
8036 `(#:phases
8037 (modify-phases %standard-phases
8038 (replace 'check
8039 (lambda _ (zero?
8040 (system*
b3546174 8041 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
8042 (home-page "http://contextlib2.readthedocs.org/")
8043 (synopsis "Tools for decorators and context managers")
8044 (description "This module is primarily a backport of the Python
80453.2 contextlib to earlier Python versions. Like contextlib, it
8046provides utilities for common tasks involving decorators and context
8047managers. It also contains additional features that are not part of
8048the standard library.")
3f641af0 8049 (license license:psfl)))
03f964a5
CM
8050
8051(define-public python2-contextlib2
8052 (package-with-python2 python-contextlib2))
210bf497
DT
8053
8054(define-public python-texttable
8055 (package
8056 (name "python-texttable")
8057 (version "0.8.4")
8058 (source
8059 (origin
8060 (method url-fetch)
8061 (uri (pypi-uri "texttable" version))
8062 (sha256
8063 (base32
8064 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
8065 (build-system python-build-system)
8066 (arguments '(#:tests? #f)) ; no tests
8067 (home-page "https://github.com/foutaise/texttable/")
8068 (synopsis "Python module for creating simple ASCII tables")
8069 (description "Texttable is a Python module for creating simple ASCII
8070tables.")
3f641af0 8071 (license license:lgpl2.1+)))
210bf497
DT
8072
8073(define-public python2-texttable
8074 (package-with-python2 python-texttable))
67c52bb3
DT
8075
8076(define-public python-websocket-client
8077 (package
8078 (name "python-websocket-client")
6b810897 8079 (version "0.37.0")
67c52bb3
DT
8080 (source
8081 (origin
8082 (method url-fetch)
6b810897 8083 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
8084 (sha256
8085 (base32
6b810897 8086 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 8087 (build-system python-build-system)
a5333f7c
HG
8088 (propagated-inputs
8089 `(("python-six" ,python-six)))
67c52bb3
DT
8090 (home-page "https://github.com/liris/websocket-client")
8091 (synopsis "WebSocket client for Python")
8092 (description "The Websocket-client module provides the low level APIs for
8093WebSocket usage in Python programs.")
3f641af0 8094 (license license:lgpl2.1+)))
67c52bb3
DT
8095
8096(define-public python2-websocket-client
8097 (package-with-python2 python-websocket-client))
5c6eea2a
LF
8098
8099(define-public python-atomicwrites
8100 (package
8101 (name "python-atomicwrites")
4e92d76a 8102 (version "1.1.0")
5c6eea2a
LF
8103 (source (origin
8104 (method url-fetch)
8105 (uri (pypi-uri "atomicwrites" version))
8106 (sha256
8107 (base32
4e92d76a 8108 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
8109 (build-system python-build-system)
8110 (synopsis "Atomic file writes in Python")
8111 (description "Library for atomic file writes using platform dependent tools
8f65585b 8112for atomic file system operations.")
5c6eea2a 8113 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 8114 (license license:expat)))
9bb6d184
LF
8115
8116(define-public python2-atomicwrites
f210e944 8117 (package-with-python2 python-atomicwrites))
561bb3cb
LF
8118
8119(define-public python-requests-toolbelt
8120 (package
8121 (name "python-requests-toolbelt")
c02af1c8 8122 (version "0.6.2")
561bb3cb
LF
8123 (source (origin
8124 (method url-fetch)
c02af1c8
LF
8125 (uri (string-append
8126 "https://pypi.python.org/packages/"
8127 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
8128 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
8129 (sha256
8130 (base32
c02af1c8 8131 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 8132 (build-system python-build-system)
759aadd4
LF
8133 (native-inputs
8134 `(("python-betamax" ,python-betamax)
8135 ("python-mock" ,python-mock)
8136 ("python-pytest" ,python-pytest)))
561bb3cb
LF
8137 (propagated-inputs
8138 `(("python-requests" ,python-requests)))
8139 (synopsis "Extensions to python-requests")
8140 (description "This is a toolbelt of useful classes and functions to be used
8141with python-requests.")
8142 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 8143 (license license:asl2.0)))
d1deb90b
LF
8144
8145(define-public python-click-threading
8146 (package
8147 (name "python-click-threading")
3d2e0dbc 8148 (version "0.2.0")
d1deb90b
LF
8149 (source (origin
8150 (method url-fetch)
3d2e0dbc
LF
8151 (uri (string-append
8152 "https://pypi.python.org/packages/"
8153 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
8154 "click-threading-" version ".tar.gz"))
d1deb90b
LF
8155 (sha256
8156 (base32
3d2e0dbc 8157 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
8158 (build-system python-build-system)
8159 (propagated-inputs
8160 `(("python-click" ,python-click)))
8161 (synopsis "Utilities for multithreading in Click")
8162 (description "This package provides utilities for multithreading in Click
8163applications.")
8164 (home-page "https://github.com/click-contrib/click-threading")
8165 (license license:expat)))
7b17cab9
LF
8166
8167(define-public python-click-log
8168 (package
8169 (name "python-click-log")
42734b9a 8170 (version "0.1.8")
7b17cab9
LF
8171 (source (origin
8172 (method url-fetch)
8173 (uri (pypi-uri "click-log" version))
8174 (sha256
8175 (base32
42734b9a 8176 "14ikfjfgnzf21mjniq9lfk2igzykgzfvwwrk85nw2b9fq44109sp"))))
7b17cab9
LF
8177 (build-system python-build-system)
8178 (propagated-inputs
8179 `(("python-click" ,python-click)))
8180 (synopsis "Logging for click applications")
8181 (description "This package provides a Python library for logging Click
8182applications.")
8183 (home-page "https://github.com/click-contrib/click-log")
8184 (license license:expat)))
7b3a4ee4
LF
8185
8186(define-public python-apipkg
8187 (package
8188 (name "python-apipkg")
8189 (version "1.4")
8190 (source (origin
8191 (method url-fetch)
8192 (uri (pypi-uri "apipkg" version))
8193 (sha256
8194 (base32
8195 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8196 (build-system python-build-system)
328bb95d 8197 (native-inputs
7b3a4ee4
LF
8198 `(("python-pytest" ,python-pytest)))
8199 (synopsis "Namespace control and lazy-import mechanism")
8200 (description "With apipkg you can control the exported namespace of a Python
8201package and greatly reduce the number of imports for your users. It is a small
8202pure Python module that works on virtually all Python versions.")
8203 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 8204 (license license:expat)))
e08739c3
CAW
8205
8206(define-public python2-apipkg
f210e944 8207 (package-with-python2 python-apipkg))
848964fe
LF
8208
8209(define-public python-execnet
8210 (package
8211 (name "python-execnet")
8212 (version "1.4.1")
8213 (source (origin
8214 (method url-fetch)
8215 (uri (pypi-uri "execnet" version))
8216 (sha256
8217 (base32
8218 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8219 (build-system python-build-system)
ca0eee9d
LF
8220 (arguments
8221 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8222 ;; The two test failures are caused by the lack of an `ssh` executable.
8223 ;; The test suite can be run with pytest after the 'install' phase.
8224 #:tests? #f))
848964fe 8225 (native-inputs
ca0eee9d
LF
8226 `(("python-pytest" ,python-pytest)
8227 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 8228 (propagated-inputs
848964fe
LF
8229 `(("python-apipkg" ,python-apipkg)))
8230 (synopsis "Rapid multi-Python deployment")
8231 (description "Execnet provides a share-nothing model with
8232channel-send/receive communication for distributing execution across many
8233Python interpreters across version, platform and network barriers. It has a
8234minimal and fast API targetting the following uses:
8235@enumerate
8236@item distribute tasks to (many) local or remote CPUs
8237@item write and deploy hybrid multi-process applications
8238@item write scripts to administer multiple environments
8239@end enumerate")
8240 (home-page "http://codespeak.net/execnet/")
f210e944 8241 (license license:expat)))
16c84f90
CAW
8242
8243(define-public python2-execnet
f210e944 8244 (package-with-python2 python-execnet))
6720dbb4 8245
d5bbf806 8246(define-public python-trollius-redis
8247 (package
8248 (name "python-trollius-redis")
8249 (version "0.1.4")
8250 (source
8251 (origin
8252 (method url-fetch)
8253 (uri (pypi-uri "trollius_redis" version))
8254 (sha256
8255 (base32
8256 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
8257 (build-system python-build-system)
8258 (home-page "https://github.com/benjolitz/trollius-redis")
8259 (synopsis "Port of asyncio-redis to trollius")
8260 (description "@code{trollius-redis} is a Redis client for Python
8261 trollius. It is an asynchronious IO (PEP 3156) implementation of the
8262 Redis protocol.")
8263 (license license:bsd-2)))
8264
8265(define-public python2-trollius-redis
8266 (package-with-python2 python-trollius-redis))
8267
6720dbb4
LF
8268;;; The software provided by this package was integrated into pytest 2.8.
8269(define-public python-pytest-cache
8270 (package
8271 (name "python-pytest-cache")
8272 (version "1.0")
8273 (source (origin
8274 (method url-fetch)
8275 (uri (pypi-uri "pytest-cache" version))
8276 (sha256
8277 (base32
8278 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8279 (build-system python-build-system)
f22efa01 8280 (propagated-inputs
630d938f
EF
8281 `(("python-apipkg" ,python-apipkg)
8282 ("python-execnet" ,python-execnet)
8283 ("python-py" ,python-py)
8284 ("python-pytest" ,python-pytest)))
6720dbb4
LF
8285 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8286 (description "The pytest-cache plugin provides tools to rerun failures from
8287the last py.test invocation.")
8288 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 8289 (license license:expat)))
0adc21c2
EF
8290
8291(define-public python2-pytest-cache
f210e944 8292 (package-with-python2 python-pytest-cache))
d7e729fe
LF
8293
8294(define-public python-pytest-localserver
8295 (package
8296 (name "python-pytest-localserver")
29f20168 8297 (version "0.3.5")
d7e729fe
LF
8298 (source (origin
8299 (method url-fetch)
29f20168 8300 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
8301 (sha256
8302 (base32
29f20168 8303 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
8304 (build-system python-build-system)
8305 (arguments
8306 `(#:phases (modify-phases %standard-phases
8307 (replace 'check
8308 (lambda _
8309 (zero? (system* "py.test" "--genscript=runtests.py"))
8310 (zero? (system* "py.test")))))))
8311 (native-inputs
d7e729fe
LF
8312 `(("python-pytest" ,python-pytest)
8313 ("python-requests" ,python-requests)
9ba40f05 8314 ("python-six" ,python-six)))
f22efa01 8315 (propagated-inputs
9ba40f05 8316 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
8317 (synopsis "Py.test plugin to test server connections locally")
8318 (description "Pytest-localserver is a plugin for the pytest testing
8319framework which enables you to test server connections locally.")
8320 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8321 (license license:expat)))
28cecbb7
LF
8322
8323(define-public python-wsgi-intercept
8324 (package
8325 (name "python-wsgi-intercept")
909fbd2b 8326 (version "1.2.2")
28cecbb7
LF
8327 (source (origin
8328 (method url-fetch)
909fbd2b
LF
8329 (uri (string-append
8330 "https://pypi.python.org/packages/"
8331 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8332 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
8333 (sha256
8334 (base32
909fbd2b 8335 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 8336 (build-system python-build-system)
b9fc496f
HG
8337 (propagated-inputs
8338 `(("python-six" ,python-six)))
28cecbb7 8339 (native-inputs
9d813ec1 8340 `(("python-pytest" ,python-pytest)
b9fc496f
HG
8341 ("python-httplib2" ,python-httplib2)
8342 ("python-requests" ,python-requests)
8757f050 8343 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
8344 (synopsis "Puts a WSGI application in place of a real URI for testing")
8345 (description "Wsgi_intercept installs a WSGI application in place of a real
8346URI for testing. Testing a WSGI application normally involves starting a
8347server at a local host and port, then pointing your test code to that address.
8348Instead, this library lets you intercept calls to any specific host/port
8349combination and redirect them into a WSGI application importable by your test
8350program. Thus, you can avoid spawning multiple processes or threads to test
8351your Web app.")
8352 (home-page "https://github.com/cdent/wsgi-intercept")
8353 (license license:expat)))
89b8a551
LF
8354
8355(define-public python-pytest-xprocess
8356 (package
8357 (name "python-pytest-xprocess")
8358 (version "0.9.1")
8359 (source (origin
8360 (method url-fetch)
8361 (uri (pypi-uri "pytest-xprocess" version))
8362 (sha256
8363 (base32
8364 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8365 (build-system python-build-system)
8366 (propagated-inputs
8367 `(("python-pytest" ,python-pytest)
8368 ("python-pytest-cache" ,python-pytest-cache)
8369 ("python-psutil" ,python-psutil)))
8370 (synopsis "Pytest plugin to manage external processes across test runs")
8371 (description "Pytest-xprocess is an experimental py.test plugin for managing
8372processes across test runs.")
8373 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8374 (license license:expat)))
5c299bf0
LF
8375
8376(define-public python-icalendar
8377 (package
8378 (name "python-icalendar")
b611d018 8379 (version "3.11.3")
5c299bf0
LF
8380 (source (origin
8381 (method url-fetch)
8382 (uri (pypi-uri "icalendar" version))
8383 (sha256
8384 (base32
b611d018 8385 "086jslw8cg2hni79j267p1dy6d27m7q5hi39ni2clh9waqbdf5v3"))))
5c299bf0
LF
8386 (build-system python-build-system)
8387 (propagated-inputs
8388 `(("python-dateutil-2" ,python-dateutil-2)
8389 ("python-pytz" ,python-pytz)))
8390 (synopsis "Python library for parsing iCalendar files")
8391 (description "The icalendar package is a parser/generator of iCalendar
8392files for use with Python.")
8393 (home-page "https://github.com/collective/icalendar")
3f641af0 8394 (license license:bsd-2)))
6bbbb53e
LF
8395
8396(define-public python-sphinxcontrib-newsfeed
8397 (package
8398 (name "python-sphinxcontrib-newsfeed")
8399 (version "0.1.4")
8400 (source (origin
8401 (method url-fetch)
8402 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8403 (sha256
8404 (base32
8405 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
8406 (build-system python-build-system)
8407 (propagated-inputs
251ed7f2 8408 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
8409 (synopsis "News Feed extension for Sphinx")
8410 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8411Blog, News or Announcements section to a Sphinx website.")
8412 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8413 (license license:bsd-2)))
2216e15c
SB
8414
8415(define-public python-args
8416 (package
8417 (name "python-args")
8418 (version "0.1.0")
8419 (source (origin
8420 (method url-fetch)
8421 (uri (pypi-uri "args" version))
8422 (sha256
8423 (base32
8424 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8425 (build-system python-build-system)
2216e15c
SB
8426 (home-page "https://github.com/kennethreitz/args")
8427 (synopsis "Command-line argument parser")
8428 (description
8429 "This library provides a Python module to parse command-line arguments.")
3f641af0 8430 (license license:bsd-3)))
2216e15c
SB
8431
8432(define-public python2-args
8433 (package-with-python2 python-args))
c06a3de9
SB
8434
8435(define-public python-clint
8436 (package
8437 (name "python-clint")
8438 (version "0.5.1")
8439 (source (origin
8440 (method url-fetch)
8441 (uri (pypi-uri "clint" version))
8442 (sha256
8443 (base32
8444 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8445 (build-system python-build-system)
f22efa01 8446 (propagated-inputs
f3b98f4f 8447 `(("python-args" ,python-args)))
c06a3de9
SB
8448 (home-page "https://github.com/kennethreitz/clint")
8449 (synopsis "Command-line interface tools")
8450 (description
8451 "Clint is a Python module filled with a set of tools for developing
8452command-line applications, including tools for colored and indented
8453output, progress bar display, and pipes.")
3f641af0 8454 (license license:isc)))
c06a3de9
SB
8455
8456(define-public python2-clint
8457 (package-with-python2 python-clint))
4ecdeef8
SB
8458
8459(define-public python-astor
8460 (package
8461 (name "python-astor")
8462 (version "0.5")
8463 (source (origin
8464 (method url-fetch)
8465 (uri (pypi-uri "astor" version))
8466 (sha256
8467 (base32
8468 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8469 (build-system python-build-system)
4ecdeef8
SB
8470 (home-page "https://github.com/berkerpeksag/astor")
8471 (synopsis "Read and write Python ASTs")
8472 (description
8473 "Astor is designed to allow easy manipulation of Python source via the
8474Abstract Syntax Tree.")
3f641af0 8475 (license license:bsd-3)))
4ecdeef8
SB
8476
8477(define-public python2-astor
8478 (package-with-python2 python-astor))
e224b7d0
SB
8479
8480(define-public python-rply
8481 (package
8482 (name "python-rply")
8483 (version "0.7.4")
8484 (source (origin
8485 (method url-fetch)
8486 (uri (pypi-uri "rply" version))
8487 (sha256
8488 (base32
8489 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8490 (build-system python-build-system)
f22efa01 8491 (propagated-inputs
f3b98f4f 8492 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
8493 (home-page "https://github.com/alex/rply")
8494 (synopsis "Parser generator for Python")
8495 (description
8496 "This package provides a pure Python based parser generator, that also
8497works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8498with a new public API, and RPython support.")
3f641af0 8499 (license license:bsd-3)))
e224b7d0
SB
8500
8501(define-public python2-rply
8502 (package-with-python2 python-rply))
c3e919d7
SB
8503
8504(define-public python-hy
8505 (package
8506 (name "python-hy")
8507 (version "0.11.1")
8508 (source (origin
8509 (method url-fetch)
8510 (uri (pypi-uri "hy" version))
8511 (sha256
8512 (base32
8513 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8514 (build-system python-build-system)
f22efa01 8515 (propagated-inputs
c3e919d7
SB
8516 `(("python-astor" ,python-astor)
8517 ("python-clint" ,python-clint)
f3b98f4f 8518 ("python-rply" ,python-rply)))
c3e919d7
SB
8519 (home-page "http://hylang.org/")
8520 (synopsis "Lisp frontend to Python")
8521 (description
8522 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8523its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8524Python at your fingertips, in Lisp form.")
8525 (license license:expat)))
8526
8527(define-public python2-hy
8528 (package-with-python2 python-hy))
7a5b944e 8529
81f7f297
EF
8530(define-public python-rauth
8531 (package
8532 (name "python-rauth")
8533 (version "0.7.2")
8534 (source
8535 (origin
8536 (method url-fetch)
8537 (uri (pypi-uri "rauth" version))
8538 (sha256
8539 (base32
8540 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
8541 (build-system python-build-system)
8542 (arguments
8543 `(#:test-target "check"))
f22efa01 8544 (propagated-inputs
81f7f297
EF
8545 `(("python-requests" ,python-requests)))
8546 (home-page "https://github.com/litl/rauth")
8547 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
8548 (description
8549 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
8550provides service wrappers for convenient connection initialization and
8551authenticated session objects providing things like keep-alive.")
0848d8d3
EF
8552 (license license:expat)
8553 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
8554
8555(define-public python2-rauth
0848d8d3
EF
8556 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
8557 (package
8558 (inherit base)
00e10c6e 8559 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 8560 ,@(package-native-inputs base))))))
81f7f297 8561
1abe448d
EF
8562(define-public python2-functools32
8563 (package
8564 (name "python2-functools32")
8565 (version "3.2.3-2")
8566 (source
8567 (origin
8568 (method url-fetch)
8569 (uri (pypi-uri "functools32" version))
8570 (sha256
8571 (base32
8572 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
8573 (build-system python-build-system)
8574 (arguments
8575 `(#:python ,python-2
8576 #:tests? #f)) ; no test target
1abe448d
EF
8577 (home-page "https://github.com/MiCHiLU/python-functools32")
8578 (synopsis
8579 "Backport of the functools module from Python 3.2.3")
8580 (description
8581 "This package is a backport of the @code{functools} module from Python
85823.2.3 for use with older versions of Python and PyPy.")
8583 (license license:expat)))
8584
877889f3 8585(define-public python2-futures
7a5b944e 8586 (package
877889f3 8587 (name "python2-futures")
7a5b944e
EF
8588 (version "3.0.3")
8589 (source
8590 (origin
8591 (method url-fetch)
8592 (uri (pypi-uri "futures" version))
8593 (sha256
8594 (base32
8595 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
8596 (build-system python-build-system)
877889f3 8597 (arguments `(#:python ,python-2))
7a5b944e
EF
8598 (home-page "https://github.com/agronholm/pythonfutures")
8599 (synopsis
8600 "Backport of the concurrent.futures package from Python 3.2")
8601 (description
8602 "The concurrent.futures module provides a high-level interface for
8603asynchronously executing callables. This package backports the
8604concurrent.futures package from Python 3.2")
3f641af0 8605 (license license:bsd-3)))
7a5b944e 8606
5cb2fe44
EF
8607(define-public python-promise
8608 (package
8609 (name "python-promise")
8610 (version "0.4.2")
8611 (source
8612 (origin
8613 (method url-fetch)
8614 (uri (pypi-uri "promise" version))
8615 (sha256
8616 (base32
8617 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
8618 (build-system python-build-system)
8619 ;; Tests wants python-futures, which is a python2 only program, and
8620 ;; can't be found by python-promise at test time.
8621 (arguments `(#:tests? #f))
8622 (home-page "https://github.com/syrusakbary/promise")
8623 (synopsis "Promises/A+ implementation for Python")
8624 (description
8625 "Promises/A+ implementation for Python")
8626 (properties `((python2-variant . ,(delay python2-promise))))
8627 (license license:expat)))
8628
8629(define-public python2-promise
8630 (let ((promise (package-with-python2
8631 (strip-python2-variant python-promise))))
8632 (package (inherit promise)
8633 (arguments (substitute-keyword-arguments (package-arguments promise)
8634 ((#:tests? _) #t)))
8635 (native-inputs
8636 `(("python2-futures" ,python2-futures)
8637 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
8638 ,@(package-native-inputs promise))))))
8639
c18f6368
EF
8640(define-public python-urllib3
8641 (package
8642 (name "python-urllib3")
6178274d 8643 (version "1.18.1")
c18f6368
EF
8644 (source
8645 (origin
8646 (method url-fetch)
8647 (uri (pypi-uri "urllib3" version))
8648 (sha256
8649 (base32
6178274d 8650 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
8651 (build-system python-build-system)
8652 (arguments `(#:tests? #f))
8653 (native-inputs
f3b98f4f 8654 `(;; some packages for tests
c18f6368
EF
8655 ("python-nose" ,python-nose)
8656 ("python-mock" ,python-mock)
8657 ("python-tornado" ,python-tornado)))
8658 (propagated-inputs
8322749a 8659 `(;; extra packages for https security
c18f6368
EF
8660 ("python-certifi" ,python-certifi)
8661 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
8662 ("python-pyasn1" ,python-pyasn1)
8663 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 8664 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
8665 (synopsis "HTTP library with thread-safe connection pooling")
8666 (description
8667 "Urllib3 supports features left out of urllib and urllib2 libraries. It
8668can reuse the same socket connection for multiple requests, it can POST files,
8669supports url redirection and retries, and also gzip and deflate decoding.")
8670 (license license:expat)))
8671
8672(define-public python2-urllib3
8673 (package-with-python2 python-urllib3))
2b2f2fc1
DT
8674
8675(define-public python-colorama
8676 (package
8677 (name "python-colorama")
f92576f9 8678 (version "0.3.7")
2b2f2fc1
DT
8679 (source
8680 (origin
8681 (method url-fetch)
8682 (uri (pypi-uri "colorama" version))
8683 (sha256
8684 (base32
f92576f9 8685 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
2b2f2fc1 8686 (build-system python-build-system)
46e110cc 8687 (synopsis "Colored terminal text rendering for Python")
2b2f2fc1
DT
8688 (description "Colorama is a Python library for rendering colored terminal
8689text.")
8690 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 8691 (license license:bsd-3)))
2b2f2fc1
DT
8692
8693(define-public python2-colorama
8694 (package-with-python2 python-colorama))
f5bcec6e
DT
8695
8696(define-public python-rsa
8697 (package
8698 (name "python-rsa")
ecd68c53 8699 (version "3.4.2")
f5bcec6e
DT
8700 (source
8701 (origin
8702 (method url-fetch)
8703 (uri (pypi-uri "rsa" version))
8704 (sha256
8705 (base32
ecd68c53 8706 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 8707 (build-system python-build-system)
f22efa01 8708 (propagated-inputs
f3b98f4f 8709 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
8710 (synopsis "Pure-Python RSA implementation")
8711 (description "Python-RSA is a pure-Python RSA implementation. It supports
8712encryption and decryption, signing and verifying signatures, and key
8713generation according to PKCS#1 version 1.5. It can be used as a Python
8714library as well as on the command line.")
8715 (home-page "http://stuvel.eu/rsa")
3f641af0 8716 (license license:asl2.0)))
f5bcec6e
DT
8717
8718(define-public python2-rsa
8719 (package-with-python2 python-rsa))
c0aacfa5
DT
8720
8721(define-public python-pluggy
8722 (package
8723 (name "python-pluggy")
8724 (version "0.3.1")
8725 (source
8726 (origin
8727 (method url-fetch)
8728 (uri (pypi-uri "pluggy" version))
8729 (sha256
8730 (base32
8731 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
8732 (build-system python-build-system)
c0aacfa5
DT
8733 (synopsis "Plugin and hook calling mechanism for Python")
8734 (description "Pluggy is an extraction of the plugin manager as used by
8735Pytest but stripped of Pytest specific details.")
8736 (home-page "https://pypi.python.org/pypi/pluggy")
8737 (license license:expat)))
8738
8739(define-public python2-pluggy
8740 (package-with-python2 python-pluggy))
a4af21ca
DT
8741
8742(define-public python-tox
8743 (package
8744 (name "python-tox")
8745 (version "2.3.1")
8746 (source
8747 (origin
8748 (method url-fetch)
8749 (uri (pypi-uri "tox" version))
8750 (sha256
8751 (base32
8752 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
8753 (build-system python-build-system)
8754 (arguments
7ba07edf
HG
8755 ;; FIXME: Tests require pytest-timeout, which itself requires
8756 ;; pytest>=2.8.0 for installation.
a4af21ca 8757 '(#:tests? #f))
482d9591
HG
8758 (propagated-inputs
8759 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 8760 ("python-py" ,python-py)
482d9591 8761 ("python-virtualenv" ,python-virtualenv)))
328bb95d 8762 (native-inputs
7ba07edf
HG
8763 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
8764 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
8765 (home-page "http://tox.testrun.org/")
8766 (synopsis "Virtualenv-based automation of test activities")
8767 (description "Tox is a generic virtualenv management and test command line
8768tool. It can be used to check that a package installs correctly with
8769different Python versions and interpreters, or run tests in each type of
8770supported environment, or act as a frontend to continuous integration
8771servers.")
8772 (license license:expat)))
8773
8774(define-public python2-tox
8775 (package-with-python2 python-tox))
ba9da248
DT
8776
8777(define-public python-jmespath
8778 (package
8779 (name "python-jmespath")
8780 (version "0.9.0")
8781 (source
8782 (origin
8783 (method url-fetch)
8784 (uri (pypi-uri "jmespath" version))
8785 (sha256
8786 (base32
8787 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
8788 (build-system python-build-system)
ba9da248
DT
8789 (synopsis "JSON Matching Expressions")
8790 (description "JMESPath (pronounced “james path”) is a Python library that
8791allows one to declaratively specify how to extract elements from a JSON
8792document.")
8793 (home-page "https://github.com/jmespath/jmespath.py")
8794 (license license:expat)))
8795
8796(define-public python2-jmespath
8797 (package-with-python2 python-jmespath))
935fcd5c
DT
8798
8799(define-public python-botocore
8800 (package
8801 (name "python-botocore")
0a7d96f8 8802 (version "1.5.10")
935fcd5c
DT
8803 (source
8804 (origin
8805 (method url-fetch)
8806 (uri (pypi-uri "botocore" version))
8807 (sha256
8808 (base32
0a7d96f8 8809 "1hqvqwhgfcch4knm1l02ynx7qd1igxk3pj34c1x2b0r79jca524n"))))
935fcd5c 8810 (build-system python-build-system)
482d9591 8811 (propagated-inputs
935fcd5c
DT
8812 `(("python-dateutil" ,python-dateutil-2)
8813 ("python-docutils" ,python-docutils)
482d9591 8814 ("python-jmespath" ,python-jmespath)))
8fa6890b 8815 (native-inputs
482d9591 8816 `(("python-mock" ,python-mock)
935fcd5c 8817 ("python-nose" ,python-nose)
482d9591 8818 ("behave" ,behave)
935fcd5c 8819 ("python-tox" ,python-tox)
482d9591 8820 ("python-wheel" ,python-wheel)))
935fcd5c
DT
8821 (home-page "https://github.com/boto/botocore")
8822 (synopsis "Low-level interface to AWS")
8823 (description "Botocore is a Python library that provides a low-level
8824interface to the Amazon Web Services (AWS) API.")
3f641af0 8825 (license license:asl2.0)))
935fcd5c
DT
8826
8827(define-public python2-botocore
8828 (package-with-python2 python-botocore))
f861b8b8
DT
8829
8830(define-public awscli
8831 (package
8832 (name "awscli")
a9c15e8b 8833 (version "1.11.47")
f861b8b8
DT
8834 (source
8835 (origin
8836 (method url-fetch)
d5ccf71e 8837 (uri (pypi-uri name version))
f861b8b8
DT
8838 (sha256
8839 (base32
a9c15e8b 8840 "0p0pila0k99fm87q1gb24wyd34ags0vkh37h1fa6hklq4mi69i1w"))))
f861b8b8 8841 (build-system python-build-system)
482d9591 8842 (propagated-inputs
f861b8b8 8843 `(("python-colorama" ,python-colorama)
482d9591
HG
8844 ("python-botocore" ,python-botocore)
8845 ("python-s3transfer" ,python-s3transfer)
f861b8b8 8846 ("python-docutils" ,python-docutils)
482d9591 8847 ("python-rsa" ,python-rsa)))
d4649177 8848 (native-inputs
482d9591 8849 `(("python-mock" ,python-mock)
f861b8b8 8850 ("python-nose" ,python-nose)
f861b8b8
DT
8851 ("python-sphinx" ,python-sphinx)
8852 ("python-tox" ,python-tox)
482d9591 8853 ("python-wheel" ,python-wheel)))
60a8be3a 8854 (home-page "https://aws.amazon.com/cli/")
f861b8b8
DT
8855 (synopsis "Command line client for AWS")
8856 (description "AWS CLI provides a unified command line interface to the
8857Amazon Web Services (AWS) API.")
3f641af0 8858 (license license:asl2.0)))
6a44697d
LF
8859
8860(define-public python-hypothesis
8861 (package
8862 (name "python-hypothesis")
bea6d94d 8863 (version "3.1.0")
6a44697d
LF
8864 (source (origin
8865 (method url-fetch)
8866 (uri (pypi-uri "hypothesis" version))
8867 (sha256
8868 (base32
bea6d94d 8869 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 8870 (build-system python-build-system)
6a44697d
LF
8871 (propagated-inputs
8872 `(("python-flake8" ,python-flake8)
8873 ("python-pytest" ,python-pytest)))
8874 (synopsis "Library for property based testing")
8875 (description "Hypothesis is a library for testing your Python code against a
8876much larger range of examples than you would ever want to write by hand. It’s
8877based on the Haskell library, Quickcheck, and is designed to integrate
8878seamlessly into your existing Python unit testing work flow.")
8879 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 8880 (license license:mpl2.0)
6f068e08 8881 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
8882
8883(define-public python2-hypothesis
6f068e08
EF
8884 (let ((hypothesis (package-with-python2
8885 (strip-python2-variant python-hypothesis))))
8886 (package (inherit hypothesis)
8887 (native-inputs
f3b98f4f 8888 `(("python2-enum34" ,python2-enum34))))))
7517e73c
LF
8889
8890(define-public python-pytest-subtesthack
8891 (package
8892 (name "python-pytest-subtesthack")
8893 (version "0.1.1")
8894 (source (origin
8895 (method url-fetch)
8896 (uri (pypi-uri "pytest-subtesthack" version))
8897 (sha256
8898 (base32
8899 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
8900 (build-system python-build-system)
7517e73c
LF
8901 (propagated-inputs
8902 `(("python-pytest" ,python-pytest)))
8903 (synopsis "Set-up and tear-down fixtures for unit tests")
8904 (description "This plugin allows you to set up and tear down fixtures within
8905unit test functions that use @code{py.test}. This is useful for using
8906@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
8907function multiple times, without setting up or tearing down fixture state as is
8908normally the case.")
8909 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 8910 (license license:unlicense)))
7517e73c
LF
8911
8912(define-public python2-pytest-subtesthack
8913 (package-with-python2 python-pytest-subtesthack))
0bdc1671 8914
7637de23 8915(define-public python-xdo
0bdc1671 8916 (package
7637de23 8917 (name "python-xdo")
e871c332 8918 (version "0.3")
0bdc1671
CAW
8919 (source (origin
8920 (method url-fetch)
8921 (uri (string-append
8922 "http://http.debian.net/debian/pool/main/p/python-xdo/"
8923 "python-xdo_" version ".orig.tar.gz"))
8924 (sha256
8925 (base32
e871c332 8926 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
0bdc1671
CAW
8927 (build-system python-build-system)
8928 (arguments
736cfc10
SB
8929 '(#:phases
8930 (modify-phases %standard-phases
8931 (add-before 'install 'patch-libxdo-path
8932 ;; Hardcode the path of dynamically loaded libxdo library.
8933 (lambda* (#:key inputs #:allow-other-keys)
8934 (let ((libxdo (string-append
8935 (assoc-ref inputs "xdotool")
8936 "/lib/libxdo.so")))
8937 (substitute* "xdo/_xdo.py"
8938 (("find_library\\(\"xdo\"\\)")
8939 (simple-format #f "\"~a\"" libxdo)))
8940 #t))))
8941 #:tests? #f)) ; no tests provided
0b5e0863
SB
8942 (propagated-inputs
8943 `(("python-six" ,python-six)))
0bdc1671
CAW
8944 (inputs
8945 `(("xdotool" ,xdotool)
8946 ("libX11" ,libx11)))
8947 (home-page "https://tracker.debian.org/pkg/python-xdo")
8948 (synopsis "Python library for simulating X11 keyboard/mouse input")
8949 (description "Provides bindings to libxdo for manipulating X11 via simulated
8950input. (Note that this is mostly a legacy library; you may wish to look at
8951python-xdo for newer bindings.)")
3f641af0 8952 (license license:bsd-3)))
0bdc1671 8953
7637de23
LF
8954(define-public python2-xdo
8955 (package-with-python2 python-xdo))
8956
cb34dc6c
CAW
8957(define-public python-wtforms
8958 (package
8959 (name "python-wtforms")
8960 (version "2.1")
8961 (source
8962 (origin
8963 (method url-fetch)
8964 (uri (pypi-uri "WTForms" version ".zip"))
8965 (sha256
8966 (base32
8967 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
8968 (build-system python-build-system)
13c4d874
EF
8969 (arguments
8970 '(#:phases
8971 (modify-phases %standard-phases
8972 (add-after 'unpack 'remove-django-test
8973 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
8974 (lambda _
8975 (substitute*
8976 "tests/runtests.py"
8977 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
8978 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
8979 #t)))))
cb34dc6c
CAW
8980 (native-inputs
8981 `(("unzip" ,unzip)))
8982 (home-page "http://wtforms.simplecodes.com/")
8983 (synopsis
8984 "Form validation and rendering library for Python web development")
8985 (description
8986 "WTForms is a flexible forms validation and rendering library
8987for Python web development. It is very similar to the web form API
8988available in Django, but is a standalone package.")
f210e944 8989 (license license:bsd-3)))
cb34dc6c
CAW
8990
8991(define-public python2-wtforms
f210e944 8992 (package-with-python2 python-wtforms))
50aaec25
DT
8993
8994(define-public python-mako
8995 (package
8996 (name "python-mako")
3753f2e6 8997 (version "1.0.6")
50aaec25
DT
8998 (source
8999 (origin
9000 (method url-fetch)
9001 (uri (pypi-uri "Mako" version))
9002 (sha256
9003 (base32
3753f2e6 9004 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
50aaec25 9005 (build-system python-build-system)
482d9591
HG
9006 (propagated-inputs
9007 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 9008 (native-inputs
482d9591 9009 `(("python-mock" ,python-mock)
50aaec25
DT
9010 ("python-nose" ,python-nose)))
9011 (home-page "http://www.makotemplates.org/")
9012 (synopsis "Templating language for Python")
9013 (description "Mako is a templating language for Python that compiles
9014templates into Python modules.")
f210e944 9015 (license license:expat)))
50aaec25
DT
9016
9017(define-public python2-mako
f210e944 9018 (package-with-python2 python-mako))
ae00a41f
CAW
9019
9020(define-public python-waitress
9021 (package
9022 (name "python-waitress")
9023 (version "0.8.10")
9024 (source
9025 (origin
9026 (method url-fetch)
9027 (uri (pypi-uri "waitress" version))
9028 (sha256
9029 (base32
9030 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
9031 (build-system python-build-system)
9032 (home-page "https://github.com/Pylons/waitress")
9033 (synopsis "Waitress WSGI server")
9034 (description "Waitress is meant to be a production-quality pure-Python WSGI
9035server with very acceptable performance.")
f210e944 9036 (license license:zpl2.1)))
ae00a41f
CAW
9037
9038(define-public python2-waitress
f210e944 9039 (package-with-python2 python-waitress))
778a284b
CAW
9040
9041(define-public python-wsgiproxy2
9042 (package
9043 (name "python-wsgiproxy2")
9044 (version "0.4.2")
9045 (source
9046 (origin
9047 (method url-fetch)
9048 (uri (pypi-uri "WSGIProxy2" version ".zip"))
9049 (sha256
9050 (base32
9051 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
9052 (build-system python-build-system)
e359b31a
LF
9053 (arguments
9054 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
9055 ;; support Python 3:
9056 ;; https://github.com/benoitc/restkit/issues/140
9057 #:tests? #f))
778a284b
CAW
9058 (native-inputs
9059 `(("unzip" ,unzip)
9060 ("python-nose" ,python-nose)
9061 ("python-coverage" ,python-coverage)))
9062 (propagated-inputs
9063 `(("python-six" ,python-six)
9064 ("python-webob" ,python-webob)))
9065 (home-page
9066 "https://github.com/gawel/WSGIProxy2/")
9067 (synopsis "WSGI Proxy with various http client backends")
9068 (description "WSGI turns HTTP requests into WSGI function calls.
9069WSGIProxy turns WSGI function calls into HTTP requests.
9070It also includes code to sign requests and pass private data,
9071and to spawn subprocesses to handle requests.")
f210e944 9072 (license license:expat)))
778a284b
CAW
9073
9074(define-public python2-wsgiproxy2
f210e944 9075 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
9076
9077(define-public python-pastedeploy
9078 (package
9079 (name "python-pastedeploy")
9080 (version "1.5.2")
9081 (source
9082 (origin
9083 (method url-fetch)
9084 (uri (pypi-uri "PasteDeploy" version))
9085 (sha256
9086 (base32
9087 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
9088 (build-system python-build-system)
9089 (native-inputs
9090 `(("python-nose" ,python-nose)))
bb7518b1
CAW
9091 (home-page "http://pythonpaste.org/deploy/")
9092 (synopsis
9093 "Load, configure, and compose WSGI applications and servers")
9094 (description
9095 "This tool provides code to load WSGI applications and servers from URIs;
9096these URIs can refer to Python Eggs for INI-style configuration files. Paste
9097Script provides commands to serve applications based on this configuration
9098file.")
9099 (license license:expat)))
9100
9101(define-public python2-pastedeploy
9102 (package-with-python2 python-pastedeploy))
1cf53652 9103
c4a7904c
CAW
9104(define-public python-paste
9105 (package
9106 (name "python-paste")
ba1731da 9107 (version "2.0.3")
c4a7904c
CAW
9108 (source
9109 (origin
9110 (method url-fetch)
9111 (uri (pypi-uri "Paste" version))
9112 (sha256
9113 (base32
ba1731da 9114 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
fc1adab1
AK
9115 (patches (search-patches "python-paste-remove-website-test.patch"
9116 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
9117 (build-system python-build-system)
9118 (native-inputs
9119 `(("python-nose" ,python-nose)))
9120 (propagated-inputs
f3b98f4f 9121 `(("python-six" ,python-six)))
c4a7904c
CAW
9122 (home-page "http://pythonpaste.org")
9123 (synopsis
9124 "Python web development tools, focusing on WSGI")
9125 (description
9126 "Paste provides a variety of web development tools and middleware which
9127can be nested together to build web applications. Paste's design closely
9128follows ideas flowing from WSGI (Web Standard Gateway Interface).")
ba1731da 9129 (license license:expat)))
c4a7904c
CAW
9130
9131(define-public python2-paste
ba1731da 9132 (package-with-python2 python-paste))
c4a7904c 9133
a8f20f63
CAW
9134(define-public python-pastescript
9135 (package
9136 (name "python-pastescript")
9137 (version "2.0.2")
9138 (source
9139 (origin
9140 (method url-fetch)
9141 (uri (pypi-uri "PasteScript" version))
9142 (sha256
9143 (base32
9144 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
9145 (build-system python-build-system)
9146 (native-inputs
9147 `(("python-nose" ,python-nose)))
9148 (propagated-inputs
f3b98f4f 9149 `(("python-paste" ,python-paste)
a8f20f63
CAW
9150 ("python-pastedeploy" ,python-pastedeploy)))
9151 (home-page "http://pythonpaste.org/script/")
9152 (arguments
9153 '(;; Unfortunately, this requires the latest unittest2,
9154 ;; but that requires traceback2 which requires linecache2 which requires
9155 ;; unittest2. So we're skipping tests for now.
9156 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
9157 ;; so in theory we could get around this situation somehow.)
9158 #:tests? #f))
9159 (synopsis
9160 "Pluggable command line tool for serving web applications and more")
9161 (description
9162 "PasteScript is a plugin-friendly command line tool which provides a
9163variety of features, from launching web applications to bootstrapping project
9164layouts.")
9165 (license license:expat)))
9166
9167(define-public python2-pastescript
9168 (package-with-python2 python-pastescript))
9169
1cf53652
CAW
9170(define-public python-pyquery
9171 (package
9172 (name "python-pyquery")
ab0c3429 9173 (version "1.2.17")
1cf53652
CAW
9174 (source
9175 (origin
9176 (method url-fetch)
9177 (uri (pypi-uri "pyquery" version))
9178 (sha256
9179 (base32
ab0c3429 9180 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
1cf53652 9181 (build-system python-build-system)
2ddbfa8c
LF
9182 (native-inputs
9183 `(("python-webob" ,python-webob)
9184 ("python-webtest" ,python-webtest)))
1cf53652
CAW
9185 (propagated-inputs
9186 `(("python-lxml" ,python-lxml)
9187 ("python-cssselect" ,python-cssselect)))
9188 (home-page "https://github.com/gawel/pyquery")
9189 (synopsis "Make jQuery-like queries on xml documents")
9190 (description "pyquery allows you to make jQuery queries on xml documents.
9191The API is as much as possible the similar to jQuery. pyquery uses lxml for
9192fast xml and html manipulation.")
f210e944 9193 (license license:bsd-3)))
1cf53652
CAW
9194
9195(define-public python2-pyquery
f210e944 9196 (package-with-python2 python-pyquery))
aa6313d6
CAW
9197
9198(define-public python-webtest
9199 (package
9200 (name "python-webtest")
9201 (version "2.0.20")
9202 (source
9203 (origin
9204 (method url-fetch)
9205 (uri (pypi-uri "WebTest" version))
9206 (sha256
9207 (base32
9208 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
9209 (build-system python-build-system)
9210 (arguments
9211 `(;; Unfortunately we have to disable tests!
9212 ;; This release of WebTest is pinned to python-nose < 1.3,
9213 ;; but older versions of python-nose are plagued with the following
9214 ;; bug(s), which rears its ugly head during test execution:
9215 ;; https://github.com/nose-devs/nose/issues/759
9216 ;; https://github.com/nose-devs/nose/pull/811
9217 #:tests? #f))
9218 ;; Commented out code is no good, but in this case, once tests
9219 ;; are ready to be enabled again, we should put the following
9220 ;; in place:
9221 ;; (native-inputs
9222 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9223 ;; ; but see above comment
9224 ;; ("python-coverage" ,python-coverage)
9225 ;; ("python-mock" ,python-mock)
9226 ;; ("python-pastedeploy" ,python-pastedeploy)
9227 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9228 ;; ("python-pyquery" ,python-pyquery)))
9229 (propagated-inputs
9230 `(("python-waitress" ,python-waitress)
9231 ("python-webob" ,python-webob)
9232 ("python-six" ,python-six)
9233 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9234 (home-page "http://webtest.pythonpaste.org/")
9235 (synopsis "Helper to test WSGI applications")
9236 (description "Webtest allows you to test your Python web applications
9237without starting an HTTP server. It supports anything that supports the
9238minimum of WSGI.")
f210e944 9239 (license license:expat)))
aa6313d6
CAW
9240
9241(define-public python2-webtest
f210e944 9242 (package-with-python2 python-webtest))
4cb122cd
CAW
9243
9244(define-public python-anyjson
9245 (package
9246 (name "python-anyjson")
9247 (version "0.3.3")
9248 (source
9249 (origin
9250 (method url-fetch)
9251 (uri (pypi-uri "anyjson" version))
9252 (sha256
9253 (base32
9254 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9255 (build-system python-build-system)
9256 (arguments
9257 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9258 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9259 ;; whatever) so this transformation needs to be done before the tests
9260 ;; can be run. Maybe we could add a build step to transform beforehand
9261 ;; but it could be annoying/difficult.
9262 ;; We can enable tests for the Python 2 version, though, and do below.
9263 #:tests? #f))
9264 (home-page "http://bitbucket.org/runeh/anyjson/")
9265 (synopsis
9266 "Wraps best available JSON implementation in a common interface")
9267 (description
9268 "Anyjson loads whichever is the fastest JSON module installed
9269and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 9270 (license license:bsd-3)
4cb122cd
CAW
9271 (properties `((python2-variant . ,(delay python2-anyjson))))))
9272
9273(define-public python2-anyjson
9274 (let ((anyjson (package-with-python2
9275 (strip-python2-variant python-anyjson))))
9276 (package
9277 (inherit anyjson)
9278 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9279 #:tests? #t
9280 ,@(package-arguments anyjson)))
00e10c6e 9281 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
9282
9283(define-public python-amqp
9284 (package
9285 (name "python-amqp")
9286 (version "1.4.9")
9287 (source
9288 (origin
9289 (method url-fetch)
9290 (uri (pypi-uri "amqp" version))
9291 (sha256
9292 (base32
9293 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9294 (build-system python-build-system)
9295 (native-inputs
9296 `(("python-nose" ,python-nose)
9297 ("python-mock" ,python-mock)))
9298 (home-page "http://github.com/celery/py-amqp")
9299 (synopsis
9300 "Low-level AMQP client for Python (fork of amqplib)")
9301 (description
9302 "This is a fork of amqplib which was originally written by Barry Pederson.
9303It is maintained by the Celery project, and used by kombu as a pure python
9304alternative when librabbitmq is not available.")
3f641af0 9305 (license license:lgpl2.1+)
8dfceab7
CAW
9306 (properties `((python2-variant . ,(delay python2-amqp))))))
9307
9308(define-public python2-amqp
9309 (let ((amqp (package-with-python2
9310 (strip-python2-variant python-amqp))))
9311 (package
9312 (inherit amqp)
9313 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9314 ;; unmaintained. Weirdly, does not do this on the python 3
9315 ;; version?
9316 #:tests? #f
00e10c6e 9317 ,@(package-arguments amqp))))))
7d387305
CAW
9318
9319(define-public python-kombu
9320 (package
9321 (name "python-kombu")
0cb59822 9322 (version "3.0.37")
7d387305
CAW
9323 (source
9324 (origin
9325 (method url-fetch)
9326 (uri (pypi-uri "kombu" version))
9327 (sha256
9328 (base32
0cb59822 9329 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
9330 (build-system python-build-system)
9331 (native-inputs
9332 `(("python-mock" ,python-mock)
9333 ("python-nose" ,python-nose)))
9334 (propagated-inputs
9335 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
9336 ("python-amqp" ,python-amqp)
9337 ("python-redis" ,python-redis)))
7d387305
CAW
9338 (home-page "http://kombu.readthedocs.org")
9339 (synopsis "Message passing library for Python")
9340 (description "The aim of Kombu is to make messaging in Python as easy as
9341possible by providing an idiomatic high-level interface for the AMQ protocol,
9342and also provide proven and tested solutions to common messaging problems.
9343AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9344message orientation, queuing, routing, reliability and security, for which the
9345RabbitMQ messaging server is the most popular implementation.")
3f641af0 9346 (license license:bsd-3)
7d387305
CAW
9347 (properties `((python2-variant . ,(delay python2-kombu))))))
9348
9349(define-public python2-kombu
9350 (let ((kombu (package-with-python2
9351 (strip-python2-variant python-kombu))))
9352 (package
9353 (inherit kombu)
328bb95d
HG
9354 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9355 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
9356
9357(define-public python-billiard
9358 (package
9359 (name "python-billiard")
a6bb9e44 9360 (version "3.3.0.23")
b6f0b9fb
CAW
9361 (source
9362 (origin
9363 (method url-fetch)
9364 (uri (pypi-uri "billiard" version))
9365 (sha256
9366 (base32
a6bb9e44 9367 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
9368 (build-system python-build-system)
9369 (native-inputs
9370 `(("python-nose" ,python-nose)))
9371 (home-page "http://github.com/celery/billiard")
9372 (synopsis
9373 "Python multiprocessing fork with improvements and bugfixes")
9374 (description
9375 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9376multiprocessing package itself is a renamed and updated version of R Oudkerk's
9377pyprocessing package. This standalone variant is intended to be compatible with
9378Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9379 (license license:bsd-3)
b6f0b9fb
CAW
9380 (properties `((python2-variant . ,(delay python2-billiard))))))
9381
9382(define-public python2-billiard
9383 (let ((billiard (package-with-python2
9384 (strip-python2-variant python-billiard))))
9385 (package
9386 (inherit billiard)
00e10c6e 9387 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
9388 ("python2-mock" ,python2-mock)
9389 ,@(package-native-inputs billiard))))))
22df6419
CAW
9390
9391(define-public python-celery
9392 (package
9393 (name "python-celery")
9ebe87fe 9394 (version "3.1.24")
22df6419
CAW
9395 (source
9396 (origin
9397 (method url-fetch)
9398 (uri (pypi-uri "celery" version))
9399 (sha256
9400 (base32
9ebe87fe 9401 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 9402 (build-system python-build-system)
9ebe87fe
LF
9403 (arguments
9404 `(#:phases
9405 (modify-phases %standard-phases
9406 ;; These tests break with Python 3.5:
9407 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9408 (replace 'check
9409 (lambda _
9410 (zero?
9411 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
9412 (native-inputs
9413 `(("python-nose" ,python-nose)))
f22efa01 9414 (propagated-inputs
22df6419
CAW
9415 `(("python-pytz" ,python-pytz)
9416 ("python-billiard" ,python-billiard)
9417 ("python-kombu" ,python-kombu)))
9418 (home-page "http://celeryproject.org")
9419 (synopsis "Distributed Task Queue")
9420 (description "Celery is an asynchronous task queue/job queue based on
9421distributed message passing. It is focused on real-time operation, but
9422supports scheduling as well. The execution units, called tasks, are executed
9423concurrently on a single or more worker servers using multiprocessing,
9424Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9425synchronously (wait until ready).")
3f641af0 9426 (license license:bsd-3)
22df6419
CAW
9427 (properties `((python2-variant . ,(delay python2-celery))))))
9428
9429(define-public python2-celery
9430 (let ((celery (package-with-python2
9431 (strip-python2-variant python-celery))))
9432 (package
9433 (inherit celery)
00e10c6e 9434 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
9435 ("python2-mock" ,python2-mock)
9436 ,@(package-native-inputs celery))))))
97e32948
CAW
9437
9438(define-public python-translitcodec
9439 (package
9440 (name "python-translitcodec")
9441 (version "0.4.0")
9442 (source
9443 (origin
9444 (method url-fetch)
9445 (uri (pypi-uri "translitcodec" version))
9446 (sha256
9447 (base32
9448 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9449 (build-system python-build-system)
9450 (arguments
9451 `(#:tests? #f)) ; no tests provided
9452 (home-page
9453 "https://github.com/claudep/translitcodec")
9454 (synopsis
9455 "Unicode to 8-bit charset transliteration codec")
9456 (description
9457 "This package contains codecs for transliterating ISO 10646 texts into
9458best-effort representations using smaller coded character sets (ASCII,
9459ISO 8859, etc.).")
f210e944 9460 (license license:expat)))
97e32948
CAW
9461
9462(define-public python2-translitcodec
f210e944 9463 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
9464
9465(define-public python-editor
9466 (package
9467 (name "python-editor")
9468 (version "0.5")
9469 (source
9470 (origin
9471 (method url-fetch)
9472 (uri (pypi-uri "python-editor" version))
9473 (sha256
9474 (base32
9475 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9476 (build-system python-build-system)
9477 (home-page
9478 "https://github.com/fmoo/python-editor")
9479 (synopsis
9480 "Programmatically open an editor, capture the result")
9481 (description
9482 "python-editor is a library that provides the editor module for
9483programmatically interfacing with your system's $EDITOR.")
f210e944 9484 (license license:asl2.0)))
0c3b90d4
CAW
9485
9486(define-public python2-editor
f210e944 9487 (package-with-python2 python-editor))
3276517c
LF
9488
9489(define-public python-sphinxcontrib-programoutput
9490 (package
9491 (name "python-sphinxcontrib-programoutput")
9492 (version "0.8")
9493 (source (origin
9494 (method url-fetch)
9495 (uri (pypi-uri "sphinxcontrib-programoutput" version))
9496 (sha256
9497 (base32
9498 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
9499 (build-system python-build-system)
9500 (propagated-inputs
a0a09859 9501 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
9502 (synopsis "Sphinx extension to include program output")
9503 (description "A Sphinx extension to literally insert the output of arbitrary
9504commands into documents, helping you to keep your command examples up to date.")
9505 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 9506 (license license:bsd-2)))
3276517c
LF
9507
9508(define-public python2-sphinxcontrib-programoutput
f210e944 9509 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
9510
9511(define-public python-sphinx-repoze-autointerface
9512 (package
9513 (name "python-sphinx-repoze-autointerface")
328ae341 9514 (version "0.8")
548d7165
LF
9515 (source (origin
9516 (method url-fetch)
9517 (uri (pypi-uri "repoze.sphinx.autointerface" version))
9518 (sha256
9519 (base32
328ae341 9520 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
9521 (build-system python-build-system)
9522 (propagated-inputs
47c7dc4a 9523 `(("python-sphinx" ,python-sphinx)
548d7165
LF
9524 ("python-zope-interface" ,python-zope-interface)))
9525 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
9526 (description "This package defines an extension for the Sphinx documentation
9527system. The extension allows generation of API documentation by
9528introspection of @code{zope.interface} instances in code.")
9529 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 9530 (license license:repoze)))
548d7165
LF
9531
9532(define-public python2-sphinx-repoze-autointerface
9533 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
9534
9535(define-public python-psycopg2
9536 (package
9537 (name "python-psycopg2")
9538 (version "2.6.1")
9539 (source
9540 (origin
9541 (method url-fetch)
9542 (uri (pypi-uri "psycopg2" version))
9543 (sha256
9544 (base32
9545 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
9546 (build-system python-build-system)
9547 (arguments
9548 ;; Tests would require a postgresql database "psycopg2_test"
9549 ;; and a running postgresql database management service.
9550 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
9551 (inputs
9552 `(("postgresql" ,postgresql))) ; libpq
9553 (home-page "http://initd.org/psycopg/")
9554 (synopsis "Python PostgreSQL adapter")
9555 (description
9556 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 9557 (license license:lgpl3+)))
b31fbea5
DM
9558
9559(define-public python2-psycopg2
f210e944 9560 (package-with-python2 python-psycopg2))
eed1a61f
LF
9561
9562(define-public python-vobject
9563 (package
9564 (name "python-vobject")
9bed9b15 9565 (version "0.9.2")
eed1a61f
LF
9566 (source (origin
9567 (method url-fetch)
9568 (uri (pypi-uri "vobject" version))
9569 (sha256
9570 (base32
9bed9b15 9571 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f 9572 (build-system python-build-system)
a9871b7b
LF
9573 (arguments
9574 '(;; The test suite relies on some non-portable Windows interfaces.
9575 #:tests? #f))
f22efa01 9576 (propagated-inputs
eed1a61f
LF
9577 `(("python-dateutil-2" ,python-dateutil-2)
9578 ("python-pyicu" ,python-pyicu)))
9579 (synopsis "Parse and generate vCard and vCalendar files")
9580 (description "Vobject is intended to be a full featured Python package for
9581parsing and generating vCard and vCalendar files. Currently, iCalendar files
9582are supported and well tested. vCard 3.0 files are supported, and all data
9583should be imported, but only a few components are understood in a sophisticated
9584way.")
9585 (home-page "http://eventable.github.io/vobject/")
f210e944 9586 (license license:asl2.0)))
eed1a61f
LF
9587
9588(define-public python2-vobject
f210e944 9589 (package-with-python2 python-vobject))
cedac813
LF
9590
9591(define-public python-munkres
9592 (package
9593 (name "python-munkres")
38e81a2c 9594 (version "1.0.8")
cedac813
LF
9595 (source (origin
9596 (method url-fetch)
9597 (uri (pypi-uri "munkres" version))
9598 (sha256
9599 (base32
38e81a2c 9600 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
9601 (build-system python-build-system)
9602 (arguments
9603 '(#:tests? #f)) ; no test suite
9604 (home-page "http://software.clapper.org/munkres/")
9605 (synopsis "Implementation of the Munkres algorithm")
9606 (description "The Munkres module provides an implementation of the Munkres
9607algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
9608useful for solving the Assignment Problem.")
3f641af0 9609 (license license:bsd-3)))
cedac813
LF
9610
9611(define-public python2-munkres
9612 (package-with-python2 python-munkres))
f3b3d78f
LF
9613
9614(define-public python-flask
9615 (package
9616 (name "python-flask")
c6c80104 9617 (version "0.11.1")
f3b3d78f
LF
9618 (source (origin
9619 (method url-fetch)
9620 (uri (pypi-uri "Flask" version))
9621 (sha256
9622 (base32
c6c80104 9623 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
9624 (build-system python-build-system)
9625 (propagated-inputs
9626 `(("python-itsdangerous" ,python-itsdangerous)
9627 ("python-jinja2" ,python-jinja2)
8f35c030 9628 ("python-click" ,python-click)
f3b3d78f
LF
9629 ("python-werkzeug" ,python-werkzeug)))
9630 (home-page "https://github.com/mitsuhiko/flask/")
9631 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
9632 (description "Flask is a micro web framework based on the Werkzeug toolkit
9633and Jinja2 template engine. It is called a micro framework because it does not
9634presume or force a developer to use a particular tool or library.")
f210e944 9635 (license license:bsd-3)))
f3b3d78f
LF
9636
9637(define-public python2-flask
f210e944 9638 (package-with-python2 python-flask))
603d665b 9639
a7ad802b 9640(define-public python-flask-wtf
9641 (package
9642 (name "python-flask-wtf")
9643 (version "0.13.1")
9644 (source
9645 (origin
9646 (method url-fetch)
9647 (uri (pypi-uri "Flask-WTF" version))
9648 (sha256
9649 (base32
9650 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
9651 (build-system python-build-system)
9652 (propagated-inputs
9653 `(("python-flask-babel" ,python-flask-babel)
9654 ("python-babel" ,python-babel)
9655 ("python-wtforms" ,python-wtforms)))
9656 (native-inputs
9657 `(("python-nose" ,python-nose)))
9658 (home-page "https://github.com/lepture/flask-wtf")
9659 (synopsis "Simple integration of Flask and WTForms")
9660 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
9661upload, and reCAPTCHA.")
9662 (license license:bsd-3)))
9663
9664(define-public python2-flask-wtf
9665 (package-with-python2 python-flask-wtf))
9666
a2c7d88e 9667(define-public python-flask-multistatic
9668 (package
9669 (name "python-flask-multistatic")
9670 (version "1.0")
9671 (source
9672 (origin
9673 (method url-fetch)
9674 (uri (pypi-uri "flask-multistatic" version))
9675 (sha256
9676 (base32
9677 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
9678 (build-system python-build-system)
9679 (propagated-inputs
9680 `(("python-flask" ,python-flask)))
9681 (home-page "https://pagure.io/flask-multistatic")
9682 (synopsis "Flask plugin to allow overriding static files")
9683 (description "@code{flask-multistatic} is a flask plugin that adds support
9684for overriding static files.")
9685 (license license:gpl3+)))
9686
9687(define-public python2-flask-multistatic
9688 (package-with-python2 python-flask-multistatic))
9689
603d665b
LF
9690(define-public python-cookies
9691 (package
9692 (name "python-cookies")
9693 (version "2.2.1")
9694 (source (origin
9695 (method url-fetch)
9696 (uri (pypi-uri "cookies" version))
9697 (sha256
9698 (base32
9699 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
9700 (build-system python-build-system)
9701 (arguments
9702 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
9703 #:tests? #f))
9704 (native-inputs
9705 `(("python-pytest" ,python2-pytest)))
9706 (synopsis "HTTP cookie parser and renderer")
9707 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
9708Python.")
9709 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 9710 (license license:expat)))
603d665b
LF
9711
9712(define-public python2-cookies
f210e944 9713 (package-with-python2 python-cookies))
0efde7d6
LF
9714
9715(define-public python-responses
9716 (package
9717 (name "python-responses")
9718 (version "0.5.1")
9719 (source (origin
9720 (method url-fetch)
9721 (uri (pypi-uri "responses" version))
9722 (sha256
9723 (base32
9724 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
9725 (build-system python-build-system)
9726 (arguments
9727 `(;; Test suite is not distributed:
9728 ;; https://github.com/getsentry/responses/issues/38
9729 #:tests? #f))
9730 (native-inputs
d8ea5f2f 9731 `(("python-mock" ,python-mock)))
0efde7d6
LF
9732 (propagated-inputs
9733 `(("python-requests" ,python-requests)
d8ea5f2f 9734 ("python-cookies" ,python-cookies)
0efde7d6
LF
9735 ("python-six" ,python-six)))
9736 (home-page "https://github.com/getsentry/responses")
9737 (synopsis "Utility for mocking out the `requests` Python library")
9738 (description "A utility library for mocking out the `requests` Python
9739library.")
f210e944 9740 (license license:asl2.0)))
0efde7d6
LF
9741
9742(define-public python2-responses
f210e944 9743 (package-with-python2 python-responses))
76b94885 9744
b7afd018
RW
9745(define-public python-whoosh
9746 (package
9747 (name "python-whoosh")
9748 (version "2.7.4")
9749 (source
9750 (origin
9751 (method url-fetch)
9752 (uri (pypi-uri "Whoosh" version))
9753 (sha256
9754 (base32
9755 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
9756 (build-system python-build-system)
9757 (native-inputs
f3b98f4f 9758 `(("python-pytest" ,python-pytest)))
b7afd018
RW
9759 (home-page "http://bitbucket.org/mchaput/whoosh")
9760 (synopsis "Full text indexing, search, and spell checking library")
9761 (description
9762 "Whoosh is a fast, pure-Python full text indexing, search, and spell
9763checking library.")
9764 (license license:bsd-2)))
9765
9766(define-public python2-whoosh
9767 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
9768 (package (inherit whoosh)
9769 (propagated-inputs
9770 `(("python2-backport-ssl-match-hostname"
9771 ,python2-backport-ssl-match-hostname)
9772 ,@(package-propagated-inputs whoosh))))))
9773
76b94885
LF
9774(define-public python-pathlib
9775 (package
9776 (name "python-pathlib")
9777 (version "1.0.1")
9778 (source (origin
9779 (method url-fetch)
9780 (uri (pypi-uri "pathlib" version))
9781 (sha256
9782 (base32
9783 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
9784 (build-system python-build-system)
92a312dc
RW
9785 ;; The tests depend on the internal "test" module, which does not provide
9786 ;; a stable interface.
9787 (arguments `(#:tests? #f))
76b94885 9788 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
9789 (synopsis "Object-oriented file system paths")
9790 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
9791It offers the following advantages over using string objects:
9792
9793@enumerate
9794@item No more cumbersome use of os and os.path functions. Everything can
9795be done easily through operators, attribute accesses, and method calls.
9796@item Embodies the semantics of different path types. For example,
9797comparing Windows paths ignores casing.
9798@item Well-defined semantics, eliminating any inconsistencies or
9799ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
9800@end enumerate
9801
9802Note: In Python 3.4, pathlib is now part of the standard library. For other
9803Python versions please consider python-pathlib2 instead, which tracks the
9804standard library module. This module (python-pathlib) isn't maintained
9805anymore.")
76b94885
LF
9806 (license license:expat)))
9807
9808(define-public python2-pathlib
9809 (package-with-python2 python-pathlib))
25a7db0a 9810
b7703c81
HG
9811(define-public python2-pathlib2
9812 (package
9813 (name "python2-pathlib2")
9814 (version "2.1.0")
9815 (source (origin
9816 (method url-fetch)
9817 (uri (pypi-uri "pathlib2" version))
9818 (sha256
9819 (base32
9820 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
9821 (build-system python-build-system)
49a531f5
HG
9822 ;; We only need the the Python 2 variant, since for Python 3 our minimum
9823 ;; version is 3.4 which already includes this package as part of the
9824 ;; standard library.
b7703c81
HG
9825 (arguments
9826 `(#:python ,python-2))
9827 (native-inputs
f3b98f4f 9828 `(("python2-six" ,python2-six)))
b7703c81
HG
9829 (home-page "http://pypi.python.org/pypi/pathlib2/")
9830 (synopsis "Object-oriented file system paths - backport of standard
9831pathlib module")
9832 (description "The goal of pathlib2 is to provide a backport of standard
9833pathlib module which tracks the standard library module, so all the newest
9834features of the standard pathlib can be used also on older Python versions.
9835
9836Pathlib offers a set of classes to handle file system paths. It offers the
9837following advantages over using string objects:
9838
9839@enumerate
9840@item No more cumbersome use of os and os.path functions. Everything can
9841be done easily through operators, attribute accesses, and method calls.
9842@item Embodies the semantics of different path types. For example,
9843comparing Windows paths ignores casing.
9844@item Well-defined semantics, eliminating any inconsistencies or
9845ambiguities (forward vs. backward slashes, etc.).
9846@end enumerate")
9847 (license license:expat)))
9848
25a7db0a
LF
9849(define-public python-jellyfish
9850 (package
9851 (name "python-jellyfish")
8c4964dd 9852 (version "0.5.6")
25a7db0a
LF
9853 (source (origin
9854 (method url-fetch)
9855 (uri (pypi-uri "jellyfish" version))
9856 (sha256
9857 (base32
8c4964dd 9858 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
9859 (build-system python-build-system)
9860 (native-inputs
9861 `(("python-pytest" ,python-pytest)))
9862 (home-page "https://github.com/jamesturk/jellyfish")
9863 (synopsis "Approximate and phonetic matching of strings")
9864 (description "Jellyfish uses a variety of string comparison and phonetic
9865encoding algorithms to do fuzzy string matching.")
3f641af0 9866 (license license:bsd-2)
25a7db0a
LF
9867 (properties `((python2-variant . ,(delay python2-jellyfish))))))
9868
9869(define-public python2-jellyfish
9870 (let ((jellyfish (package-with-python2
9871 (strip-python2-variant python-jellyfish))))
9872 (package (inherit jellyfish)
00e10c6e 9873 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 9874 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
9875
9876(define-public python2-unicodecsv
9877 (package
9878 (name "python2-unicodecsv")
9879 (version "0.14.1")
9880 (source (origin
9881 (method url-fetch)
9882 ;; The test suite is not included in the PyPi release.
9883 ;; https://github.com/jdunck/python-unicodecsv/issues/19
9884 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
9885 "archive/" version ".tar.gz"))
9886 (file-name (string-append name "-" version ".tar.gz"))
9887 (sha256
9888 (base32
9889 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
9890 (build-system python-build-system)
9891 (arguments
9892 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
9893 #:python ,python-2))
9894 (native-inputs
f3b98f4f 9895 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
9896 (home-page "https://github.com/jdunck/python-unicodecsv")
9897 (synopsis "Unicode CSV module for Python 2")
9898 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
9899module, adding support for Unicode strings.")
3f641af0 9900 (license license:bsd-2)))
064503aa
LF
9901
9902(define-public python-rarfile
9903 (package
9904 (name "python-rarfile")
67824447 9905 (version "2.8")
064503aa
LF
9906 (source (origin
9907 (method url-fetch)
9908 (uri (pypi-uri "rarfile" version))
9909 (sha256
9910 (base32
67824447 9911 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
9912 (build-system python-build-system)
9913 (arguments
9914 '(#:phases
9915 (modify-phases %standard-phases
9916 (replace 'check
9917 ;; Many tests fail, but the installation proceeds.
9918 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
9919 (native-inputs
9920 `(("which" ,which))) ; required for tests
9921 (propagated-inputs
9922 `(("libarchive" ,libarchive)))
9923 (home-page "https://github.com/markokr/rarfile")
9924 (synopsis "RAR archive reader for Python")
9925 (description "This is Python module for RAR archive reading. The interface
9926is made as zipfile like as possible.")
3f641af0 9927 (license license:isc)))
064503aa
LF
9928
9929(define-public python2-rarfile
9930 (package-with-python2 python-rarfile))
daeeea71
CM
9931
9932(define-public python-magic
9933 (package
9934 (name "python-magic")
9935 (version "0.4.3")
9936 (source
9937 (origin
9938 (method url-fetch)
9939 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
9940 version ".tar.gz"))
9941 (sha256
9942 (base32
9943 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
9944 (file-name (string-append name "-" version "-checkout"))))
9945 (build-system python-build-system)
9946 (arguments
9947 ;; The tests are unreliable, so don't run them. The tests fail
9948 ;; under Python3 because they were written for Python2 and
9949 ;; contain import statements that do not work in Python3. One of
9950 ;; the tests fails under Python2 because its assertions are
9951 ;; overly stringent; it relies on comparing output strings which
9952 ;; are brittle and can change depending on the version of
9953 ;; libmagic being used and the system on which the test is
9954 ;; running. In my case, under GuixSD 0.10.0, only one test
9955 ;; failed, and it seems to have failed only because the version
9956 ;; of libmagic that is packaged in Guix outputs a slightly
9957 ;; different (but not wrong) string than the one that the test
9958 ;; expected.
9959 '(#:tests? #f
9960 #:phases (modify-phases %standard-phases
9961 ;; Replace a specific method call with a hard-coded
9962 ;; path to the necessary libmagic.so file in the
9963 ;; store. If we don't do this, then the method call
9964 ;; will fail to find the libmagic.so file, which in
9965 ;; turn will cause any application using
9966 ;; python-magic to fail.
9967 (add-before 'build 'hard-code-path-to-libmagic
9968 (lambda* (#:key inputs #:allow-other-keys)
9969 (let ((file (assoc-ref inputs "file")))
9970 (substitute* "magic.py"
9971 (("ctypes.util.find_library\\('magic'\\)")
9972 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
9973 #t)))
9974 (add-before 'install 'disable-egg-compression
9975 (lambda _
9976 (let ((port (open-file "setup.cfg" "a")))
9977 (display "\n[easy_install]\nzip_ok = 0\n"
9978 port)
9979 (close-port port)
9980 #t))))))
daeeea71
CM
9981 (inputs
9982 ;; python-magic needs to be able to find libmagic.so.
9983 `(("file" ,file)))
9984 (home-page "https://github.com/ahupp/python-magic")
9985 (synopsis "File type identification using libmagic")
9986 (description
9987 "This module uses ctypes to access the libmagic file type
9988identification library. It makes use of the local magic database and
9989supports both textual and MIME-type output. Note that this module and
9990the python-file module both provide a \"magic.py\" file; these two
9991modules, which are different and were developed separately, both serve
9992the same purpose: to provide Python bindings for libmagic.")
9993 (license license:expat)))
9994
9995(define-public python2-magic
9996 (package-with-python2 python-magic))
12af303f
CM
9997
9998(define-public python2-s3cmd
9999 (package
10000 (name "python2-s3cmd")
10001 (version "1.6.1")
10002 (source
10003 (origin
10004 (method url-fetch)
de67e922 10005 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
10006 "s3cmd-" version ".tar.gz"))
10007 (sha256
10008 (base32
10009 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
10010 (build-system python-build-system)
10011 (arguments
10012 ;; s3cmd is written for python2 only and contains no tests.
10013 `(#:python ,python-2
10014 #:tests? #f))
f22efa01 10015 (propagated-inputs
12af303f
CM
10016 `(("python2-dateutil" ,python2-dateutil)
10017 ;; The python-file package also provides a magic.py module.
10018 ;; This is an unfortunate state of affairs; however, s3cmd
10019 ;; fails to install if it cannot find specifically the
10020 ;; python-magic package. Thus we include it, instead of using
10021 ;; python-file. Ironically, s3cmd sometimes works better
10022 ;; without libmagic bindings at all:
10023 ;; https://github.com/s3tools/s3cmd/issues/198
10024 ("python2-magic" ,python2-magic)))
10025 (home-page "http://s3tools.org/s3cmd")
10026 (synopsis "Command line tool for S3-compatible storage services")
10027 (description
10028 "S3cmd is a command line tool for uploading, retrieving and managing data
10029in storage services that are compatible with the Amazon Simple Storage
10030Service (S3) protocol, including S3 itself. It supports rsync-like backup,
10031GnuPG encryption, and more. It also supports management of Amazon's
10032CloudFront content delivery network.")
3f641af0 10033 (license license:gpl2+)))
4323a5f0
AE
10034
10035(define-public python-pkgconfig
10036 (package
10037 (name "python-pkgconfig")
10038 (version "1.1.0")
10039 (source
10040 (origin
10041 (method url-fetch)
10042 (uri (pypi-uri "pkgconfig" version))
10043 (sha256
10044 (base32
10045 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
10046 (build-system python-build-system)
10047 (native-inputs
f3b98f4f 10048 `(("python-nose" ,python-nose)))
4323a5f0
AE
10049 (inputs
10050 `(("pkg-config" ,pkg-config)))
10051 (arguments
10052 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
10053 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
10054 #:tests? #f
4323a5f0
AE
10055 ;; Hard-code the path to pkg-config.
10056 #:phases
10057 (modify-phases %standard-phases
10058 (add-before
10059 'build 'patch
10060 (lambda _
10061 (substitute* "pkgconfig/pkgconfig.py"
10062 (("cmd = 'pkg-config")
10063 (string-append "cmd = '" (which "pkg-config"))))
10064 #t)))))
10065 (home-page "http://github.com/matze/pkgconfig")
10066 (synopsis "Python interface for pkg-config")
10067 (description "This module provides a Python interface to pkg-config. It
10068can be used to find all pkg-config packages, check if a package exists,
10069check if a package meets certain version requirements, query CFLAGS and
10070LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 10071 (license license:expat)))
4323a5f0
AE
10072
10073(define-public python2-pkgconfig
10074 (package-with-python2 python-pkgconfig))
10075
2e697322
BW
10076(define-public python-bz2file
10077 (package
10078 (name "python-bz2file")
10079 (version "0.98")
10080 (source
10081 (origin
10082 (method url-fetch)
10083 (uri (pypi-uri "bz2file" version))
10084 (sha256
10085 (base32
10086 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
10087 (build-system python-build-system)
10088 (arguments
124df723 10089 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
10090 (home-page "https://github.com/nvawda/bz2file")
10091 (synopsis "Read and write bzip2-compressed files")
10092 (description
10093 "Bz2file is a Python library for reading and writing bzip2-compressed
10094files. It contains a drop-in replacement for the I/O interface in the
10095standard library's @code{bz2} module, including features from the latest
10096development version of CPython that are not available in older releases.")
3f641af0 10097 (license license:asl2.0)
2e697322
BW
10098 (properties `((python2-variant . ,(delay python2-bz2file))))))
10099
10100(define-public python2-bz2file
10101 (let ((base (package-with-python2
10102 (strip-python2-variant python-bz2file))))
10103 (package
10104 (inherit base)
124df723 10105 (arguments
752bb447
BW
10106 `(#:python ,python-2
10107 #:phases
124df723
BW
10108 (modify-phases %standard-phases
10109 ;; 'python setup.py test' does not work as of 0.98.
10110 ;; There is only the one test file, so we run it directly.
10111 (replace 'check
10112 (lambda _ (zero? (system* "python"
10113 "test_bz2file.py"))))))))))
2e697322 10114
da4ac1aa
BW
10115(define-public python-future
10116 (package
10117 (name "python-future")
10118 (version "0.15.2")
10119 (source
10120 (origin
10121 (method url-fetch)
10122 (uri (pypi-uri "future" version))
10123 (sha256
10124 (base32
10125 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
10126 (build-system python-build-system)
10127 ;; Many tests connect to the network or are otherwise flawed.
10128 ;; https://github.com/PythonCharmers/python-future/issues/210
10129 (arguments
10130 `(#:tests? #f))
10131 (home-page "http://python-future.org")
10132 (synopsis "Single-source support for Python 3 and 2")
10133 (description
10134 "@code{python-future} is the missing compatibility layer between Python 2 and
10135Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
10136to support both Python 2 and Python 3 with minimal overhead.")
f210e944 10137 (license license:expat)))
da4ac1aa
BW
10138
10139(define-public python2-future
f210e944 10140 (package-with-python2 python-future))
da4ac1aa 10141
8e451885
AE
10142(define-public python-cysignals
10143 (package
10144 (name "python-cysignals")
10145 (version "1.1.0")
10146 (source
10147 (origin
10148 (method url-fetch)
10149 (uri (pypi-uri "cysignals" version ".tar.bz2"))
10150 (sha256
10151 (base32
10152 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
10153 (build-system python-build-system)
10154 (native-inputs
10155 `(("python-cython" ,python-cython)
8e451885
AE
10156 ("python-sphinx" ,python-sphinx)))
10157 (inputs
10158 `(("pari-gp" ,pari-gp)))
10159 (arguments
10160 `(#:modules ((guix build python-build-system)
10161 ((guix build gnu-build-system) #:prefix gnu:)
10162 (guix build utils))
10163 ;; FIXME: Tests are executed after installation and currently fail
10164 ;; when not installing into standard locations; the author is working
10165 ;; on a fix.
10166 #:tests? #f
10167 #:phases
10168 (modify-phases %standard-phases
10169 (add-before
10170 'build 'configure
10171 (assoc-ref gnu:%standard-phases 'configure)))))
10172 (home-page
10173 "https://github.com/sagemath/cysignals")
10174 (synopsis
10175 "Handling of interrupts and signals for Cython")
10176 (description
10177 "The cysignals package provides mechanisms to handle interrupts (and
10178other signals and errors) in Cython code, using two related approaches,
10179for mixed Cython/Python code or external C libraries and pure Cython code,
10180respectively.")
3f641af0 10181 (license license:lgpl3+)))
8e451885
AE
10182
10183(define-public python2-cysignals
10184 (package-with-python2 python-cysignals))
10185
63bcec71
DM
10186(define-public python2-shedskin
10187 (package
10188 (name "python2-shedskin")
10189 (version "0.9.4")
10190 (source
10191 (origin
10192 (method url-fetch)
10193 (uri (string-append "https://github.com/shedskin/shedskin/"
10194 "releases/download/v" version
10195 "/shedskin-" version ".tgz"))
10196 (sha256
10197 (base32
10198 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
10199 (build-system python-build-system)
10200 (arguments
10201 `(#:python ,python-2
10202 #:phases (modify-phases %standard-phases
10203 (add-after 'unpack 'fix-resulting-include-libs
10204 (lambda* (#:key inputs #:allow-other-keys)
10205 (let ((libgc (assoc-ref inputs "libgc"))
10206 (pcre (assoc-ref inputs "pcre")))
10207 (substitute* "shedskin/makefile.py"
10208 (("variable == 'CCFLAGS':[ ]*")
10209 (string-append "variable == 'CCFLAGS':\n"
10210 " line += ' -I " pcre "/include"
10211 " -I " libgc "/include'"))
10212 (("variable == 'LFLAGS':[ ]*")
10213 (string-append "variable == 'LFLAGS':\n"
10214 " line += ' -L" pcre "/lib"
10215 " -L " libgc "/lib'")))
10216 #t))))))
63bcec71
DM
10217 (inputs `(("pcre" ,pcre)
10218 ("libgc" ,libgc)))
10219 (home-page "https://shedskin.github.io/")
10220 (synopsis "Experimental Python-2 to C++ Compiler")
10221 (description (string-append "This is an experimental compiler for a subset of
10222Python. It generates C++ code and a Makefile."))
3f641af0 10223 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
10224
10225(define-public python2-rope
10226 (package
10227 (name "python2-rope")
10228 (version "0.10.3")
10229 (source
10230 (origin
10231 (method url-fetch)
10232 (uri (pypi-uri "rope" version))
10233 (sha256
10234 (base32
10235 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10236 (arguments
10237 ;; Rope is currently python-2 only.
10238 ;; https://github.com/python-rope/rope/issues/57
10239 `(#:python ,python-2))
10240 (build-system python-build-system)
10241 (native-inputs
f3b98f4f 10242 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
10243 (home-page "https://github.com/python-rope/rope")
10244 (synopsis "Refactoring library for Python")
10245 (description "Rope is a refactoring library for Python. It facilitates
10246the renaming, moving and extracting of attributes, functions, modules, fields
10247and parameters in Python 2 source code. These refactorings can also be applied
10248to occurences in strings and comments.")
3f641af0 10249 (license license:gpl2)))
6ba8ca17
10250
10251(define-public python-py3status
10252 (package
10253 (name "python-py3status")
d2262d70 10254 (version "3.1")
6ba8ca17
10255 (source
10256 (origin
10257 (method url-fetch)
10258 (uri (pypi-uri "py3status" version))
10259 (sha256
10260 (base32
d2262d70 10261 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 10262 (build-system python-build-system)
6ba8ca17
10263 (home-page "https://github.com/ultrabug/py3status")
10264 (synopsis "Extensible i3status wrapper written in Python")
10265 (description "py3status is an i3status wrapper which extends i3status
10266functionality in a modular way, allowing you to extend your panel with your
10267own code, responding to click events and updating clock every second.")
3f641af0 10268 (license license:bsd-3)))
b8fdbca3
HG
10269
10270(define-public python-tblib
10271 (package
10272 (name "python-tblib")
10273 (version "1.3.0")
10274 (source (origin
10275 (method url-fetch)
10276 (uri (pypi-uri "tblib" version))
10277 (sha256 (base32
10278 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10279 (build-system python-build-system)
10280 (arguments
10281 `(#:phases
10282 (modify-phases %standard-phases
10283 (replace 'check
10284 (lambda _
10285 ;; Upstream runs tests after installation and the package itself
10286 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10287 ;; found.
10288 (setenv "PYTHONPATH"
10289 (string-append (getcwd) "/build/lib:"
10290 (getenv "PYTHONPATH")))
10291 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10292 (native-inputs
10293 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
10294 ("python-six" ,python-six)))
10295 (home-page "https://github.com/ionelmc/python-tblib")
10296 (synopsis "Traceback serialization library")
10297 (description
10298 "Traceback serialization allows you to:
10299
10300@enumerate
10301@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10302different processes. This allows better error handling when running code over
10303multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10304
10305@item Parse traceback strings and raise with the parsed tracebacks.
9657aeb1 10306@end enumerate\n")
3f641af0 10307 (license license:bsd-3)))
b8fdbca3
HG
10308
10309(define-public python2-tblib
10310 (package-with-python2 python-tblib))
1a024de4
HG
10311
10312(define-public python-sqlparse
10313 (package
10314 (name "python-sqlparse")
10315 (version "0.1.19")
10316 (source (origin
10317 (method url-fetch)
10318 (uri (pypi-uri "sqlparse" version))
10319 (sha256
10320 (base32
10321 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10322 (build-system python-build-system)
10323 (arguments
10324 `(#:phases
10325 (modify-phases %standard-phases
10326 (replace 'check
10327 (lambda* _
10328 ;; setup.py-integrated 2to3 only affects the build files, but
10329 ;; py.test is using the source files. So we need to convert them
10330 ;; manually.
10331 (when (zero? (system* "python3"))
10332 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10333 (zero? (system* "py.test")))))))
10334 (native-inputs
f3b98f4f 10335 `(("python-pytest" ,python-pytest)))
1a024de4
HG
10336 (home-page "https://github.com/andialbrecht/sqlparse")
10337 (synopsis "Non-validating SQL parser")
10338 (description "Sqlparse is a non-validating SQL parser for Python. It
10339provides support for parsing, splitting and formatting SQL statements.")
3f641af0 10340 (license license:bsd-3)))
1a024de4
HG
10341
10342(define-public python2-sqlparse
10343 (package-with-python2 python-sqlparse))
68b9d242
SB
10344
10345(define-public python-greenlet
10346 (package
10347 (name "python-greenlet")
1f89fb16 10348 (version "0.4.11")
68b9d242
SB
10349 (source (origin
10350 (method url-fetch)
10351 (uri (pypi-uri "greenlet" version))
10352 (sha256
10353 (base32
1f89fb16 10354 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
68b9d242 10355 (build-system python-build-system)
68b9d242
SB
10356 (home-page "https://greenlet.readthedocs.io/")
10357 (synopsis "Lightweight in-process concurrent programming")
10358 (description
10359 "Greenlet package is a spin-off of Stackless, a version of CPython
10360that supports micro-threads called \"tasklets\". Tasklets run
10361pseudo-concurrently (typically in a single or a few OS-level threads) and
10362are synchronized with data exchanges on \"channels\".")
3f641af0 10363 (license (list license:psfl license:expat))))
68b9d242
SB
10364
10365(define-public python2-greenlet
10366 (package-with-python2 python-greenlet))
d79a343b
SB
10367
10368(define-public python-gevent
10369 (package
10370 (name "python-gevent")
10371 (version "1.1.1")
10372 (source (origin
10373 (method url-fetch)
10374 (uri (pypi-uri "gevent" version))
10375 (sha256
10376 (base32
10377 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10378 (modules '((guix build utils)))
10379 (snippet
10380 '(begin
10381 ;; unbunding libev and c-ares
10382 (for-each delete-file-recursively '("libev" "c-ares"))
10383 ;; fixing testsuite
10384 (call-with-output-file "greentest/__init__.py" noop)
10385 (substitute* "greentest/testrunner.py"
10386 (("import util") "from . import util")
10387 (("from util import log") "from .util import log"))))))
10388 (build-system python-build-system)
10389 (propagated-inputs
10390 `(("python-greenlet" ,python-greenlet)))
10391 (native-inputs
f3b98f4f 10392 `(("python-six" ,python-six)))
d79a343b
SB
10393 (inputs
10394 `(("c-ares" ,c-ares)
10395 ("libev" ,libev)))
10396 (home-page "http://www.gevent.org/")
10397 (synopsis "Coroutine-based network library")
10398 (description
10399 "gevent is a coroutine-based Python networking library that uses greenlet
10400to provide a high-level synchronous API on top of the libev event loop.")
10401 (license license:expat)))
10402
10403(define-public python2-gevent
10404 (package-with-python2 python-gevent))
da3aeeb6
SB
10405
10406(define-public python-twisted
10407 (package
10408 (name "python-twisted")
10409 (version "16.2.0")
10410 (source (origin
10411 (method url-fetch)
8ea8e8d3 10412 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
10413 (sha256
10414 (base32
10415 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
10416 (build-system python-build-system)
45912170
SB
10417 (propagated-inputs
10418 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
10419 (home-page "https://twistedmatrix.com/")
10420 (synopsis "Asynchronous networking framework written in Python")
10421 (description
10422 "Twisted is an extensible framework for Python programming, with special
10423focus on event-based network programming and multiprotocol integration.")
10424 (license license:expat)))
10425
10426(define-public python2-twisted
10427 (package-with-python2 python-twisted))
d0b6fed6 10428
4d3fa5a4
EF
10429(define-public python-pika
10430 (package
10431 (name "python-pika")
10432 (version "0.10.0")
10433 (source
10434 (origin
10435 (method url-fetch)
10436 (uri (pypi-uri "pika" version))
10437 (sha256
10438 (base32
10439 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
10440 (build-system python-build-system)
10441 (native-inputs
269d9172
LF
10442 `(("python-pyev" ,python-pyev)
10443 ("python-tornado" ,python-tornado)
10444 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
10445 (home-page "https://pika.readthedocs.org")
10446 (synopsis "Pure Python AMQP Client Library")
10447 (description
10448 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
10449Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
10450network support library.")
10451 (license license:bsd-3)))
10452
10453(define-public python2-pika
10454 (package-with-python2 python-pika))
10455
d0b6fed6
DM
10456(define-public python-ply
10457 (package
10458 (name "python-ply")
234ade2d 10459 (version "3.9")
d0b6fed6
DM
10460 (source
10461 (origin
10462 (method url-fetch)
234ade2d 10463 (uri (pypi-uri "ply" version))
d0b6fed6
DM
10464 (sha256
10465 (base32
234ade2d 10466 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
d0b6fed6
DM
10467 (build-system python-build-system)
10468 (home-page "http://www.dabeaz.com/ply/")
10469 (synopsis "Python Lex & Yacc")
10470 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
10471It uses LR parsing and does extensive error checking.")
f210e944 10472 (license license:bsd-3)))
d0b6fed6
DM
10473
10474(define-public python2-ply
f210e944 10475 (package-with-python2 python-ply))
d951bd54
SB
10476
10477(define-public python-tabulate
10478 (package
10479 (name "python-tabulate")
e6ace98d 10480 (version "0.7.7")
d951bd54
SB
10481 (source (origin
10482 (method url-fetch)
10483 (uri (pypi-uri "tabulate" version))
10484 (sha256
10485 (base32
e6ace98d 10486 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))
d951bd54
SB
10487 ;; Fix tests
10488 (modules '((guix build utils)))
10489 (snippet '(substitute* '("test/test_cli.py"
10490 "test/test_input.py"
10491 "test/test_output.py"
10492 "test/test_regression.py")
10493 (("from common") "from nose.tools")))))
10494 (build-system python-build-system)
10495 (native-inputs
f3b98f4f 10496 `(;; For testing
d951bd54
SB
10497 ("python-nose" ,python-nose)))
10498 (home-page "https://bitbucket.org/astanin/python-tabulate")
10499 (synopsis "Pretty-print tabular data")
10500 (description
10501 "Tabulate is a library and command-line utility to pretty-print tabular
10502data in Python.")
10503 (license license:expat)))
10504
10505(define-public python2-tabulate
10506 (package-with-python2 python-tabulate))
1c4c8a33
SB
10507
10508(define-public python-kazoo
10509 (package
10510 (name "python-kazoo")
10511 (version "2.2.1")
10512 (source
10513 (origin
10514 (method url-fetch)
10515 (uri (pypi-uri "kazoo" version))
10516 (sha256
10517 (base32
10518 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
10519 (build-system python-build-system)
10520 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
10521 (propagated-inputs
10522 `(("python-six" ,python-six)))
1c4c8a33
SB
10523 (home-page "https://kazoo.readthedocs.org")
10524 (synopsis "High-level Zookeeper client library")
10525 (description
10526 "Kazoo is a Python client library for the Apache Zookeeper distributed
10527application service. It is designed to be easy to use and to avoid common
10528programming errors.")
3f641af0 10529 (license license:asl2.0)))
1c4c8a33
SB
10530
10531(define-public python2-kazoo
10532 (package-with-python2 python-kazoo))
45dda35e
SB
10533
10534(define-public python-pykafka
10535 (package
10536 (name "python-pykafka")
10537 (version "2.4.0")
10538 (source (origin
10539 (method url-fetch)
c6bccf71
EF
10540 (uri (string-append
10541 "https://pypi.python.org/packages/8b/3e/"
10542 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
10543 "pykafka-" version ".tar.gz"))
45dda35e
SB
10544 (sha256
10545 (base32
10546 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
10547 (build-system python-build-system)
10548 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 10549 (propagated-inputs
45dda35e
SB
10550 `(("python-gevent" ,python-gevent)
10551 ("python-kazoo" ,python-kazoo)
45dda35e
SB
10552 ("python-tabulate" ,python-tabulate)))
10553 (inputs
10554 `(("librdkafka" ,librdkafka)))
10555 (home-page "https://pykafka.readthedocs.io/")
10556 (synopsis "Apache Kafka client for Python")
10557 (description
10558 "PyKafka is a client for the Apache Kafka distributed messaging system.
10559It includes Python implementations of Kafka producers and consumers, which
10560are optionally backed by a C extension built on librdkafka.")
3f641af0 10561 (license license:asl2.0)))
45dda35e
SB
10562
10563(define-public python2-pykafka
10564 (package-with-python2 python-pykafka))
a44fd439
DM
10565
10566(define-public python-wcwidth
10567 (package
10568 (name "python-wcwidth")
10569 (version "0.1.6")
10570 (source
10571 (origin
10572 (method url-fetch)
10573 (uri (string-append
10574 "https://pypi.python.org/packages/"
10575 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
10576 "wcwidth-" version ".tar.gz"))
10577 (sha256
10578 (base32
10579 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
10580 (build-system python-build-system)
10581 (home-page "https://github.com/jquast/wcwidth")
66e07664 10582 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
10583 (description "Wcwidth measures the number of terminal column cells of
10584wide-character codes. It is useful for those implementing a terminal emulator,
10585or programs that carefully produce output to be interpreted by one. It is a
10586Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
10587specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 10588 (license license:expat)))
a44fd439
DM
10589
10590(define-public python2-wcwidth
f210e944 10591 (package-with-python2 python-wcwidth))
0de78c95
DP
10592
10593(define-public python2-jsonrpclib
10594 (package
10595 (name "python2-jsonrpclib")
10596 (version "0.1.7")
10597 (source (origin
10598 (method url-fetch)
10599 (uri (string-append
10600 "https://pypi.python.org/packages/source/j/jsonrpclib/"
10601 "jsonrpclib-" version ".tar.gz"))
10602 (sha256
10603 (base32
10604 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
10605 (build-system python-build-system)
0de78c95
DP
10606 (arguments
10607 `(#:tests? #f
10608 #:python ,python-2))
10609 (home-page "https://github.com/joshmarshall/jsonrpclib/")
10610 (synopsis "Implementation of JSON-RPC specification for Python")
10611 (description
10612 "This library is an implementation of the JSON-RPC specification.
10613It supports both the original 1.0 specification, as well as the
10614new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
10615etc.")
3f641af0 10616 (license license:asl2.0)))
9250b0f3
SB
10617
10618(define-public python-chai
10619 (package
10620 (name "python-chai")
10621 (version "1.1.1")
10622 (source (origin
10623 (method url-fetch)
10624 (uri (pypi-uri "chai" version))
10625 (sha256
10626 (base32
10627 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
10628 (build-system python-build-system)
9250b0f3
SB
10629 (home-page "https://github.com/agoragames/chai")
10630 (synopsis "Mocking framework for Python")
10631 (description
10632 "Chai provides an api for mocking, stubbing and spying your python
10633objects, patterned after the Mocha library for Ruby.")
3f641af0 10634 (license license:bsd-3)))
9250b0f3
SB
10635
10636(define-public python2-chai
10637 (package-with-python2 python-chai))
10638
ae43baa8
SB
10639(define-public python-arrow
10640 (package
10641 (name "python-arrow")
10642 (version "0.8.0")
10643 (source (origin
10644 (method url-fetch)
10645 (uri (pypi-uri "arrow" version))
10646 (sha256
10647 (base32
10648 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
10649 (build-system python-build-system)
10650 (native-inputs
f3b98f4f 10651 `(;; For testing
ae43baa8
SB
10652 ("python-chai" ,python-chai)
10653 ("python-simplejson" ,python-simplejson)))
36aed736
SB
10654 (propagated-inputs
10655 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
10656 (home-page "https://github.com/crsmithdev/arrow/")
10657 (synopsis "Dates and times for Python")
10658 (description
10659 "Arrow is a Python library to creating, manipulating, formatting and
10660converting dates, times, and timestamps. It implements and updates the
10661datetime type.")
3f641af0 10662 (license license:asl2.0)))
ae43baa8
SB
10663
10664(define-public python2-arrow
10665 (package-with-python2 python-arrow))
10666
1f2b62a4
SB
10667(define-public python-inflection
10668 (package
10669 (name "python-inflection")
10670 (version "0.3.1")
10671 (source
10672 (origin (method url-fetch)
10673 (uri (pypi-uri "inflection" version))
10674 (sha256
10675 (base32
10676 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
10677 (build-system python-build-system)
1f2b62a4
SB
10678 (home-page "http://github.com/jpvanhal/inflection")
10679 (synopsis "Python string transformation library")
10680 (description
10681 "Inflection is a string transformation library. It singularizes
10682and pluralizes English words, and transforms strings from CamelCase to
10683underscored string.")
10684 (license license:expat)))
10685
10686(define-public python2-inflection
10687 (package-with-python2 python-inflection))
10688
18995566
SB
10689(define-public python-pylev
10690 (package
10691 (name "python-pylev")
10692 (version "1.3.0")
10693 (source (origin
10694 (method url-fetch)
10695 (uri (pypi-uri "pylev" version))
10696 (sha256
10697 (base32
10698 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
10699 (build-system python-build-system)
18995566
SB
10700 (home-page "http://github.com/toastdriven/pylev")
10701 (synopsis "Levenshtein distance implementation in Python")
10702 (description "Pure Python Levenshtein implementation, based off the
10703Wikipedia code samples at
10704@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 10705 (license license:bsd-3)))
18995566
SB
10706
10707(define-public python2-pylev
10708 (package-with-python2 python-pylev))
10709
f5deff7a
SB
10710(define-public python-cleo
10711 (package
10712 (name "python-cleo")
10713 (version "0.4.1")
10714 (source (origin
10715 (method url-fetch)
10716 (uri (pypi-uri "cleo" version))
10717 (sha256
10718 (base32
10719 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
10720 (build-system python-build-system)
10721 (native-inputs
f3b98f4f 10722 `(;; For testing
f5deff7a
SB
10723 ("python-mock" ,python-mock)
10724 ("python-pytest" ,python-pytest)))
9403150a
SB
10725 (propagated-inputs
10726 `(("python-psutil" ,python-psutil)
10727 ("python-pylev" ,python-pylev)))
f5deff7a
SB
10728 (home-page "https://github.com/sdispater/cleo")
10729 (synopsis "Command-line arguments library for Python")
10730 (description
10731 "Cleo allows you to create command-line commands with signature in
10732docstring and colored output.")
10733 (license license:expat)))
10734
10735(define-public python2-cleo
10736 (package-with-python2 python-cleo))
10737
77cadb43
SB
10738(define-public python-lazy-object-proxy
10739 (package
10740 (name "python-lazy-object-proxy")
10741 (version "1.2.2")
10742 (source (origin
10743 (method url-fetch)
10744 (uri (pypi-uri "lazy-object-proxy" version))
10745 (sha256
10746 (base32
10747 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
10748 (build-system python-build-system)
77cadb43
SB
10749 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
10750 (synopsis "Lazy object proxy for python")
10751 (description
10752 "Lazy object proxy is an object that wraps a callable but defers the call
10753until the object is actually required, and caches the result of said call.")
3f641af0 10754 (license license:bsd-2)))
77cadb43
SB
10755
10756(define-public python2-lazy-object-proxy
10757 (package-with-python2 python-lazy-object-proxy))
10758
5477e05f
SB
10759(define-public python-dnspython
10760 (package
10761 (name "python-dnspython")
6c514128 10762 (version "1.15.0")
5477e05f
SB
10763 (source (origin
10764 (method url-fetch)
10765 (uri (string-append "http://www.dnspython.org/kits/"
10766 version "/dnspython-" version ".tar.gz"))
10767 (sha256
10768 (base32
6c514128 10769 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
10770 (build-system python-build-system)
10771 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
10772 (home-page "http://www.dnspython.org")
10773 (synopsis "DNS toolkit for Python")
10774 (description
10775 "dnspython is a DNS toolkit for Python. It supports almost all record
10776types. It can be used for queries, zone transfers, and dynamic updates.
10777It supports TSIG authenticated messages and EDNS0.")
10778 (license license:expat)))
10779
10780(define-public python2-dnspython
10781 (package-with-python2 python-dnspython))
10782
22711e25
SB
10783(define-public python-email-validator
10784 (package
10785 (name "python-email-validator")
b165c215 10786 (version "1.0.2")
22711e25
SB
10787 (source
10788 (origin (method url-fetch)
10789 (uri (pypi-uri "email_validator" version))
10790 (sha256
10791 (base32
b165c215 10792 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
22711e25
SB
10793 (build-system python-build-system)
10794 (arguments
10795 '(#:phases
10796 (modify-phases %standard-phases
10797 (add-before 'build 'use-dnspython
10798 (lambda _
10799 (substitute* "setup.py"
10800 (("dnspython3") "dnspython"))
10801 #t)))))
d42560bd 10802 (propagated-inputs
22711e25 10803 `(("python-dnspython" ,python-dnspython)
d42560bd 10804 ("python-idna" ,python-idna)))
22711e25
SB
10805 (home-page "https://github.com/JoshData/python-email-validator")
10806 (synopsis "Email address validation library for Python")
10807 (description
10808 "This library validates email address syntax and deliverability.")
3f641af0 10809 (license license:cc0)))
22711e25
SB
10810
10811(define-public python2-email-validator
10812 (package-with-python2 python-email-validator))
10813
8987d91e
SB
10814(define-public python-ukpostcodeparser
10815 (package
10816 (name "python-ukpostcodeparser")
10817 (version "1.0.3")
10818 (source (origin
10819 (method url-fetch)
10820 (uri (pypi-uri "UkPostcodeParser" version))
10821 (sha256
10822 (base32
10823 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
10824 (build-system python-build-system)
8987d91e
SB
10825 (home-page "https://github.com/hamstah/ukpostcodeparser")
10826 (synopsis "UK Postcode parser for Python")
10827 (description
10828 "This library provides the @code{parse_uk_postcode} function for
10829parsing UK postcodes.")
10830 (license license:expat)))
10831
10832(define-public python2-ukpostcodeparser
10833 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
10834
10835(define-public python-fake-factory
10836 (package
10837 (name "python-fake-factory")
7adc698f 10838 (version "0.7.2")
ea92ae01
SB
10839 (source (origin
10840 (method url-fetch)
10841 (uri (pypi-uri "fake-factory" version))
10842 (sha256
10843 (base32
7adc698f 10844 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))))
ea92ae01 10845 (build-system python-build-system)
ea92ae01 10846 (native-inputs
f3b98f4f 10847 `(;; For testing
ea92ae01
SB
10848 ("python-email-validator" ,python-email-validator)
10849 ("python-mock" ,python-mock)
10850 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
10851 (propagated-inputs
10852 `(("python-dateutil" ,python-dateutil-2)
10853 ("python-six" ,python-six)))
7adc698f 10854 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
10855 (synopsis "Python package that generates fake data")
10856 (description
10857 "Faker is a Python package that generates fake data such as names,
10858addresses, and phone numbers.")
10859 (license license:expat)
10860 (properties `((python2-variant . ,(delay python2-fake-factory))))))
10861
10862(define-public python2-fake-factory
10863 (let ((base (package-with-python2 (strip-python2-variant
10864 python-fake-factory))))
10865 (package
10866 (inherit base)
24c9aa18 10867 (propagated-inputs
ea92ae01 10868 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 10869 ,@(package-propagated-inputs base))))))
ea92ae01 10870
b49504fd
SB
10871(define-public python-pyaml
10872 (package
10873 (name "python-pyaml")
10874 (version "15.8.2")
10875 (source (origin
10876 (method url-fetch)
10877 (uri (pypi-uri "pyaml" version))
10878 (sha256
10879 (base32
10880 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
10881 (build-system python-build-system)
b49504fd
SB
10882 (propagated-inputs
10883 `(("python-pyyaml" ,python-pyyaml)))
10884 (home-page "https://github.com/mk-fg/pretty-yaml")
10885 (synopsis "YAML pretty-print library for Python")
10886 (description
10887 "pyaml is a PyYAML based python module to produce pretty and readable
10888YAML-serialized data.")
3f641af0 10889 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
10890
10891(define-public python2-pyaml
10892 (package-with-python2 python-pyaml))
10893
347175a2
SB
10894(define-public python-flexmock
10895 (package
10896 (name "python-flexmock")
10897 (version "0.10.2")
10898 (source (origin
10899 (method url-fetch)
10900 (uri (pypi-uri "flexmock" version))
10901 (sha256
10902 (base32
10903 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
10904 (build-system python-build-system)
347175a2
SB
10905 (home-page "https://flexmock.readthedocs.org")
10906 (synopsis "Testing library for Python")
10907 (description
10908 "flexmock is a testing library for Python that makes it easy to create
10909mocks, stubs and fakes.")
3f641af0 10910 (license license:bsd-3)))
347175a2
SB
10911
10912(define-public python2-flexmock
10913 (package-with-python2 python-flexmock))
10914
5a744191
SB
10915(define-public python-orator
10916 (package
10917 (name "python-orator")
10918 (version "0.8.2")
10919 (source (origin
10920 (method url-fetch)
10921 (uri (pypi-uri "orator" version))
10922 (sha256
10923 (base32
10924 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
10925 (build-system python-build-system)
10926 (arguments '(#:tests? #f)) ; no tests
b2676030 10927 (propagated-inputs
5a744191
SB
10928 `(("python-arrow" ,python-arrow)
10929 ("python-blinker" ,python-blinker)
10930 ("python-cleo" ,python-cleo)
10931 ("python-fake-factory" ,python-fake-factory)
10932 ("python-inflection" ,python-inflection)
10933 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
10934 ("python-pyaml" ,python-pyaml)
5a744191
SB
10935 ("python-simplejson" ,python-simplejson)
10936 ("python-wrapt" ,python-wrapt)))
10937 (home-page "https://orator-orm.com/")
10938 (synopsis "ActiveRecord ORM for Python")
10939 (description
10940 "Orator provides a simple ActiveRecord-like Object Relational Mapping
10941implementation for Python.")
10942 (license license:expat)
10943 (properties `((python2-variant . ,(delay python2-orator))))))
10944
10945(define-public python2-orator
10946 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
10947 (package
10948 (inherit base)
06961617 10949 (propagated-inputs
5a744191 10950 `(("python2-ipaddress" ,python2-ipaddress)
06961617 10951 ,@(package-propagated-inputs base))))))
f4155188
DM
10952
10953(define-public python-prompt-toolkit
10954 (package
10955 (name "python-prompt-toolkit")
6a34f4cc 10956 (version "1.0.9")
f4155188
DM
10957 (source
10958 (origin
10959 (method url-fetch)
d15e2ef0 10960 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
10961 (sha256
10962 (base32
6a34f4cc 10963 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 10964 (build-system python-build-system)
bae18710
LF
10965 (arguments
10966 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
10967 (propagated-inputs
10968 `(("python-wcwidth" ,python-wcwidth)
2c199b55 10969 ("python-six" ,python-six)
f22efa01 10970 ("python-pygments" ,python-pygments)))
f4155188
DM
10971 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
10972 (synopsis "Library for building command line interfaces in Python")
10973 (description
10974 "Prompt-Toolkit is a library for building interactive command line
10975interfaces in Python. It's like GNU Readline but it also features syntax
10976highlighting while typing, out-of-the-box multi-line input editing, advanced
10977code completion, incremental search, support for Chinese double-width
10978characters, mouse support, and auto suggestions.")
f210e944 10979 (license license:bsd-3)))
f4155188
DM
10980
10981(define-public python2-prompt-toolkit
f210e944 10982 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
10983
10984(define-public python-jedi
10985 (package
10986 (name "python-jedi")
10987 (version "0.9.0")
10988 (source
10989 (origin
10990 (method url-fetch)
10991 (uri (pypi-uri "jedi" version))
10992 (sha256
10993 (base32
10994 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
10995 (build-system python-build-system)
10996 (home-page "https://github.com/davidhalter/jedi")
10997 (synopsis
10998 "Autocompletion for Python that can be used for text editors")
10999 (description
11000 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 11001 (license license:expat)))
a502dfbf
DM
11002
11003(define-public python2-jedi
f210e944 11004 (package-with-python2 python-jedi))
c2f0dc6e
DM
11005
11006(define-public ptpython
11007 (package
11008 (name "ptpython")
11009 (version "0.34")
11010 (source (origin
11011 (method url-fetch)
11012 (uri (pypi-uri "ptpython" version))
11013 (sha256
11014 (base32
11015 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
11016 (build-system python-build-system)
f22efa01 11017 (propagated-inputs
c2f0dc6e
DM
11018 `(("python-docopt" ,python-docopt)
11019 ("python-jedi" ,python-jedi)
11020 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 11021 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
11022 (home-page "https://github.com/jonathanslenders/ptpython")
11023 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
11024 (description
11025 "ptpython is a Python read-eval-print loop with IDE-like features.
11026It supports syntax highlighting, multiline editing, autocompletion, mouse,
11027color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
11028etc.")
3f641af0 11029 (license license:bsd-3)
c2f0dc6e
DM
11030 (properties `((python2-variant . ,(delay ptpython-2))))))
11031
11032(define-public ptpython-2
11033 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
11034 (package
11035 (inherit base)
11036 (name "ptpython2"))))
b227f0be 11037
b04a52a6
DJ
11038(define-public python-requests-oauthlib
11039 (package
11040 (name "python-requests-oauthlib")
11041 (version "0.6.2")
11042 (source
11043 (origin
11044 (method url-fetch)
11045 (uri (pypi-uri "requests-oauthlib" version))
11046 (sha256
11047 (base32
11048 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
11049 (build-system python-build-system)
11050 (arguments
11051 `(#:phases
11052 (modify-phases %standard-phases
11053 ;; removes tests that require network access
11054 (add-before 'check 'pre-check
11055 (lambda _
11056 (delete-file "tests/test_core.py")
11057 #t)))))
11058 (native-inputs
11059 `(("python-requests-mock" ,python-requests-mock)
11060 ("python-mock" ,python-mock)))
f22efa01 11061 (propagated-inputs
b04a52a6
DJ
11062 `(("python-oauthlib" ,python-oauthlib)
11063 ("python-requests" ,python-requests)))
11064 (home-page
11065 "https://github.com/requests/requests-oauthlib")
11066 (synopsis
11067 "OAuthlib authentication support for Requests")
11068 (description
11069 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
11070provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 11071 (license license:isc)))
b04a52a6
DJ
11072
11073(define-public python2-requests-oauthlib
f210e944 11074 (package-with-python2 python-requests-oauthlib))
b04a52a6 11075
b227f0be 11076(define-public python-stem
11077 (package
11078 (name "python-stem")
0bb1c35a 11079 (version "1.5.4")
b227f0be 11080 (source
11081 (origin
11082 (method url-fetch)
c976b319 11083 (uri (pypi-uri "stem" version))
b227f0be 11084 (sha256
11085 (base32
0bb1c35a 11086 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
b227f0be 11087 (build-system python-build-system)
11088 (arguments
11089 `(#:phases
11090 (modify-phases %standard-phases
11091 (replace 'check
11092 (lambda _
11093 (zero? (system* "./run_tests.py" "--unit")))))))
11094 (native-inputs
11095 `(("python-mock" ,python-mock)
11096 ("python-pep8" ,python-pep8)
11097 ("python-pyflakes" ,python-pyflakes)))
b227f0be 11098 (home-page "https://stem.torproject.org/")
11099 (synopsis
11100 "Python controller library that allows applications to interact with Tor")
11101 (description
11102 "Stem is a Python controller library for Tor. With it you can use Tor's
11103control protocol to script against the Tor process and read descriptor data
11104relays publish about themselves.")
3f641af0 11105 (license license:lgpl3)))
b227f0be 11106
11107(define-public python2-stem
11108 (package-with-python2 python-stem))
517a6c0c
DM
11109
11110(define-public python-pyserial
11111 (package
11112 (name "python-pyserial")
11113 (version "3.1.1")
11114 (source
11115 (origin
11116 (method url-fetch)
11117 (uri (pypi-uri "pyserial" version))
11118 (sha256
11119 (base32
11120 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
11121 (build-system python-build-system)
11122 (home-page
11123 "https://github.com/pyserial/pyserial")
11124 (synopsis "Python Serial Port Bindings")
11125 (description "@code{pyserial} provide serial port bindings for Python. It
11126supports different byte sizes, stop bits, parity and flow control with RTS/CTS
11127and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 11128 (license license:bsd-3)))
517a6c0c
DM
11129
11130(define-public python2-pyserial
f210e944 11131 (package-with-python2 python-pyserial))
6eb7af2a
DJ
11132
11133(define-public python-kivy
11134 (package
11135 (name "python-kivy")
11136 (version "1.9.1")
11137 (source
11138 (origin
11139 (method url-fetch)
11140 (uri (pypi-uri "kivy" version))
11141 (file-name (string-append name "-" version ".tar.gz"))
11142 (sha256
11143 (base32
11144 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11145 (build-system python-build-system)
11146 (arguments
11147 `(#:tests? #f ; Tests require many optional packages
11148 #:phases
11149 (modify-phases %standard-phases
11150 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11151 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11152 (lambda* (#:key inputs #:allow-other-keys)
11153 (setenv "KIVY_SDL2_PATH"
11154 (string-append (assoc-ref inputs "sdl-union")
11155 "/include/SDL2"))
11156 #t)))))
11157 (native-inputs
f2516de2
HG
11158 `(("pkg-config" ,pkg-config)
11159 ("python-cython" ,python-cython)))
6eb7af2a 11160 (inputs
f2516de2 11161 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
11162 ("mesa" ,mesa)
11163 ("sdl-union"
11164 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11165 (home-page "http://kivy.org")
11166 (synopsis
11167 "Multitouch application framework")
11168 (description
11169 "A software library for rapid development of
11170hardware-accelerated multitouch applications.")
11171 (license license:expat)))
11172
11173(define-public python2-kivy
11174 (package-with-python2 python-kivy))
11175
11176(define-public python-kivy-next
11177 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11178 (revision "1"))
11179 (package (inherit python-kivy)
11180 (name "python-kivy-next")
d80a71eb 11181 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
11182 (string-take commit 7)))
11183 (source
11184 (origin
11185 (method git-fetch)
11186 (uri (git-reference
11187 (url "https://github.com/kivy/kivy")
11188 (commit commit)))
11189 (file-name (string-append name "-" version "-checkout"))
11190 (sha256
11191 (base32
11192 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11193
11194(define-public python2-kivy-next
11195 (package-with-python2 python-kivy-next))
8794bd8b
DC
11196
11197(define-public python-binaryornot
11198 (package
11199 (name "python-binaryornot")
11200 (version "0.4.0")
11201 (source (origin
11202 (method url-fetch)
11203 (uri (pypi-uri "binaryornot" version))
11204 (sha256
11205 (base32
11206 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11207 (build-system python-build-system)
f22efa01 11208 (propagated-inputs
8794bd8b
DC
11209 `(("python-chardet" ,python-chardet)
11210 ("python-hypothesis" ,python-hypothesis)))
11211 (home-page "https://github.com/audreyr/binaryornot")
11212 (synopsis "Package to check if a file is binary or text")
11213 (description "Ultra-lightweight pure Python package to check if a file is
11214binary or text.")
11215 (license license:bsd-3)
11216 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11217
11218(define-public python2-binaryornot
11219 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11220 (package (inherit base)
f22efa01 11221 (propagated-inputs
8794bd8b 11222 `(("python2-enum34" ,python2-enum34)
f22efa01 11223 ,@(package-propagated-inputs base))))))
a9ac982a
DC
11224
11225(define-public python-nltk
11226 (package
11227 (name "python-nltk")
11228 (version "3.2.1")
11229 (source (origin
11230 (method url-fetch)
11231 (uri (pypi-uri "nltk" version))
11232 (sha256
11233 (base32
11234 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11235 (build-system python-build-system)
59f12985
LF
11236 (arguments
11237 '(;; The tests require some extra resources to be downloaded.
11238 ;; TODO Try packaging these resources.
11239 #:tests? #f))
a9ac982a
DC
11240 (home-page "http://nltk.org/")
11241 (synopsis "Natural Language Toolkit")
11242 (description "It provides interfaces to over 50 corpora and lexical
11243resources such as WordNet, along with a suite of text processing libraries
11244for classification, tokenization, stemming, tagging, parsing, and semantic
11245reasoning, wrappers for natural language processing libraries.")
f210e944 11246 (license license:asl2.0)))
a9ac982a
DC
11247
11248(define-public python2-nltk
f210e944 11249 (package-with-python2 python-nltk))
691cd90d
DC
11250
11251(define-public python-pymongo
11252 (package
11253 (name "python-pymongo")
11254 (version "3.3.0")
11255 (source (origin
11256 (method url-fetch)
11257 (uri (pypi-uri "pymongo" version))
11258 (sha256
11259 (base32
11260 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
11261 (build-system python-build-system)
f22efa01 11262 (propagated-inputs
691cd90d
DC
11263 `(("python-certifi" ,python-certifi)))
11264 (home-page "http://github.com/mongodb/mongo-python-driver")
11265 (synopsis "Python driver for MongoDB")
11266 (description "Python driver for MongoDB.")
f210e944 11267 (license license:asl2.0)))
691cd90d
DC
11268
11269(define-public python2-pymongo
f210e944 11270 (package-with-python2 python-pymongo))
6a6c9d43
DC
11271
11272(define-public python-sh
11273 (package
11274 (name "python-sh")
11275 (version "1.11")
11276 (source (origin
11277 (method url-fetch)
11278 (uri (pypi-uri "sh" version))
11279 (sha256
11280 (base32
11281 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
11282 (build-system python-build-system)
11283 (arguments
11284 `(#:tests? #f)) ; no tests
11285 (home-page "https://github.com/amoffat/sh")
11286 (synopsis "Python subprocess interface")
11287 (description "Abstracts process invocation by providing a function
11288interface for programs.")
f210e944 11289 (license license:expat)))
6a6c9d43
DC
11290
11291(define-public python2-sh
f210e944 11292 (package-with-python2 python-sh))
05b59190 11293
25702397
EF
11294(define-public python-consul
11295 (package
11296 (name "python-consul")
11297 (version "0.6.1")
11298 (source
11299 (origin
11300 (method url-fetch)
11301 (uri (pypi-uri "python-consul" version))
11302 (sha256
11303 (base32
11304 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
11305 (build-system python-build-system)
11306 (native-inputs
fd1d6de7
HG
11307 `(("python-pytest" ,python-pytest)))
11308 (propagated-inputs
11309 `(("python-requests" ,python-requests)
25702397
EF
11310 ("python-six" ,python-six)))
11311 (home-page "https://github.com/cablehead/python-consul")
11312 (synopsis "Python client for Consul")
11313 (description
11314 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
11315discovery, monitoring and configuration.")
11316 (license license:expat)))
11317
11318(define-public python2-consul
f210e944 11319 (package-with-python2 python-consul))
25702397 11320
05b59190
DC
11321(define-public python-schematics
11322 (package
11323 (name "python-schematics")
11324 (version "1.1.1")
11325 (source
11326 (origin
11327 (method url-fetch)
11328 (uri (string-append
11329 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
11330 (file-name (string-append name "-" version ".tar.gz"))
11331 (sha256
11332 (base32
11333 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
11334 (build-system python-build-system)
f22efa01 11335 (propagated-inputs
05b59190
DC
11336 `(("python-six" ,python-six)))
11337 (arguments
11338 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
11339 ; version requirements (eg python-coveralls)
11340 (home-page "https://github.com/schematics/schematics")
11341 (synopsis "Python Data Structures for Humans")
11342 (description "Python Data Structures for Humans.")
f210e944 11343 (license license:bsd-3)))
05b59190
DC
11344
11345(define-public python2-schematics
f210e944 11346 (package-with-python2 python-schematics))
d6907ff7
DC
11347
11348(define-public python-publicsuffix
11349 (package
11350 (name "python-publicsuffix")
11351 (version "1.1.0")
11352 (source (origin
11353 (method url-fetch)
11354 (uri (pypi-uri "publicsuffix" version))
11355 (sha256
11356 (base32
11357 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
11358 (build-system python-build-system)
11359 (arguments
11360 `(#:tests? #f)) ; tests use the internet
11361 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
11362 (synopsis "Get suffix for a domain name")
11363 (description "Get a public suffix for a domain name using the Public Suffix
11364List.")
f210e944 11365 (license license:expat)))
d6907ff7
DC
11366
11367(define-public python2-publicsuffix
f210e944 11368 (package-with-python2 python-publicsuffix))
b2319996
DC
11369
11370(define-public python-publicsuffix2
11371 (package
11372 (name "python-publicsuffix2")
11373 (version "2.20160621")
11374 (source
11375 (origin
11376 (method url-fetch)
11377 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
11378 (sha256
11379 (base32
11380 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
11381 (build-system python-build-system)
10797a0a
LF
11382 (arguments
11383 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
11384 (home-page "https://github.com/pombredanne/python-publicsuffix2")
11385 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
11386 (description "Get a public suffix for a domain name using the Public Suffix
11387List. Forked from and using the same API as the publicsuffix package.")
f210e944 11388 (license (list license:expat license:mpl2.0))))
b2319996
DC
11389
11390(define-public python2-publicsuffix2
f210e944 11391 (package-with-python2 python-publicsuffix2))
81f1515d
DC
11392
11393(define-public python-url
11394 (package
11395 (name "python-url")
11396 (version "0.2.0")
11397 (source (origin
11398 (method url-fetch)
11399 (uri (pypi-uri "url" version))
11400 (sha256
11401 (base32
11402 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
11403 (build-system python-build-system)
f22efa01 11404 (propagated-inputs
81f1515d
DC
11405 `(("python-publicsuffix" ,python-publicsuffix)))
11406 (native-inputs
11407 `(("python-coverage" ,python-coverage)
11408 ("python-nose" ,python-nose)))
11409 (arguments
11410 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
11411 (home-page "http://github.com/seomoz/url-py")
11412 (synopsis "URL Parsing")
11413 (description "Library for parsing urls.")
11414 (license license:expat)
11415 (properties `((python2-variant . ,(delay python2-url))))))
11416
11417(define-public python2-url
11418 (let ((base (package-with-python2 (strip-python2-variant python-url))))
11419 (package (inherit base)
f22efa01 11420 (propagated-inputs
f210e944 11421 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
11422
11423(define-public python-freezegun
11424 (package
11425 (name "python-freezegun")
0c315fb3 11426 (version "0.3.8")
974ee2c1
TS
11427 (source
11428 (origin
11429 (method url-fetch)
11430 (uri (pypi-uri "freezegun" version))
11431 (sha256
11432 (base32
0c315fb3 11433 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
974ee2c1
TS
11434 (build-system python-build-system)
11435 (native-inputs
11436 `(("python-mock" ,python-mock)
11437 ("python-nose" ,python-nose)
4e096968 11438 ("python-coverage" ,python-coverage)))
f22efa01 11439 (propagated-inputs
4e096968
HG
11440 `(("python-six" ,python-six)
11441 ("python-dateutil-2" ,python-dateutil-2)))
974ee2c1
TS
11442 (arguments
11443 `(#:phases (modify-phases %standard-phases
11444 ;; The tests are normally executed via `make test`, but the PyPi
11445 ;; package does not include the Makefile.
11446 (replace 'check
11447 (lambda _
11448 (zero? (system* "nosetests" "./tests/")))))))
11449 (home-page "https://github.com/spulec/freezegun")
11450 (synopsis "Test utility for mocking the datetime module")
11451 (description
11452 "FreezeGun is a library that allows your python tests to travel through
11453time by mocking the datetime module.")
11454 (license license:asl2.0)))
11455
11456(define-public python2-freezegun
f210e944
HG
11457 (package-with-python2 python-freezegun))
11458
dddcb25c
MB
11459
11460(define-public python-odfpy
11461 (package
11462 (name "python-odfpy")
11463 (version "1.3.3")
11464 (source (origin
11465 (method url-fetch)
11466 (uri (pypi-uri "odfpy" version))
11467 (sha256
11468 (base32
11469 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
11470 (arguments
11471 `(#:modules ((srfi srfi-1)
11472 (guix build python-build-system)
11473 (guix build utils))
11474 #:phases
11475 (modify-phases %standard-phases
11476 (replace 'check
11477 ;; The test runner invokes python2 and python3 for test*.py.
11478 ;; To avoid having both in inputs, we replicate it here.
11479 (lambda _
11480 (every (lambda (test-file)
11481 (zero? (system* "python" test-file)))
11482 (find-files "tests" "^test.*\\.py$")))))))
11483 (build-system python-build-system)
11484 (home-page "https://github.com/eea/odfpy")
11485 (synopsis "Python API and tools to manipulate OpenDocument files")
11486 (description "Collection of libraries and utility programs written in
11487Python to manipulate OpenDocument 1.2 files.")
11488 (license
11489 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
11490 ;; number of files with other licenses.
11491 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
11492
11493(define-public python2-odfpy
11494 (package-with-python2 python-odfpy))
b30565bd
MB
11495
11496(define-public python-cachecontrol
11497 (package
11498 (name "python-cachecontrol")
11499 (version "0.11.6")
11500 (source
11501 (origin
11502 (method url-fetch)
11503 ;; Pypi does not have tests.
11504 (uri (string-append
11505 "https://github.com/ionrock/cachecontrol/archive/v"
11506 version ".tar.gz"))
11507 (file-name (string-append name "-" version ".tar.gz"))
11508 (sha256
11509 (base32
11510 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
11511 (build-system python-build-system)
11512 (arguments
11513 `(#:phases
11514 (modify-phases %standard-phases
11515 (replace 'check
11516 (lambda _
11517 ;; Drop test that requires internet access.
11518 (delete-file "tests/test_regressions.py")
11519 (setenv "PYTHONPATH"
11520 (string-append (getcwd) "/build/lib:"
11521 (getenv "PYTHONPATH")))
11522 (zero? (system* "py.test" "-vv")))))))
11523 (native-inputs
11524 `(("python-pytest" ,python-pytest)
11525 ("python-redis" ,python-redis)
11526 ("python-webtest" ,python-webtest)
11527 ("python-mock" ,python-mock)))
11528 (propagated-inputs
11529 `(("python-requests" ,python-requests)
11530 ("python-lockfile" ,python-lockfile)))
11531 (home-page "https://github.com/ionrock/cachecontrol")
11532 (synopsis "The httplib2 caching algorithms for use with requests")
11533 (description "CacheControl is a port of the caching algorithms in
11534@code{httplib2} for use with @code{requests} session objects.")
f210e944 11535 (license license:asl2.0)))
b30565bd
MB
11536
11537(define-public python2-cachecontrol
f210e944 11538 (package-with-python2 python-cachecontrol))
243db824
DM
11539
11540(define-public python-lit
11541 (package
11542 (name "python-lit")
11543 (version "0.5.0")
11544 (source
11545 (origin
11546 (method url-fetch)
11547 (uri (pypi-uri "lit" version))
11548 (sha256
11549 (base32
11550 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
11551 (build-system python-build-system)
11552 (home-page "http://llvm.org/")
11553 (synopsis "LLVM Software Testing Tool")
11554 (description "@code{lit} is a portable tool for executing LLVM and Clang
11555style test suites, summarizing their results, and providing indication of
11556failures.")
f210e944 11557 (license license:ncsa)))
243db824
DM
11558
11559(define-public python2-lit
f210e944 11560 (package-with-python2 python-lit))
66f95b20
MB
11561
11562(define-public python-pytest-pep8
11563 (package
11564 (name "python-pytest-pep8")
11565 (version "1.0.6")
11566 (source (origin
11567 (method url-fetch)
11568 (uri (pypi-uri "pytest-pep8" version))
11569 (sha256
11570 (base32
11571 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
11572 (build-system python-build-system)
11573 (arguments
b41a05ce 11574 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
11575 (native-inputs
11576 `(("python-pytest" ,python-pytest)))
11577 (propagated-inputs
11578 `(("python-pep8" ,python-pep8)))
11579 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
11580 (synopsis "Py.test plugin to check PEP8 requirements")
11581 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 11582 (license license:expat)))
66f95b20
MB
11583
11584(define-public python2-pytest-pep8
f210e944 11585 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
11586
11587(define-public python-pytest-flakes
11588 (package
11589 (name "python-pytest-flakes")
11590 (version "1.0.1")
11591 (source (origin
11592 (method url-fetch)
11593 (uri (pypi-uri "pytest-flakes" version))
11594 (sha256
11595 (base32
11596 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
11597 (build-system python-build-system)
11598 (arguments
b41a05ce 11599 `(#:phases
df94a6b5
MB
11600 (modify-phases %standard-phases
11601 (delete 'check)
11602 (add-after 'install 'check
05c2fd36
HG
11603 (lambda* (#:key outputs inputs #:allow-other-keys)
11604 ;; It's easier to run tests after install.
11605 ;; Make installed package available for running the tests
11606 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
11607 (zero? (system* "py.test" "-vv")))))))
11608 (native-inputs
11609 `(("python-coverage" ,python-coverage)
11610 ("python-pytest" ,python-pytest)
11611 ("python-pytest-cache" ,python-pytest-cache)
11612 ("python-pytest-pep8" ,python-pytest-pep8)))
11613 (propagated-inputs
11614 `(("python-pyflakes" ,python-pyflakes)))
11615 (home-page "https://github.com/fschulze/pytest-flakes")
11616 (synopsis "Py.test plugin to check source code with pyflakes")
11617 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 11618 (license license:expat)))
df94a6b5
MB
11619
11620(define-public python2-pytest-flakes
f210e944 11621 (package-with-python2 python-pytest-flakes))
5467ea62
MB
11622
11623(define-public python-natsort
11624 (package
11625 (name "python-natsort")
11626 (version "5.0.1")
11627 (source (origin
11628 (method url-fetch)
11629 (uri (pypi-uri "natsort" version))
11630 (sha256
11631 (base32
11632 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
11633 (build-system python-build-system)
11634 (arguments
11635 `(#:phases
11636 (modify-phases %standard-phases
11637 (add-before 'check 'set-cachedir
11638 ;; Tests require write access to $HOME by default
11639 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
11640 (native-inputs
11641 `(("python-hypothesis" ,python-hypothesis)
11642 ("python-pytest-cache" ,python-pytest-cache)
11643 ("python-pytest-cov" ,python-pytest-cov)
11644 ("python-pytest-flakes" ,python-pytest-flakes)
11645 ("python-pytest-pep8" ,python-pytest-pep8)))
11646 (propagated-inputs ; TODO: Add python-fastnumbers.
11647 `(("python-pyicu" ,python-pyicu)))
11648 (home-page "https://github.com/SethMMorton/natsort")
11649 (synopsis "Natural sorting for python and shell")
11650 (description
11651 "Natsort lets you apply natural sorting on lists instead of
11652lexicographical. If you use the built-in @code{sorted} method in python
11653on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
11654returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
11655function @code{natsorted} that identifies numbers and sorts them separately
11656from strings. It can also sort version numbers, real numbers, mixed types
11657and more, and comes with a shell command @command{natsort} that exposes this
11658functionality in the command line.")
11659 (license license:expat)
11660 (properties `((python2-variant . ,(delay python2-natsort))))))
11661
11662(define-public python2-natsort
11663 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
11664 (package (inherit base)
11665 (native-inputs
00e10c6e 11666 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
11667 ("python2-mock" ,python2-mock)
11668 ("python2-enum34" ,python2-enum34)
11669 ,@(package-native-inputs base))))))
4efb9c54
SR
11670
11671(define-public python-glances
11672 (package
11673 (name "python-glances")
11674 (version "2.7.1")
11675 (source
11676 (origin
11677 (method url-fetch)
11678 (uri (pypi-uri "Glances" version))
11679 (sha256
11680 (base32
11681 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
11682 (build-system python-build-system)
f22efa01 11683 (propagated-inputs
4efb9c54
SR
11684 `(("python-psutil" ,python-psutil)))
11685 (home-page
11686 "https://github.com/nicolargo/glances")
11687 (synopsis
11688 "A cross-platform curses-based monitoring tool")
11689 (description
11690 "Glances is a curses-based monitoring tool for a wide variety of platforms.
11691Glances uses the PsUtil library to get information from your system. It monitors
11692CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 11693 (license license:lgpl3+)))
4efb9c54
SR
11694
11695(define-public python2-glances
f210e944 11696 (package-with-python2 python-glances))
05b7a593
EF
11697
11698(define-public python-graphql-core
11699 (package
11700 (name "python-graphql-core")
11701 (version "0.5.3")
11702 (source
11703 (origin
11704 (method url-fetch)
11705 (uri (pypi-uri "graphql-core" version))
11706 (sha256
11707 (base32
11708 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
11709 (build-system python-build-system)
11710 (arguments
326f8285
LF
11711 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
11712 #:phases
05b7a593
EF
11713 (modify-phases %standard-phases
11714 (add-after 'unpack 'patch-hardcoded-version
11715 (lambda _ (substitute*
11716 "setup.py"
11717 (("'gevent==1.1rc1'") "'gevent'"))
11718 #t)))))
11719 (native-inputs
11720 `(("python-gevent" ,python-gevent)
11721 ("python-mock" ,python-mock)
11722 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 11723 (propagated-inputs
05b7a593
EF
11724 `(("python-promise" ,python-promise)
11725 ("python-six" ,python-six)))
11726 (home-page "https://github.com/graphql-python/graphql-core")
11727 (synopsis "GraphQL implementation for Python")
11728 (description
11729 "GraphQL implementation for Python. GraphQL is a data query language and
11730runtime designed and used to request and deliver data to mobile and web apps.
11731This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
11732to Python.")
05b7a593
EF
11733 (license license:expat)))
11734
11735(define-public python2-graphql-core
f210e944 11736 (package-with-python2 python-graphql-core))
7ee51575
EF
11737
11738(define-public python-graphql-relay
11739 (package
11740 (name "python-graphql-relay")
b13a5b4d 11741 (version "0.4.5")
7ee51575
EF
11742 (source
11743 (origin
11744 (method url-fetch)
11745 (uri (pypi-uri "graphql-relay" version))
11746 (sha256
11747 (base32
b13a5b4d 11748 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
7ee51575
EF
11749 (build-system python-build-system)
11750 (native-inputs
11751 `(("python-pytest" ,python-pytest)))
f22efa01 11752 (propagated-inputs
7ee51575
EF
11753 `(("python-graphql-core" ,python-graphql-core)
11754 ("python-promise" ,python-promise)
11755 ("python-six" ,python-six)))
11756 (home-page "https://github.com/graphql-python/graphql-relay-py")
11757 (synopsis "Relay implementation for Python")
11758 (description
11759 "This is a library to allow the easy creation of Relay-compliant servers
11760using the GraphQL Python reference implementation of a GraphQL server. It
11761should be noted that the code is a exact port of the original
11762@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
11763from Facebook.")
7ee51575
EF
11764 (license license:expat)))
11765
11766(define-public python2-graphql-relay
f210e944 11767 (package-with-python2 python-graphql-relay))
ddc63a56
EF
11768
11769(define-public python-graphene
11770 (package
11771 (name "python-graphene")
11772 (version "0.10.2")
11773 (source
11774 (origin
11775 (method url-fetch)
11776 (uri (pypi-uri "graphene" version))
11777 (sha256
11778 (base32
11779 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
11780 (build-system python-build-system)
11781 (native-inputs
11782 `(("python-django-filter" ,python-django-filter)
11783 ("python-mock" ,python-mock)
11784 ("python-psycopg2" ,python-psycopg2)
11785 ("python-pytest-django" ,python-pytest-django)
11786 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 11787 (propagated-inputs
ddc63a56
EF
11788 `(("python-graphql-core" ,python-graphql-core)
11789 ("python-graphql-relay" ,python-graphql-relay)
11790 ("python-iso8601" ,python-iso8601)
11791 ("python-promise" ,python-promise)
11792 ("python-six" ,python-six)))
11793 (home-page "http://graphene-python.org/")
11794 (synopsis "GraphQL Framework for Python")
11795 (description
11796 "Graphene is a Python library for building GraphQL schemas/types.
11797A GraphQL schema describes your data model, and provides a GraphQL server
11798with an associated set of resolve methods that know how to fetch data.")
11799 (properties `((python2-variant . ,(delay python2-graphene))))
11800 (license license:expat)))
11801
11802(define-public python2-graphene
11803 (let ((base (package-with-python2
11804 (strip-python2-variant python-graphene))))
11805 (package (inherit base)
11806 (native-inputs
00e10c6e 11807 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 11808 ,@(package-native-inputs base))))))
d488d5d6
EF
11809
11810(define-public python-nautilus
11811 (package
11812 (name "python-nautilus")
11813 (version "0.4.9")
11814 (source
11815 (origin
11816 (method url-fetch)
11817 (uri (pypi-uri "nautilus" version))
11818 (sha256
11819 (base32
11820 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
11821 (build-system python-build-system)
11822 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 11823 (propagated-inputs
d488d5d6
EF
11824 `(("python-bcrypt" ,python-bcrypt)
11825 ("python-click" ,python-click)
11826 ("python-consul" ,python-consul)
d488d5d6
EF
11827 ("python-graphene" ,python-graphene)
11828 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
11829 ("python-peewee" ,python-peewee)
11830 ("python-pika" ,python-pika)
d488d5d6
EF
11831 ("python-tornado" ,python-tornado)
11832 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
11833 (native-inputs
11834 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
11835 (home-page "https://github.com/AlecAivazis/nautilus")
11836 (synopsis "Library for creating microservice applications")
11837 (description
11838 "Nautilus is a framework for flux based microservices that looks to
11839provide extendible implementations of common aspects of a cloud so that you can
11840focus on building massively scalable web applications.")
11841 (license license:expat)))
94cffc63 11842
89cd988b
DM
11843(define-public python-snowballstemmer
11844 (package
11845 (name "python-snowballstemmer")
11846 (version "1.2.1")
11847 (source (origin
1bd858cc
MB
11848 (method url-fetch)
11849 (uri (pypi-uri "snowballstemmer" version))
11850 (sha256
11851 (base32
11852 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
89cd988b
DM
11853 (build-system python-build-system)
11854 (arguments
11855 `(;; No tests exist
11856 #:tests? #f))
11857 (home-page "https://github.com/shibukawa/snowball_py")
11858 (synopsis "Snowball stemming library collection for Python")
11859 (description "This package provides 16 word stemmer algorithms generated
11860from Snowball algorithms. It includes the 15 original ones plus the Poerter
11861English stemmer.")
11862 (license license:bsd-3)))
11863
11864(define-public python2-snowballstemmer
11865 (package-with-python2 python-snowballstemmer))
11866
754bfd70
DM
11867(define-public python-sphinx-cloud-sptheme
11868 (package
11869 (name "python-sphinx-cloud-sptheme")
11870 (version "1.7.1")
11871 (source (origin
1bd858cc
MB
11872 (method url-fetch)
11873 (uri (pypi-uri "cloud_sptheme" version))
11874 (sha256
11875 (base32
11876 "0zm9ap4p5dzln8f1m2immadaxv2xpg8jg4w53y52rhfl7pdb58vy"))))
11877 (build-system python-build-system)
11878 (native-inputs
11879 `(("python-sphinx" ,python-sphinx)))
11880 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
11881 (synopsis "'Cloud' theme for Sphinx documenter")
11882 (description "This package contains the \"Cloud\" theme for Sphinx and some
754bfd70 11883related extensions.")
1bd858cc 11884 (license license:bsd-3)))
754bfd70
DM
11885
11886(define-public python2-sphinx-cloud-sptheme
11887 (package-with-python2 python-sphinx-cloud-sptheme))
11888
807a5b32
DM
11889(define-public python-sphinx-alabaster-theme
11890 (package
11891 (name "python-sphinx-alabaster-theme")
11892 (version "0.7.9")
1bd858cc
MB
11893 (source (origin
11894 (method url-fetch)
11895 (uri (pypi-uri "alabaster" version))
11896 (sha256
11897 (base32
11898 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
807a5b32
DM
11899 (build-system python-build-system)
11900 (propagated-inputs
11901 `(("python-pygments" ,python-pygments)))
11902 (home-page "https://alabaster.readthedocs.io/")
11903 (synopsis "Configurable sidebar-enabled Sphinx theme")
11904 (description "Alabaster is a visually (c)lean, responsive, configurable
11905theme for the Sphinx documentation system. It's the default theme of Sphinx.")
11906 (license license:bsd-3)))
11907
11908(define-public python2-sphinx-alabaster-theme
11909 (package-with-python2 python-sphinx-alabaster-theme))
11910
66d3f50a
LF
11911(define-public python-betamax
11912 (package
11913 (name "python-betamax")
11914 (version "0.8.0")
11915 (source
11916 (origin
11917 (method url-fetch)
11918 (uri (pypi-uri "betamax" version))
11919 (sha256
11920 (base32
11921 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
11922 (build-system python-build-system)
11923 (arguments
11924 '(;; Many tests fail because they require networking.
11925 #:tests? #f))
c415f763 11926 (propagated-inputs
66d3f50a
LF
11927 `(("python-requests" ,python-requests)))
11928 (home-page "https://github.com/sigmavirus24/betamax")
11929 (synopsis "Record HTTP interactions with python-requests")
11930 (description "Betamax will record your test suite's HTTP interactions and
11931replay them during future tests. It is designed to work with python-requests.")
f210e944 11932 (license license:expat)))
66d3f50a
LF
11933
11934(define-public python2-betamax
f210e944 11935 (package-with-python2 python-betamax))
ca0635b4 11936
94cffc63
LF
11937(define-public python-s3transfer
11938 (package
11939 (name "python-s3transfer")
1b5ea092 11940 (version "0.1.10")
94cffc63
LF
11941 (source (origin
11942 (method url-fetch)
11943 (uri (pypi-uri "s3transfer" version))
11944 (sha256
11945 (base32
1b5ea092 11946 "1h8g9bknvxflxkpbnxyfxmk8pvgykbbk9ljdvhqh6z4vjc2926ms"))))
94cffc63 11947 (build-system python-build-system)
fad8bf97
LF
11948 (arguments
11949 `(#:phases
11950 (modify-phases %standard-phases
11951 (replace 'check
11952 (lambda _
11953 ;; 7 of the 'integration' tests require network access or login
11954 ;; credentials.
11955 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 11956 (native-inputs
fad8bf97
LF
11957 `(("python-docutils" ,python-docutils)
11958 ("python-mock" ,python-mock)
11959 ("python-nose" ,python-nose)))
f22efa01 11960 (propagated-inputs
94cffc63
LF
11961 `(("python-botocore" ,python-botocore)))
11962 (synopsis "Amazon S3 Transfer Manager")
11963 (description "S3transfer is a Python library for managing Amazon S3
11964transfers.")
11965 (home-page "https://github.com/boto/s3transfer")
11966 (license license:asl2.0)
11967 (properties `((python2-variant . ,(delay python2-s3transfer))))))
11968
11969(define-public python2-s3transfer
11970 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
11971 (package
11972 (inherit base)
11973 (native-inputs
11974 `(("python2-futures" ,python2-futures)
94cffc63 11975 ,@(package-native-inputs base))))))
8ab59181
HG
11976
11977(define-public python-setproctitle
11978(package
11979 (name "python-setproctitle")
11980 (version "1.1.10")
11981 (source
11982 (origin
11983 (method url-fetch)
11984 (uri (pypi-uri "setproctitle" version))
11985 (sha256
11986 (base32
11987 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
11988 (build-system python-build-system)
11989 (arguments
11990 '(#:phases
11991 (modify-phases %standard-phases
11992 (add-before 'check 'patch-Makefile
11993 ;; Stricly this is only required for the python2 variant.
11994 ;; But adding a phase in an inherited package seems to be
11995 ;; cumbersum. So we patch even for python3.
11996 (lambda _
11997 (let ((nose (assoc-ref %build-inputs "python2-nose")))
11998 (when nose
11999 (substitute* "Makefile"
12000 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
12001 (string-append nose "/bin/nosetests "))))
12002 #t)))
12003 (replace 'check
12004 (lambda _
12005 (setenv "PYTHON" (or (which "python3") (which "python")))
12006 (setenv "PYCONFIG" (or (which "python3-config")
12007 (which "python-config")))
12008 (setenv "CC" "gcc")
12009 ;; No need to extend PYTHONPATH to find the built package, since
12010 ;; the Makefile will build anyway
12011 (zero? (system* "make" "check")))))))
12012 (native-inputs
12013 `(("procps" ,procps))) ; required for tests
12014 (home-page
12015 "https://github.com/dvarrazzo/py-setproctitle")
12016 (synopsis
12017 "Setproctitle implementation for Python to customize the process title")
12018 (description "The library allows a process to change its title (as displayed
12019by system tools such as ps and top).
12020
12021Changing the title is mostly useful in multi-process systems, for
12022example when a master process is forked: changing the children's title
12023allows to identify the task each process is busy with. The technique
12024is used by PostgreSQL and the OpenSSH Server for example.")
12025 (license license:bsd-3)
12026 (properties `((python2-variant . ,(delay python2-setproctitle))))))
12027
12028(define-public python2-setproctitle
12029 (let ((base (package-with-python2
12030 (strip-python2-variant python-setproctitle))))
12031 (package
12032 (inherit base)
12033 (native-inputs `(("python2-nose" ,python2-nose)
12034 ,@(package-native-inputs base))))))
162e42d8
HG
12035
12036(define-public python-validictory
12037 (package
12038 (name "python-validictory")
12039 (version "1.0.1")
12040 (source
12041 (origin
12042 (method url-fetch)
12043 (uri (pypi-uri "validictory" version))
12044 (sha256
12045 (base32
12046 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
12047 (build-system python-build-system)
12048 (arguments
12049 '(#:phases
12050 (modify-phases %standard-phases
12051 (add-after 'unpack 'bootstrap
12052 ;; Move the tests out of the package directory to avoid
12053 ;; packaging them.
12054 (lambda* _
12055 (rename-file "validictory/tests" "tests")
12056 (delete-file "tests/__init__.py")))
12057 (replace 'check
12058 (lambda _
12059 ;; Extend PYTHONPATH so the built package will be found.
12060 (setenv "PYTHONPATH"
12061 (string-append (getcwd) "/build/lib:"
12062 (getenv "PYTHONPATH")))
12063 (zero? (system* "py.test" "-vv" )))))))
12064 (native-inputs
12065 `(("python-pytest" ,python-pytest)))
12066 (home-page
12067 "https://github.com/jamesturk/validictory")
12068 (synopsis "General purpose Python data validator")
12069 (description "It allows validation of arbitrary Python data structures.
12070
12071The schema format is based on the JSON Schema
12072proposal (http://json-schema.org), so combined with json the library is also
12073useful as a validator for JSON data.")
f210e944 12074 (license license:expat)))
162e42d8
HG
12075
12076(define-public python2-validictory
f210e944 12077 (package-with-python2 python-validictory))
0990edfe
DM
12078
12079(define-public python-aniso8601
12080 (package
12081 (name "python-aniso8601")
12082 (version "1.1.0")
12083 (source
12084 (origin
12085 (method url-fetch)
12086 (uri (pypi-uri "aniso8601" version))
12087 (sha256
12088 (base32
12089 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
12090 (build-system python-build-system)
12091 (propagated-inputs
12092 `(("python-dateutil-2" ,python-dateutil-2)))
12093 (home-page
12094 "https://bitbucket.org/nielsenb/aniso8601")
12095 (synopsis
12096 "Python library for parsing ISO 8601 strings")
12097 (description
12098 "This package contains a library for parsing ISO 8601 datetime strings.")
12099 (license license:bsd-3)))
999d964d
DM
12100
12101(define-public python-flask-restful
12102 (package
12103 (name "python-flask-restful")
12104 (version "0.3.5")
12105 (source
12106 (origin
12107 (method url-fetch)
12108 (uri (pypi-uri "Flask-RESTful" version))
12109 (sha256
12110 (base32
12111 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
12112 (build-system python-build-system)
12113 (propagated-inputs
12114 `(("python-aniso8601" ,python-aniso8601)
12115 ("python-flask" ,python-flask)
12116 ("python-pycrypto" ,python-pycrypto)
12117 ("python-pytz" ,python-pytz)))
12118 (native-inputs
12119 `(;; Optional dependency of Flask. Tests need it.
12120 ("python-blinker" ,python-blinker)
12121 ("python-mock" ,python-mock) ; For tests
12122 ("python-nose" ,python-nose) ; For tests
12123 ("python-sphinx" ,python-sphinx)))
12124 (home-page
12125 "https://www.github.com/flask-restful/flask-restful/")
12126 (synopsis
12127 "Flask module for creating REST APIs")
12128 (description
12129 "This package contains a Flask module for creating REST APIs.")
12130 (license license:bsd-3)))
31288222
DM
12131
12132(define-public python-flask-basicauth
12133 (package
12134 (name "python-flask-basicauth")
12135 (version "0.2.0")
12136 (source
12137 (origin
12138 (method url-fetch)
12139 (uri (pypi-uri "Flask-BasicAuth" version))
12140 (sha256
12141 (base32
12142 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
12143 (build-system python-build-system)
12144 (propagated-inputs
12145 `(("python-flask" ,python-flask)))
12146 (home-page
12147 "https://github.com/jpvanhal/flask-basicauth")
12148 (synopsis
12149 "HTTP basic access authentication for Flask")
12150 (description
12151 "This package provides HTTP basic access authentication for Flask.")
12152 (license license:bsd-3)))
903276d0
DM
12153
12154(define-public python-flask-sqlalchemy
12155 (package
12156 (name "python-flask-sqlalchemy")
12157 (version "2.1")
12158 (source
12159 (origin
12160 (method url-fetch)
12161 (uri (pypi-uri "Flask-SQLAlchemy" version))
12162 (sha256
12163 (base32
12164 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
12165 (build-system python-build-system)
12166 (propagated-inputs
12167 `(("python-flask" ,python-flask)
12168 ("python-sqlalchemy" ,python-sqlalchemy)))
12169 (home-page
12170 "http://github.com/mitsuhiko/flask-sqlalchemy")
12171 (synopsis
12172 "Module adding SQLAlchemy support to your Flask application")
12173 (description
12174 "This package adds SQLAlchemy support to your Flask application.")
12175 (license license:bsd-3)))
329b4b3b
LF
12176
12177(define-public python-pyev
12178 (package
12179 (name "python-pyev")
12180 (version "0.9.0")
12181 (source
12182 (origin
12183 (method url-fetch)
12184 (uri (pypi-uri "pyev" version))
12185 (sha256
12186 (base32
12187 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
12188 (build-system python-build-system)
12189 (arguments
12190 `(#:tests? #f ; no test suite
12191 #:phases
12192 (modify-phases %standard-phases
12193 (add-after 'unpack 'patch
12194 (lambda* (#:key inputs #:allow-other-keys)
12195 (let ((libev (string-append (assoc-ref inputs "libev")
12196 "/lib/libev.so.4")))
12197 (substitute* "setup.py"
12198 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
12199 (string-append "libev_dll_name = \"" libev "\"")))))))))
12200 (inputs
12201 `(("libev" ,libev)))
12202 (home-page "http://pythonhosted.org/pyev/")
12203 (synopsis "Python libev interface")
12204 (description "Pyev provides a Python interface to libev.")
12205 (license license:gpl3)))
12206
12207(define-public python2-pyev
12208 (package-with-python2 python-pyev))
45b4f127
DM
12209
12210(define-public python-imagesize
12211 (package
12212 (name "python-imagesize")
12213 (version "0.7.1")
12214 (source
12215 (origin
12216 (method url-fetch)
12217 (uri (pypi-uri "imagesize" version))
12218 (sha256
12219 (base32
12220 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12221 (build-system python-build-system)
9422c98a
LF
12222 (arguments
12223 '(;; Test files are not distributed on PyPi:
12224 ;; https://github.com/shibukawa/imagesize_py/issues/7
12225 #:tests? #f))
45b4f127
DM
12226 (home-page "https://github.com/shibukawa/imagesize_py")
12227 (synopsis "Gets image size of files in variaous formats in Python")
12228 (description
12229 "This package allows determination of image size from
12230PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 12231 (license license:expat)))
45b4f127
DM
12232
12233(define-public python2-imagesize
f210e944 12234 (package-with-python2 python-imagesize))
2f6dd9cd
AI
12235
12236(define-public python-axolotl-curve25519
12237 (package
12238 (name "python-axolotl-curve25519")
12239 (version "0.1")
12240 (source
12241 (origin
12242 (method git-fetch)
12243 (uri (git-reference
12244 (url "git://github.com/tgalal/python-axolotl-curve25519")
12245 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12246 (file-name (string-append name "-" version "-checkout"))
12247 (sha256
12248 (base32
12249 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12250 (build-system python-build-system)
12251 (arguments
12252 `(;; Prevent creation of the egg. This works around
12253 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12254 #:configure-flags '("--root=/")))
2f6dd9cd
AI
12255 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
12256 (synopsis "Python wrapper for curve25519 library")
12257 (description "This is a python wrapper for the curve25519 library
12258with ed25519 signatures. The C code was pulled from
12259libaxolotl-android. At the moment this wrapper is meant for use by
12260python-axolotl.")
12261 (license (list license:gpl3 ; Most files
683cdbf5 12262 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
12263
12264(define-public python2-axolotl-curve25519
12265 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
12266
12267(define-public python-axolotl
12268 (package
12269 (name "python-axolotl")
12270 (version "0.1.35")
12271 (source
12272 (origin
12273 (method url-fetch)
12274 (uri (string-append
12275 "https://github.com/tgalal/python-axolotl/archive/"
12276 version ".tar.gz"))
12277 (file-name (string-append name "-" version ".tar.gz"))
12278 (sha256
12279 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
12280 (build-system python-build-system)
12281 (arguments
12282 `(#:phases
12283 (modify-phases %standard-phases
12284 ;; Don't install tests
12285 (add-before 'install 'remove-tests
12286 (lambda _
12287 (for-each delete-file-recursively
12288 '("axolotl/tests" "build/lib/axolotl/tests"))
12289 #t)))
12290 ;; Prevent creation of the egg. This works around
12291 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12292 #:configure-flags '("--root=/")))
06ff0837
AI
12293 (propagated-inputs
12294 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
12295 ("python-dateutil" ,python-dateutil)
12296 ("python-protobuf" ,python-protobuf)
12297 ("python-pycrypto" ,python-pycrypto)))
12298 (home-page "https://github.com/tgalal/python-axolotl")
12299 (synopsis "Python port of libaxolotl-android")
12300 (description "This is a python port of libaxolotl-android. This
12301is a ratcheting forward secrecy protocol that works in synchronous and
12302asynchronous messaging environments.")
12303 (license license:gpl3)))
12304
12305(define-public python2-axolotl
12306 (package-with-python2 python-axolotl))
e2fca490
DM
12307
12308(define-public python-termstyle
12309 (package
12310 (name "python-termstyle")
12311 (version "0.1.11")
12312 (source
12313 (origin
12314 (method url-fetch)
12315 (uri (pypi-uri "termstyle" version))
12316 (sha256
12317 (base32
12318 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
12319 (build-system python-build-system)
12320 (home-page "http://github.com/gfxmonk/termstyle")
12321 (synopsis "Console text coloring for Python")
12322 (description "This package provides console text coloring for Python.")
12323 (license license:bsd-3)))
1e6112d8
DM
12324
12325(define-public python-rednose
12326 (package
12327 (name "python-rednose")
12328 (version "1.2.1")
12329 (source
12330 (origin
12331 (method url-fetch)
12332 (uri (pypi-uri "rednose" version))
12333 (sha256
12334 (base32
12335 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
12336 (build-system python-build-system)
12337 (arguments
12338 `(#:phases
12339 (modify-phases %standard-phases
12340 (add-after 'unpack 'fix-deps
12341 (lambda _
12342 ;; See <https://github.com/JBKahn/rednose/issues/12>
12343 (substitute* "setup.py"
12344 (("python-termstyle") "termstyle"))
12345 #t)))))
12346 (propagated-inputs
12347 `(("python-colorama" ,python-colorama)
12348 ("python-termstyle" ,python-termstyle)))
12349 (native-inputs
12350 `(("python-six" ,python-six)
12351 ("python-nose" ,python-nose)))
12352 (home-page "https://github.com/JBKahn/rednose")
12353 (synopsis "Colored output for Python nosetests")
12354 (description "This package provides colored output for the
12355@command{nosetests} command of the Python Nose unit test framework.")
12356 (license license:bsd-3)))
0a7f17f0
DM
12357
12358(define-public python-flask-restplus
12359 (package
12360 (name "python-flask-restplus")
12361 (version "0.9.2")
12362 (source
12363 (origin
12364 (method url-fetch)
12365 (uri (pypi-uri "flask-restplus" version))
12366 (sha256
12367 (base32
12368 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
12369 (build-system python-build-system)
12370 (propagated-inputs
12371 `(("python-aniso8601" ,python-aniso8601)
12372 ("python-flask" ,python-flask)
12373 ("python-jsonschema" ,python-jsonschema)
12374 ("python-pytz" ,python-pytz)
12375 ("python-six" ,python-six)))
12376 (native-inputs
12377 `(("python-tzlocal" ,python-tzlocal)
12378 ("python-blinker" ,python-blinker)
12379 ("python-nose" ,python-nose)
12380 ("python-rednose" ,python-rednose)))
12381 (home-page "https://github.com/noirbizarre/flask-restplus")
12382 (synopsis "Framework for documented API development with Flask")
12383 (description "This package provides a framework for API development with
12384the Flask web framework in Python. It is similar to package
12385@code{python-flask-restful} but supports the @code{python-swagger}
12386documentation builder.")
12387 (license license:expat)))
1ed21519
DM
12388
12389(define-public python-sadisplay
12390 (package
12391 (name "python-sadisplay")
12392 (version "0.4.6")
12393 (source
12394 (origin
12395 (method url-fetch)
12396 (uri (pypi-uri "sadisplay" version))
12397 (sha256
12398 (base32
12399 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
12400 (build-system python-build-system)
12401 (propagated-inputs
12402 `(("python-sqlalchemy" ,python-sqlalchemy)))
12403 (native-inputs
12404 `(("python-nose" ,python-nose)))
12405 (home-page "https://bitbucket.org/estin/sadisplay")
12406 (synopsis "SQLAlchemy schema displayer")
12407 (description "This package provides a program to build Entity
12408Relationship diagrams from a SQLAlchemy model (or directly from the
12409database).")
12410 (license license:bsd-3)))
12411
12412(define-public python2-sadisplay
12413 (package-with-python2 python-sadisplay))
444a79b6
DM
12414
12415(define-public python-flask-restful-swagger
12416 (package
12417 (name "python-flask-restful-swagger")
12418 (version "0.19")
12419 (source
12420 (origin
12421 (method url-fetch)
12422 (uri (pypi-uri "flask-restful-swagger" version))
12423 (sha256
12424 (base32
12425 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
12426 (build-system python-build-system)
12427 (propagated-inputs
12428 `(("python-flask-restful" ,python-flask-restful)))
12429 (home-page "https://github.com/rantav/flask-restful-swagger")
12430 (synopsis "Extract Swagger specs from Flask-Restful projects")
12431 (description "This package lets you extract Swagger API documentation
12432specs from your Flask-Restful projects.")
12433 (license license:expat)))
12434
12435(define-public python2-flask-restful-swagger
12436 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
12437
12438(define-public python-argcomplete
12439 (package
12440 (name "python-argcomplete")
12441 (version "1.7.0")
12442 (source
12443 (origin
12444 (method url-fetch)
12445 (uri (pypi-uri "argcomplete" version))
12446 (sha256
12447 (base32
12448 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
12449 (build-system python-build-system)
12450 (home-page "https://github.com/kislyuk/argcomplete")
12451 (synopsis "Shell tab completion for Python argparse")
12452 (description "argcomplete provides extensible command line tab completion
12453of arguments and options for Python scripts using @code{argparse}. It's
12454particularly useful for programs with many options or sub-parsers that can
12455dynamically suggest completions; for example, when browsing resources over the
12456network.")
12457 (license license:asl2.0)))
12458
12459(define-public python2-argcomplete
12460 (package-with-python2 python-argcomplete))
361a2fcf
TGR
12461
12462(define-public python-xopen
12463 (package
12464 (name "python-xopen")
12465 (version "0.1.1")
12466 (source
12467 (origin
12468 (method url-fetch)
12469 (uri (pypi-uri "xopen" version))
12470 (sha256
12471 (base32
12472 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
12473 (file-name (string-append name "-" version ".tar.gz"))))
12474 (build-system python-build-system)
12475 (home-page "https://github.com/marcelm/xopen/")
12476 (synopsis "Open compressed files transparently")
12477 (description "This module provides an @code{xopen} function that works like
12478Python's built-in @code{open} function, but can also deal with compressed files.
12479Supported compression formats are gzip, bzip2 and, xz, and are automatically
12480recognized by their file extensions. The focus is on being as efficient as
12481possible on all supported Python versions.")
12482 (license license:expat)))
12483
12484(define-public python2-xopen
12485 (package-with-python2 python-xopen))
8d67610b
DM
12486
12487(define-public python2-cheetah
12488 (package
12489 (name "python2-cheetah")
12490 (version "2.4.4")
12491 (source
12492 (origin
12493 (method url-fetch)
12494 (uri (pypi-uri "Cheetah" version))
12495 (sha256
12496 (base32
12497 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
12498 (build-system python-build-system)
12499 (arguments
12500 `(#:python ,python-2))
12501 (propagated-inputs
12502 `(("python2-markdown" ,python2-markdown)))
12503 (home-page "https://pythonhosted.org/Cheetah/")
12504 (synopsis "Template engine")
12505 (description "Cheetah is a text-based template engine and Python code
12506generator.
12507
12508Cheetah can be used as a standalone templating utility or referenced as
12509a library from other Python applications. It has many potential uses,
12510but web developers looking for a viable alternative to ASP, JSP, PHP and
12511PSP are expected to be its principle user group.
12512
12513Features:
12514@enumerate
12515@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
12516 text-based format.
12517@item Cleanly separates content, graphic design, and program code.
12518@item Blends the power and flexibility of Python with a simple template language
12519 that non-programmers can understand.
12520@item Gives template writers full access to any Python data structure, module,
12521 function, object, or method in their templates.
12522@item Makes code reuse easy by providing an object-orientated interface to
12523 templates that is accessible from Python code or other Cheetah templates.
12524 One template can subclass another and selectively reimplement sections of it.
12525@item Provides a simple, yet powerful, caching mechanism that can dramatically
12526 improve the performance of a dynamic website.
12527@item Compiles templates into optimized, yet readable, Python code.
12528@end enumerate")
12529 (license (license:x11-style "file://LICENSE"))))
916aafa4
CZ
12530
12531(define-public python-pbkdf2
12532 (package
12533 (name "python-pbkdf2")
12534 (version "1.3")
12535 (source
12536 (origin
12537 (method url-fetch)
12538 (uri (pypi-uri "pbkdf2" version))
12539 (sha256
12540 (base32
12541 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
12542 (build-system python-build-system)
12543 (propagated-inputs
12544 `(("python-pycrypto" ,python-pycrypto))) ; optional
12545 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
12546 (synopsis "Password-based key derivation")
12547 (description "This module implements the password-based key derivation
12548function, PBKDF2, specified in RSA PKCS#5 v2.0.
12549
12550PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
12551is part of the RSA Public Key Cryptography Standards series. The provided
12552implementation takes a password or a passphrase and a salt value (and
12553optionally a iteration count, a digest module, and a MAC module) and provides
12554a file-like object from which an arbitrarly-sized key can be read.")
12555 (license license:expat)))
12556
12557(define-public python2-pbkdf2
12558 (package-with-python2 python-pbkdf2))
cba84a38
CZ
12559
12560(define-public python-qrcode
12561 (package
12562 (name "python-qrcode")
12563 (version "5.3")
12564 (source
12565 (origin
12566 (method url-fetch)
12567 (uri (pypi-uri "qrcode" version))
12568 (sha256
12569 (base32
12570 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
12571 (build-system python-build-system)
12572 (propagated-inputs
12573 `(("python-lxml" ,python-lxml) ; for SVG output
12574 ("python-pillow" ,python-pillow) ; for PNG output
12575 ("python-six" ,python-six)))
12576 (home-page "https://github.com/lincolnloop/python-qrcode")
12577 (synopsis "QR Code image generator")
12578 (description "This package provides a pure Python QR Code generator
12579module. It uses the Python Imaging Library (PIL) to allow for the generation
12580of QR Codes.
12581
12582In addition this package provides a command line tool to generate QR codes and
12583either write these QR codes to a file or do the output as ascii art at the
12584console.")
12585 (license license:bsd-3)))
12586
12587(define-public python2-qrcode
12588 (package-with-python2 python-qrcode))
af7caada
CZ
12589
12590;; SlowAES isn't compatible with Python 3.
12591(define-public python2-slowaes
12592 (package
12593 (name "python2-slowaes")
12594 (version "0.1a1")
12595 (source
12596 (origin
12597 (method url-fetch)
12598 (uri (pypi-uri "slowaes" version))
12599 (sha256
12600 (base32
12601 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
12602 (build-system python-build-system)
12603 (arguments `(#:python ,python-2))
12604 (home-page "http://code.google.com/p/slowaes/")
12605 (synopsis "Implementation of AES in Python")
12606 (description "This package contains an implementation of AES in Python.
12607This implementation is slow (hence the project name) but still useful when
12608faster ones are not available.")
12609 (license license:asl2.0)))
1a917fc9
MFM
12610
12611(define-public python-rst2ansi
12612 (package
12613 (name "python-rst2ansi")
12614 (version "0.1.5")
12615 (source
12616 (origin
12617 (method url-fetch)
12618 (uri (pypi-uri "rst2ansi" version))
12619 (sha256
12620 (base32
12621 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
12622 (build-system python-build-system)
12623 (propagated-inputs
12624 `(("python-docutils" ,python-docutils)))
12625 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
12626 (synopsis "Convert RST to ANSI-decorated console output")
12627 (description
12628 "Python module dedicated to rendering RST (reStructuredText) documents
12629to ansi-escaped strings suitable for display in a terminal.")
12630 (license license:expat)))
2f4623db
MFM
12631
12632(define-public python-ddt
12633 (package
12634 (name "python-ddt")
12635 (version "1.1.1")
12636 (source
12637 (origin
12638 (method url-fetch)
12639 (uri (pypi-uri "ddt" version))
12640 (sha256
12641 (base32
12642 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
12643 (build-system python-build-system)
12644 (native-inputs
12645 `(("python-mock" ,python-mock)
12646 ("python-nose" ,python-nose)))
12647 (propagated-inputs
12648 `(("python-six" ,python-six)
12649 ("python-pyyaml" ,python-pyyaml)))
12650 (home-page "https://github.com/txels/ddt")
12651 (synopsis "Data-Driven Tests")
12652 (description
12653 "DDT (Data-Driven Tests) allows you to multiply one test case by running
12654it with different test data, and make it appear as multiple test cases.")
12655 (license license:expat)))
12656
12657(define-public python2-ddt
12658 (package-with-python2 python-ddt))
2299b137
MFM
12659
12660(define-public python-pycosat
12661 (package
12662 (name "python-pycosat")
12663 (version "0.6.1")
12664 (source
12665 (origin
12666 (method url-fetch)
12667 (uri (pypi-uri "pycosat" version))
12668 (sha256
12669 (base32
12670 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
12671 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
12672 (build-system python-build-system)
12673 (home-page "https://github.com/ContinuumIO/pycosat")
12674 (synopsis "Bindings to picosat (a SAT solver)")
12675 (description
12676 "This package provides efficient Python bindings to @code{picosat} on
12677the C level. When importing pycosat, the @code{picosat} solver becomes part
12678of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
12679Problem} (SAT) solver.")
12680 (license license:expat)))
12681
12682(define-public python2-pycosat
12683 (package-with-python2 python-pycosat))
8fd68504
MFM
12684
12685(define-public python2-ruamel.ordereddict
12686 (package
12687 (name "python2-ruamel.ordereddict")
12688 (version "0.4.9")
12689 (source
12690 (origin
12691 (method url-fetch)
12692 (uri (pypi-uri "ruamel.ordereddict" version))
12693 (sha256
12694 (base32
12695 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
12696 (build-system python-build-system)
12697 (arguments
12698 `(#:python ,python-2
12699 #:phases
12700 (modify-phases %standard-phases
12701 (delete 'check)
12702 (add-after 'install 'check
12703 (lambda* (#:key inputs outputs #:allow-other-keys)
12704 (add-installed-pythonpath inputs outputs)
12705 (zero? (system* "python" "test/testordereddict.py")))))))
12706 (home-page "https://bitbucket.org/ruamel/ordereddict")
12707 (synopsis "Version of dict that keeps keys in insertion order")
12708 (description
12709 "This is an implementation of an ordered dictionary with @dfn{Key
12710Insertion Order} (KIO: updates of values do not affect the position of the
12711key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
12712removed and put at the back). The standard library module @code{OrderedDict},
12713implemented later, implements a subset of @code{ordereddict} functionality.
12714Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
12715Order} (KSO, no sorting function can be specified, but a transform can be
12716specified to apply on the key before comparison (e.g. @code{string.lower})).")
12717 (license license:expat)))
d8768e31
EB
12718
12719(define-public python-pypeg2
12720 (package
12721 (name "python-pypeg2")
12722 (version "2.15.2")
12723 (source
12724 (origin
12725 (method url-fetch)
12726 (uri (pypi-uri "pyPEG2" version))
12727 (sha256
12728 (base32
12729 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
12730 (build-system python-build-system)
12731 (propagated-inputs `(("python-lxml" ,python-lxml)))
12732 (arguments
12733 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
12734 '(#:tests? #f))
12735 (home-page "https://fdik.org/pyPEG/")
12736 (synopsis "Parsering Expression Grammars in Python")
12737 (description "PyPEG is an intrinsic parser interpreter framework for
12738Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
12739parse many formal languages.")
12740 (license license:gpl2)))