gnu: Add python-flask-htmlmin.
[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>
33e9490c 33;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
5220022a 34;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
819939cb 35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
ec074213 36;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
916aafa4 37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
1a917fc9 38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
35db2d3c 39;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
a01b6da7
NK
40;;;
41;;; This file is part of GNU Guix.
42;;;
43;;; GNU Guix is free software; you can redistribute it and/or modify it
44;;; under the terms of the GNU General Public License as published by
45;;; the Free Software Foundation; either version 3 of the License, or (at
46;;; your option) any later version.
47;;;
48;;; GNU Guix is distributed in the hope that it will be useful, but
49;;; WITHOUT ANY WARRANTY; without even the implied warranty of
50;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51;;; GNU General Public License for more details.
52;;;
53;;; You should have received a copy of the GNU General Public License
54;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
55
1ffa7090 56(define-module (gnu packages python)
3f641af0 57 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 58 #:use-module (gnu packages)
8e451885 59 #:use-module (gnu packages algebra)
d79a343b 60 #:use-module (gnu packages adns)
89b2e0b0 61 #:use-module (gnu packages attr)
d96034ed 62 #:use-module (gnu packages backup)
3969ca54 63 #:use-module (gnu packages bash)
1ffa7090 64 #:use-module (gnu packages compression)
4ed20663 65 #:use-module (gnu packages databases)
ddc63a56 66 #:use-module (gnu packages django)
5e1c9367 67 #:use-module (gnu packages file)
4ed20663 68 #:use-module (gnu packages fontutils)
4ed20663
AE
69 #:use-module (gnu packages gcc)
70 #:use-module (gnu packages ghostscript)
6eb7af2a 71 #:use-module (gnu packages gl)
4ed20663 72 #:use-module (gnu packages glib)
c227458a 73 #:use-module (gnu packages graphviz)
6eb7af2a 74 #:use-module (gnu packages gstreamer)
4ed20663 75 #:use-module (gnu packages gtk)
421a80a2 76 #:use-module (gnu packages icu4c)
c937562e 77 #:use-module (gnu packages image)
4ed20663 78 #:use-module (gnu packages imagemagick)
d79a343b 79 #:use-module (gnu packages libevent)
b10ab723 80 #:use-module (gnu packages libffi)
89b2e0b0 81 #:use-module (gnu packages linux)
ed118043 82 #:use-module (gnu packages man)
0da98533 83 #:use-module (gnu packages maths)
4ed20663 84 #:use-module (gnu packages multiprecision)
45203542 85 #:use-module (gnu packages networking)
be7134bf 86 #:use-module (gnu packages ncurses)
b04a52a6 87 #:use-module (gnu packages openstack)
d488d5d6 88 #:use-module (gnu packages password-utils)
c9b1b4f9 89 #:use-module (gnu packages pcre)
4ed20663 90 #:use-module (gnu packages perl)
b10ab723 91 #:use-module (gnu packages pkg-config)
06ff0837 92 #:use-module (gnu packages protobuf)
4535a93a 93 #:use-module (gnu packages qt)
4ed20663 94 #:use-module (gnu packages readline)
6eb7af2a 95 #:use-module (gnu packages sdl)
80ce42bd 96 #:use-module (gnu packages shells)
c9b1b4f9 97 #:use-module (gnu packages statistics)
8f9ac901 98 #:use-module (gnu packages tex)
1c65314c 99 #:use-module (gnu packages texinfo)
cc2b77df 100 #:use-module (gnu packages tls)
e25f0174 101 #:use-module (gnu packages version-control)
02f8f804 102 #:use-module (gnu packages video)
8d12be1e 103 #:use-module (gnu packages web)
ce0614dd 104 #:use-module (gnu packages base)
26b307e2 105 #:use-module (gnu packages xml)
6fa14469 106 #:use-module (gnu packages xorg)
0bdc1671 107 #:use-module (gnu packages xdisorg)
4ed20663 108 #:use-module (gnu packages zip)
afa181ff 109 #:use-module (gnu packages tcl)
63bcec71 110 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
111 #:use-module (guix packages)
112 #:use-module (guix download)
ea5456c8 113 #:use-module (guix git-download)
11bb85a1 114 #:use-module (guix utils)
acc26ff1 115 #:use-module (guix build-system gnu)
d8c4998f 116 #:use-module (guix build-system cmake)
898238b9 117 #:use-module (guix build-system python)
1c65314c
FB
118 #:use-module (guix build-system trivial)
119 #:use-module (srfi srfi-1))
a01b6da7 120
45848023 121(define-public python-2.7
a01b6da7
NK
122 (package
123 (name "python")
f0499100 124 (version "2.7.12")
a01b6da7
NK
125 (source
126 (origin
127 (method url-fetch)
9b43a0ff 128 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
129 version "/Python-" version ".tar.xz"))
130 (sha256
131 (base32
f0499100 132 "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"))
c3052d6b
ML
133 (patches (search-patches "python-2.7-search-paths.patch"
134 "python-2-deterministic-build-info.patch"
15e57f57 135 "python-2.7-site-prefixes.patch"
c3052d6b 136 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
137 (modules '((guix build utils)))
138 ;; suboptimal to delete failing tests here, but if we delete them in the
139 ;; arguments then we need to make sure to strip out that phase when it
140 ;; gets inherited by python and python-minimal.
141 (snippet
142 '(begin
143 (for-each delete-file
144 '("Lib/test/test_compileall.py"
f0499100 145 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
146 "Lib/test/test_distutils.py"
147 "Lib/test/test_import.py"
148 "Lib/test/test_shutil.py"
149 "Lib/test/test_socket.py"
1bb163b0 150 "Lib/test/test_subprocess.py"))
10a42aa2 151 #t))))
02f0c3b2
LC
152 (outputs '("out"
153 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 154 (build-system gnu-build-system)
3fdc99da 155 (arguments
10a42aa2 156 `(;; 356 tests OK.
e7e7a1eb
EF
157 ;; 6 tests failed:
158 ;; test_compileall test_distutils test_import test_shutil test_socket
159 ;; test_subprocess
160 ;; 39 tests skipped:
ff6f33cf
ED
161 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
162 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
163 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
164 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
165 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
166 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
167 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
168 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
169 ;; test_winreg test_winsound test_zipfile64
170 ;; 4 skips unexpected on linux2:
171 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 172 #:test-target "test"
3fdc99da 173 #:configure-flags
6a20289d
LC
174 (list "--enable-shared" ;allow embedding
175 "--with-system-ffi" ;build ctypes
aaf75c89 176 "--with-ensurepip=install" ;install pip and setuptools
6a20289d
LC
177 (string-append "LDFLAGS=-Wl,-rpath="
178 (assoc-ref %outputs "out") "/lib"))
fd982732 179
d2cc9c7c
LC
180 #:modules ((ice-9 ftw) (ice-9 match)
181 (guix build utils) (guix build gnu-build-system))
fd982732 182 #:phases
46472ecd
MW
183 (modify-phases %standard-phases
184 (add-before
185 'configure 'patch-lib-shells
186 (lambda _
187 ;; Filter for existing files, since some may not exist in all
188 ;; versions of python that are built with this recipe.
189 (substitute* (filter file-exists?
190 '("Lib/subprocess.py"
191 "Lib/popen2.py"
192 "Lib/distutils/tests/test_spawn.py"
193 "Lib/test/test_subprocess.py"))
194 (("/bin/sh") (which "sh")))
dedc8320
LC
195
196 ;; Use zero as the timestamp in .pyc files so that builds are
197 ;; deterministic. TODO: Remove it when this variable is set in
198 ;; gnu-build-system.scm.
a665996f 199 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 200 #t))
5b4e2791
LC
201 (add-before 'configure 'do-not-record-configure-flags
202 (lambda* (#:key configure-flags #:allow-other-keys)
203 ;; Remove configure flags from the installed '_sysconfigdata.py'
204 ;; and 'Makefile' so we don't end up keeping references to the
205 ;; build tools.
206 ;;
207 ;; Preserve at least '--with-system-ffi' since otherwise the
208 ;; thing tries to build libffi, fails, and we end up with a
209 ;; Python that lacks ctypes.
210 (substitute* "configure"
211 (("^CONFIG_ARGS=.*$")
212 (format #f "CONFIG_ARGS='~a'\n"
213 (if (member "--with-system-ffi" configure-flags)
214 "--with-system-ffi"
215 ""))))
216 #t))
46472ecd
MW
217 (add-before
218 'check 'pre-check
219 (lambda _
220 ;; 'Lib/test/test_site.py' needs a valid $HOME
221 (setenv "HOME" (getcwd))
222 #t))
223 (add-after
224 'unpack 'set-source-file-times-to-1980
225 ;; XXX One of the tests uses a ZIP library to pack up some of the
226 ;; source tree, and fails with "ZIP does not support timestamps
227 ;; before 1980". Work around this by setting the file times in the
228 ;; source tree to sometime in early 1980.
229 (lambda _
230 (let ((circa-1980 (* 10 366 24 60 60)))
231 (ftw "." (lambda (file stat flag)
232 (utime file circa-1980 circa-1980)
233 #t))
02f0c3b2 234 #t)))
9ffe61b0
LC
235 (add-after 'install 'remove-tests
236 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
237 ;; because these files are used by some libraries out there.
238 (lambda* (#:key outputs #:allow-other-keys)
239 (let ((out (assoc-ref outputs "out")))
240 (match (scandir (string-append out "/lib")
241 (lambda (name)
242 (string-prefix? "python" name)))
243 ((pythonX.Y)
244 (let ((testdir (string-append out "/lib/" pythonX.Y
245 "/test")))
246 (with-directory-excursion testdir
247 (for-each delete-file-recursively
248 (scandir testdir
249 (match-lambda
250 ((or "." "..") #f)
251 (file
252 (not
253 (string-prefix? "test_support."
254 file))))))
255 (call-with-output-file "__init__.py" (const #t))
256 #t)))))))
216c283b
LC
257 (add-before 'strip 'make-libraries-writable
258 (lambda* (#:key outputs #:allow-other-keys)
259 ;; Make .so files writable so they can be stripped.
260 (let ((out (assoc-ref outputs "out")))
261 (for-each (lambda (file)
262 (chmod file #o755))
263 (find-files (string-append out "/lib")
264 "\\.so"))
265 #t)))
02f0c3b2
LC
266 (add-after 'install 'move-tk-inter
267 (lambda* (#:key outputs #:allow-other-keys)
268 ;; When Tkinter support is built move it to a separate output so
269 ;; that the main output doesn't contain a reference to Tcl/Tk.
270 (let ((out (assoc-ref outputs "out"))
271 (tk (assoc-ref outputs "tk")))
272 (when tk
273 (match (find-files out "tkinter.*\\.so")
274 ((tkinter.so)
275 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
276 ;; want it under TK/lib/pythonX.Y/site-packages.
277 (let* ((len (string-length out))
278 (target (string-append
279 tk "/"
280 (string-drop
281 (dirname (dirname tkinter.so))
282 len)
283 "/site-packages")))
284 (install-file tkinter.so target)
285 (delete-file tkinter.so)))))
286 #t))))))
a01b6da7 287 (inputs
3fdc99da
CR
288 `(("bzip2" ,bzip2)
289 ("gdbm" ,gdbm)
b10ab723 290 ("libffi" ,libffi) ; for ctypes
b88e1b0a 291 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 292 ("openssl" ,openssl)
3fdc99da 293 ("readline" ,readline)
afa181ff
LC
294 ("zlib" ,zlib)
295 ("tcl" ,tcl)
296 ("tk" ,tk))) ; for tkinter
b10ab723
CR
297 (native-inputs
298 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
299 (native-search-paths
300 (list (search-path-specification
301 (variable "PYTHONPATH")
af070955 302 (files '("lib/python2.7/site-packages")))))
f0499100 303 (home-page "https://www.python.org")
afa181ff 304 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
305 (description
306 "Python is a remarkably powerful dynamic programming language that
307is used in a wide variety of application domains. Some of its key
308distinguishing features include: clear, readable syntax; strong
309introspection capabilities; intuitive object orientation; natural
310expression of procedural code; full modularity, supporting hierarchical
311packages; exception-based error handling; and very high level dynamic
312data types.")
3f641af0 313 (license license:psfl)))
acc26ff1 314
45848023
HG
315;; Current 2.x version.
316(define-public python-2 python-2.7)
317
72df6680 318(define-public python-3.5
b24d1cfc 319 (package (inherit python-2)
72df6680 320 (version "3.5.2")
717003e3
LC
321 (source (origin
322 (method url-fetch)
323 (uri (string-append "https://www.python.org/ftp/python/"
324 version "/Python-" version ".tar.xz"))
fc1adab1
AK
325 (patches (search-patches
326 "python-fix-tests.patch"
72df6680 327 "python-3.5-fix-tests.patch"
fc1adab1
AK
328 "python-3-deterministic-build-info.patch"
329 "python-3-search-paths.patch"))
717003e3
LC
330 (patch-flags '("-p0"))
331 (sha256
332 (base32
72df6680 333 "0h6a5fr7ram2s483lh0pnmc4ncijb8llnpfdxdcl5dxr01hza400"))))
1f434457
MW
334 (arguments (substitute-keyword-arguments (package-arguments python-2)
335 ((#:tests? _) #t)))
1aebc0cb
AE
336 (native-search-paths
337 (list (search-path-specification
338 (variable "PYTHONPATH")
0e05d01e
SB
339 (files (list (string-append "lib/python"
340 (version-major+minor version)
341 "/site-packages"))))))))
f26a77ff 342
72df6680
LF
343(define-public python-3.4
344 (package (inherit python-3.5)
345 (version "3.4.5")
346 (source (origin
347 (method url-fetch)
348 (uri (string-append "https://www.python.org/ftp/python/"
349 version "/Python-" version ".tar.xz"))
350 (patches (search-patches
351 "python-fix-tests.patch"
352 "python-3.4-fix-tests.patch"
353 "python-3-deterministic-build-info.patch"
354 "python-3-search-paths.patch"))
355 (patch-flags '("-p0"))
356 (sha256
357 (base32
358 "12l9klp778wklxmckhghniy5hklss8r26995pyd00qbllk4b2r7f"))))))
359
45848023 360;; Current 3.x version.
72df6680 361(define-public python-3 python-3.5)
45848023
HG
362
363;; Current major version.
364(define-public python python-3)
365
95288fcc
LC
366;; Minimal variants of Python, mostly used to break the cycle between Tk and
367;; Python (Tk -> libxcb -> Python.)
368
369(define-public python2-minimal
370 (package (inherit python-2)
371 (name "python-minimal")
02f0c3b2 372 (outputs '("out"))
95288fcc
LC
373 (arguments
374 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
375 ((#:configure-flags cf)
376 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
377 (inputs '()))) ;none of the optional dependencies
378
379(define-public python-minimal
898238b9 380 (package (inherit python)
95288fcc 381 (name "python-minimal")
02f0c3b2 382 (outputs '("out"))
95288fcc 383
d0b73960 384 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
385 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
386 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
387 (inputs `(("libffi" ,libffi)
388 ("openssl" ,openssl)
95288fcc
LC
389 ("zlib" ,zlib)))))
390
64cb064c
LC
391(define* (wrap-python3 python
392 #:optional
393 (name (string-append (package-name python) "-wrapper")))
898238b9 394 (package (inherit python)
95288fcc 395 (name name)
898238b9
AE
396 (source #f)
397 (build-system trivial-build-system)
02f0c3b2 398 (outputs '("out"))
3969ca54 399 (inputs `(("bash" ,bash)))
3c0f2329 400 (propagated-inputs `(("python" ,python)))
898238b9
AE
401 (arguments
402 `(#:modules ((guix build utils))
403 #:builder
404 (begin
405 (use-modules (guix build utils))
406 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
407 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
408 (mkdir-p bin)
409 (for-each
410 (lambda (old new)
411 (symlink (string-append python old)
412 (string-append bin "/" new)))
3969ca54
SB
413 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
414 `("python" ,"pydoc" ,"idle" ,"pip"))
415 ;; python-config outputs search paths based upon its location,
416 ;; use a bash wrapper to avoid changing its outputs.
417 (let ((bash (string-append (assoc-ref %build-inputs "bash")
418 "/bin/bash"))
419 (old (string-append python "python3-config"))
420 (new (string-append bin "/python-config")))
421 (with-output-to-file new
422 (lambda ()
423 (format #t "#!~a~%" bash)
424 (format #t "exec \"~a\" \"$@\"~%" old)
425 (chmod new #o755)
426 #t)))))))
0d56e3e1
LC
427 (synopsis "Wrapper for the Python 3 commands")
428 (description
429 "This package provides wrappers for the commands of Python@tie{}3.x such
430that they can be invoked under their usual name---e.g., @command{python}
431instead of @command{python3}.")))
432
95288fcc
LC
433(define-public python-wrapper (wrap-python3 python))
434(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 435
aaf625b8
RW
436(define-public python-psutil
437 (package
438 (name "python-psutil")
88535a44 439 (version "4.3.0")
aaf625b8
RW
440 (source
441 (origin
442 (method url-fetch)
f56777be 443 (uri (pypi-uri "psutil" version))
aaf625b8
RW
444 (sha256
445 (base32
88535a44 446 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 447 (build-system python-build-system)
fb08c4fe
MB
448 (arguments
449 ;; FIXME: some tests does not return and times out.
450 '(#:tests? #f))
88535a44 451 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
452 (synopsis "Library for retrieving information on running processes")
453 (description
454 "psutil (Python system and process utilities) is a library for retrieving
455information on running processes and system utilization (CPU, memory, disks,
456network) in Python. It is useful mainly for system monitoring, profiling and
457limiting process resources and management of running processes. It implements
458many functionalities offered by command line tools such as: ps, top, lsof,
459netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
460pidof, tty, taskset, pmap.")
3f641af0 461 (license license:bsd-3)))
aaf625b8
RW
462
463(define-public python2-psutil
464 (package-with-python2 python-psutil))
898238b9 465
f9da1d8a
ED
466(define-public python-passlib
467 (package
468 (name "python-passlib")
3b86a385 469 (version "1.7.1")
f9da1d8a
ED
470 (source
471 (origin
472 (method url-fetch)
690e8c66 473 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
474 (sha256
475 (base32
3b86a385 476 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
f9da1d8a
ED
477 (build-system python-build-system)
478 (native-inputs
f3b98f4f 479 `(("python-nose" ,python-nose)))
f22efa01 480 (propagated-inputs
f9da1d8a
ED
481 `(("python-py-bcrypt" ,python-py-bcrypt)))
482 (arguments
483 `(#:phases
484 (alist-cons-before
485 'check 'set-PYTHON_EGG_CACHE
486 ;; some tests require access to "$HOME/.cython"
487 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
488 %standard-phases)))
489 (home-page "https://bitbucket.org/ecollins/passlib")
490 (synopsis
491 "Comprehensive password hashing framework")
492 (description
493 "Passlib is a password hashing library for Python 2 & 3, which provides
494cross-platform implementations of over 30 password hashing algorithms, as well
495as a framework for managing existing password hashes. It's designed to be
496useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
497to providing full-strength password hashing for multi-user application.")
3f641af0 498 (license license:bsd-3)))
f9da1d8a
ED
499
500(define-public python2-passlib
501 (package-with-python2 python-passlib))
502
feb0d9c3
ED
503(define-public python-py-bcrypt
504 (package
505 (name "python-py-bcrypt")
506 (version "0.4")
507 (source
508 (origin
509 (method url-fetch)
510 (uri (string-append
511 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
512 version
513 ".tar.gz"))
514 (sha256
515 (base32
516 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
517 (build-system python-build-system)
feb0d9c3
ED
518 (home-page "https://code.google.com/p/py-bcrypt")
519 (synopsis
520 "Bcrypt password hashing and key derivation")
521 (description
522 "A python wrapper of OpenBSD's Blowfish password hashing code. This
523system hashes passwords using a version of Bruce Schneier's Blowfish block
524cipher with modifications designed to raise the cost of off-line password
525cracking and frustrate fast hardware implementation. The computation cost of
526the algorithm is parametised, so it can be increased as computers get faster.
527The intent is to make a compromise of a password database less likely to
528result in an attacker gaining knowledge of the plaintext passwords (e.g. using
529John the Ripper).")
530 ;; "sha2.c" is under BSD-3;
531 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
532 ;; the rest is under ISC.
3f641af0 533 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
534
535(define-public python2-py-bcrypt
536 (package-with-python2 python-py-bcrypt))
537
538
429fdea1
ED
539(define-public python-paramiko
540 (package
541 (name "python-paramiko")
81b9bbbd 542 (version "1.16.0")
429fdea1
ED
543 (source
544 (origin
545 (method url-fetch)
81b9bbbd 546 (uri (pypi-uri "paramiko" version))
429fdea1
ED
547 (sha256
548 (base32
81b9bbbd 549 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1 550 (build-system python-build-system)
49910e6a
MB
551 (arguments
552 '(;; FIXME: One test fails with "EOFError not raised by connect".
553 #:tests? #f))
554 ;; #:phases
555 ;; (modify-phases %standard-phases
556 ;; (replace 'check
557 ;; (lambda _
558 ;; (zero? (system* "python" "test.py")))))))
a3fc12da 559 (propagated-inputs
f22efa01
HG
560 `(("python-pycrypto" ,python-pycrypto)
561 ("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
562 (home-page "http://www.paramiko.org/")
563 (synopsis "SSHv2 protocol library")
564 (description "Paramiko is a python implementation of the SSHv2 protocol,
565providing both client and server functionality. While it leverages a Python C
566extension for low level cryptography (PyCrypto), Paramiko itself is a pure
567Python interface around SSH networking concepts.")
3f641af0 568 (license license:lgpl2.1+)))
429fdea1
ED
569
570(define-public python2-paramiko
571 (package-with-python2 python-paramiko))
572
573
de73dbf6
ED
574(define-public python-httplib2
575 (package
576 (name "python-httplib2")
286f1bac 577 (version "0.9.2")
de73dbf6
ED
578 (source
579 (origin
580 (method url-fetch)
286f1bac 581 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
582 (sha256
583 (base32
286f1bac 584 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 585 (build-system python-build-system)
286f1bac 586 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
587 (synopsis "Comprehensive HTTP client library")
588 (description
589 "A comprehensive HTTP client library supporting many features left out of
590other HTTP libraries.")
591 (license license:expat)))
592
593(define-public python2-httplib2
594 (package-with-python2 python-httplib2))
595
67039875
ED
596(define-public python-ecdsa
597 (package
598 (name "python-ecdsa")
599 (version "0.13")
600 (source
601 (origin
602 (method url-fetch)
603 (uri (string-append
604 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
605 version
606 ".tar.gz"))
607 (sha256
608 (base32
609 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
610 (build-system python-build-system)
67039875
ED
611 (inputs
612 `(("openssl" ,openssl)))
613 (home-page
614 "http://github.com/warner/python-ecdsa")
615 (synopsis
616 "ECDSA cryptographic signature library (pure python)")
617 (description
618 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
619Curve Digital Signature Algorithm), implemented purely in Python. With this
620library, you can quickly create keypairs (signing key and verifying key), sign
621messages, and verify the signatures. The keys and signatures are very short,
622making them easy to handle and incorporate into other protocols.")
623 (license license:expat)))
624
625(define-public python2-ecdsa
626 (package-with-python2 python-ecdsa))
627
52323f32
ED
628(define-public python-ccm
629 (package
630 (name "python-ccm")
db5567f7 631 (version "2.1.6")
52323f32
ED
632 (source
633 (origin
634 (method url-fetch)
db5567f7 635 (uri (pypi-uri "ccm" version))
52323f32
ED
636 (sha256
637 (base32
db5567f7 638 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 639 (build-system python-build-system)
f22efa01 640 (propagated-inputs
52323f32 641 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
642 ;; Not listed in setup.py, but used in ccmlib/node.py for full
643 ;; functionality
644 ("python-psutil" ,python-psutil)
52323f32
ED
645 ("python-six" ,python-six)))
646 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
647 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
648localhost")
649 (description "Cassandra Cluster Manager is a development tool for testing
650local Cassandra clusters. It creates, launches and removes Cassandra clusters
651on localhost.")
3f641af0 652 (license license:asl2.0)))
52323f32
ED
653
654(define-public python2-ccm
655 (package-with-python2 python-ccm))
656
89114f39 657(define-public python-pytz
acc26ff1 658 (package
89114f39 659 (name "python-pytz")
a5f92ca0 660 (version "2016.10")
acc26ff1
CR
661 (source
662 (origin
663 (method url-fetch)
61c9babb 664 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
665 (sha256
666 (base32
a5f92ca0 667 "0az099cyp6p5xbsvfcdacj4hvxncbwm2ayn3h55mcp07zb2b45kh"))))
acc26ff1 668 (build-system python-build-system)
8498b8cf 669 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 670 (home-page "http://pythonhosted.org/pytz")
9e771e3b 671 (synopsis "Python timezone library")
acc26ff1
CR
672 (description
673 "This library allows accurate and cross platform timezone calculations
674using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 675 (license license:expat)))
5ace6e2f 676
89114f39 677(define-public python2-pytz
11bb85a1 678 (package-with-python2 python-pytz))
89114f39 679
fc50e9c6 680
89114f39 681(define-public python-babel
5ace6e2f 682 (package
89114f39 683 (name "python-babel")
ffb1e98d 684 (version "2.3.4")
5ace6e2f
CR
685 (source
686 (origin
687 (method url-fetch)
b850a6d8 688 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
689 (sha256
690 (base32
ffb1e98d 691 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 692 (build-system python-build-system)
f22efa01 693 (propagated-inputs
f3b98f4f 694 `(("python-pytz" ,python-pytz)))
8498b8cf 695 (arguments `(#:tests? #f)) ; no test target
e1804763 696 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
697 (synopsis
698 "Tools for internationalizing Python applications")
699 (description
700 "Babel is composed of two major parts:
701- tools to build and work with gettext message catalogs
702- a Python interface to the CLDR (Common Locale Data Repository), providing
703access to various locale display names, localized number and date formatting,
704etc. ")
3f641af0 705 (license license:bsd-3)))
89114f39
AE
706
707(define-public python2-babel
11bb85a1 708 (package-with-python2 python-babel))
73adf220 709
ed377cc6
RW
710(define-public python2-backport-ssl-match-hostname
711 (package
712 (name "python2-backport-ssl-match-hostname")
f2d06d46 713 (version "3.5.0.1")
ed377cc6
RW
714 (source
715 (origin
716 (method url-fetch)
717 (uri (string-append
718 "https://pypi.python.org/packages/source/b/"
719 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
720 version ".tar.gz"))
721 (sha256
722 (base32
f2d06d46 723 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 724 (build-system python-build-system)
f2d06d46
EF
725 (arguments
726 `(#:python ,python-2
727 #:tests? #f)) ; no test target
f2d06d46
EF
728 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
729 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
730 (description
731 "This backport brings the ssl.match_hostname() function to users of
732earlier versions of Python. The function checks the hostname in the
733certificate returned by the server to which a connection has been established,
734and verifies that it matches the intended target hostname.")
3f641af0 735 (license license:psfl)))
ed377cc6 736
d205f895
TD
737(define-public python-hdf4
738 (package
739 (name "python-hdf4")
740 (version "0.9")
741 (source
742 (origin
743 (method url-fetch)
744 (uri (pypi-uri name version))
745 (sha256
746 (base32
747 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
748 (build-system python-build-system)
749 (native-inputs `(("nose" ,python-nose)))
750 (propagated-inputs `(("numpy" ,python-numpy)))
751 (inputs
752 `(("hdf4" ,hdf4)
753 ("libjpeg" ,libjpeg)
754 ("zlib" ,zlib)))
755 (arguments
756 `(#:phases
757 (modify-phases %standard-phases
758 (replace 'check
759 (lambda _
760 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
761 ;; on to import numpy. Somehow this works on their CI system.
762 ;; Let's just manage PYTHONPATH here instead.
763 (substitute* "runexamples.sh"
764 (("export PYTHONPATH=.*") ""))
765 (setenv "PYTHONPATH"
766 (string-append (getcwd) ":"
767 (getenv "PYTHONPATH")))
768 (and (zero? (system* "./runexamples.sh"))
769 (zero? (system* "nosetests" "-v"))))))))
770 (home-page "https://github.com/fhs/python-hdf4")
771 (synopsis "Python interface to the NCSA HDF4 library")
772 (description
773 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
774which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
775NetCDF files can also be read and modified. Python-HDF4 is a fork of
776@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
777 (license license:expat)))
778
779(define-public python2-hdf4
780 (package-with-python2 python-hdf4))
781
ef5cbf9b
RW
782(define-public python-h5py
783 (package
784 (name "python-h5py")
fe147c41 785 (version "2.6.0")
ef5cbf9b
RW
786 (source
787 (origin
788 (method url-fetch)
fe147c41 789 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
790 (sha256
791 (base32
fe147c41 792 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 793 (build-system python-build-system)
797e1401
RW
794 (arguments
795 `(#:tests? #f ; no test target
796 #:phases
797 (modify-phases %standard-phases
798 (add-after 'unpack 'fix-hdf5-paths
799 (lambda* (#:key inputs #:allow-other-keys)
800 (let ((prefix (assoc-ref inputs "hdf5")))
801 (substitute* "setup_build.py"
802 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
803 (string-append "['" prefix "/lib" "']"))
804 (("'/opt/local/include', '/usr/local/include'")
805 (string-append "'" prefix "/include" "'")))
806 (substitute* "setup_configure.py"
807 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
808 (string-append "['" prefix "/lib" "']")))
809 #t))))))
3c4010b1 810 (propagated-inputs
69866690
HG
811 `(("python-six" ,python-six)
812 ("python-numpy" ,python-numpy)))
ef5cbf9b 813 (inputs
69866690 814 `(("hdf5" ,hdf5)))
ef5cbf9b 815 (native-inputs
fe147c41
EF
816 `(("python-cython" ,python-cython)
817 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
818 (home-page "http://www.h5py.org/")
819 (synopsis "Read and write HDF5 files from Python")
820 (description
821 "The h5py package provides both a high- and low-level interface to the
822HDF5 library from Python. The low-level interface is intended to be a
823complete wrapping of the HDF5 API, while the high-level component supports
824access to HDF5 files, datasets and groups using established Python and NumPy
825concepts.")
9820a028 826 (license license:bsd-3)))
ef5cbf9b
RW
827
828(define-public python2-h5py
9820a028 829 (package-with-python2 python-h5py))
ef5cbf9b 830
ea8450c8
TD
831(define-public python-netcdf4
832 (package
833 (name "python-netcdf4")
d5a97839 834 (version "1.2.7")
ea8450c8
TD
835 (source
836 (origin
837 (method url-fetch)
838 (uri (pypi-uri "netCDF4" version))
839 (sha256
840 (base32
d5a97839 841 "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
ea8450c8
TD
842 (build-system python-build-system)
843 (native-inputs
844 `(("python-cython" ,python-cython)))
845 (propagated-inputs
846 `(("python-numpy" ,python-numpy)))
847 (inputs
848 `(("netcdf" ,netcdf)
849 ("hdf4" ,hdf4)
850 ("hdf5" ,hdf5)))
851 (arguments
852 '(#:phases
853 (modify-phases %standard-phases
854 (replace 'check
855 (lambda _
856 (setenv "NO_NET" "1") ; disable opendap tests
857 (with-directory-excursion "test"
858 (setenv "PYTHONPATH" ; find and add the library we just built
859 (string-append
860 (car (find-files "../build" "lib.*"
861 #:directories? #:t
862 #:fail-on-error? #:t))
863 ":" (getenv "PYTHONPATH")))
864 (zero? (system* "python" "run_all.py"))))))))
865 (home-page
866 "https://github.com/Unidata/netcdf4-python")
867 (synopsis "Python/numpy interface to the netCDF library")
868 (description "Netcdf4-python is a Python interface to the netCDF C
869library. netCDF version 4 has many features not found in earlier
870versions of the library and is implemented on top of HDF5. This module
871can read and write files in both the new netCDF 4 and the old netCDF 3
872format, and can create files that are readable by HDF5 clients. The
873API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
874to users of that module.")
875 ;; The software is mainly ISC, but includes some files covered
876 ;; by the Expat license.
877 (license (list license:isc license:expat))))
878
879(define-public python2-netcdf4
880 (package-with-python2 python-netcdf4))
881
c1448c69
EB
882(define-public python-lockfile
883 (package
884 (name "python-lockfile")
692add53 885 (version "0.12.2")
c1448c69
EB
886 (source
887 (origin
888 (method url-fetch)
889 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
890 "lockfile-" version ".tar.gz"))
891 (sha256
892 (base32
692add53 893 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
894 (build-system python-build-system)
895 (arguments '(#:test-target "check"))
692add53
BW
896 (native-inputs
897 `(("python-pbr" ,python-pbr)))
6a8f26a4 898 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
899 (synopsis "Platform-independent file locking module")
900 (description
901 "The lockfile package exports a LockFile class which provides a simple
902API for locking files.")
f210e944 903 (license license:expat)))
c1448c69
EB
904
905(define-public python2-lockfile
f210e944 906 (package-with-python2 python-lockfile))
c1448c69 907
5a1a4bf6
EB
908(define-public python-mock
909 (package
910 (name "python-mock")
911 (version "1.0.1")
912 (source
913 (origin
914 (method url-fetch)
6b7877e1 915 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
916 (sha256
917 (base32
918 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
919 (build-system python-build-system)
920 (arguments '(#:test-target "check"))
6b7877e1 921 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 922 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
923 (description
924 "Mock is a library for testing in Python. It allows you to replace parts
925of your system under test with mock objects and make assertions about how they
926have been used.")
bd3fa666 927 (license license:expat)))
5a1a4bf6
EB
928
929(define-public python2-mock
930 (package-with-python2 python-mock))
931
fc50e9c6 932
73adf220
AE
933(define-public python-setuptools
934 (package
935 (name "python-setuptools")
d660f7be 936 (version "31.0.0")
73adf220
AE
937 (source
938 (origin
939 (method url-fetch)
d660f7be 940 (uri (pypi-uri "setuptools" version))
73adf220
AE
941 (sha256
942 (base32
d660f7be 943 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
944 (modules '((guix build utils)))
945 (snippet
946 '(begin
947 ;; Remove included binaries which are used to build self-extracting
948 ;; installers for Windows.
949 ;; TODO: Find some way to build them ourself so we can include them.
950 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
951 #t))))
73adf220 952 (build-system python-build-system)
d3d656c5
AE
953 ;; FIXME: Tests require pytest, which itself relies on setuptools.
954 ;; One could bootstrap with an internal untested setuptools.
73adf220 955 (arguments
824af8ca 956 `(#:tests? #f))
73adf220
AE
957 (home-page "https://pypi.python.org/pypi/setuptools")
958 (synopsis
959 "Library designed to facilitate packaging Python projects")
960 (description
961 "Setuptools is a fully-featured, stable library designed to facilitate
962packaging Python projects, where packaging includes:
963Python package and module definitions,
964distribution package metadata,
965test hooks,
966project installation,
967platform-specific details,
968Python 3 support.")
d660f7be
MB
969 ;; TODO: setuptools now bundles the following libraries:
970 ;; packaging, pyparsing, six and appdirs. How to unbundle?
971 (license (list license:psfl ; setuptools itself
972 license:expat ; six, appdirs, pyparsing
973 license:asl2.0 ; packaging is dual ASL2/BSD-2
974 license:bsd-2))))
73adf220
AE
975
976(define-public python2-setuptools
977 (package-with-python2 python-setuptools))
fc50e9c6 978
aa21c764 979;;; Pycrypto is abandoned upstream:
1194575b 980;;;
aa21c764 981;;; https://github.com/dlitz/pycrypto/issues/173
1194575b 982;;;
aa21c764 983;;; TODO Remove this package from GNU Guix.
cafc3f5a
EB
984(define-public python-pycrypto
985 (package
986 (name "python-pycrypto")
987 (version "2.6.1")
988 (source
989 (origin
990 (method url-fetch)
aa21c764
LF
991 (uri (pypi-uri "pycrypto" version))
992 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
cafc3f5a
EB
993 (sha256
994 (base32
995 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
996 (build-system python-build-system)
cafc3f5a
EB
997 (inputs
998 `(("python" ,python)
999 ("gmp" ,gmp)))
1000 (arguments
1001 `(#:phases
1002 (alist-cons-before
1003 'build 'set-build-env
1004 ;; pycrypto runs an autoconf configure script behind the scenes
1005 (lambda _
1006 (setenv "CONFIG_SHELL" (which "bash")))
1007 %standard-phases)))
1008 (home-page "http://www.pycrypto.org/")
1009 (synopsis "Cryptographic modules for Python")
1010 (description
1011 "Pycrypto is a collection of both secure hash functions (such as SHA256
1012and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 1013etc.). The package is structured to make adding new modules easy.")
3f641af0 1014 (license license:public-domain)))
cafc3f5a 1015
345f0611 1016(define-public python2-pycrypto
1c0059da
EF
1017 (let ((pycrypto (package-with-python2 python-pycrypto)))
1018 (package (inherit pycrypto)
1019 (inputs
1020 `(("python" ,python-2)
1021 ,@(alist-delete
1022 "python"
1023 (package-inputs pycrypto)))))))
345f0611 1024
de959250 1025(define-public python-eventlet
1026 (package
1027 (name "python-eventlet")
1028 (version "0.20.1")
1029 (source
1030 (origin
1031 (method url-fetch)
1032 (uri (pypi-uri "eventlet" version))
1033 (sha256
1034 (base32
1035 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
1036 (build-system python-build-system)
1037 (propagated-inputs
1038 `(("python-greenlet" ,python-greenlet)))
1039 (home-page "http://eventlet.net")
1040 (synopsis "Concurrent networking library for Python")
1041 (description
1042 "Eventlet is a concurrent networking library for Python that
1043allows you to change how you run your code, not how you write it.
1044It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
1045Coroutines ensure that the developer uses a blocking style of programming
1046that is similar to threading, but provide the benefits of non-blocking I/O.
1047The event dispatch is implicit, which means you can easily use @code{Eventlet}
1048from the Python interpreter, or as a small part of a larger application.")
1049 (license license:expat)))
1050
1051(define-public python2-eventlet
1052 (let ((base (package-with-python2
1053 (strip-python2-variant python-eventlet))))
1054 (package (inherit base)
1055 (propagated-inputs
1056 `(("python2-enum34" ,python2-enum34)
1057 ,@(package-propagated-inputs base))))))
1058
cafc3f5a
EB
1059(define-public python-keyring
1060 (package
1061 (name "python-keyring")
13f3ff35 1062 (version "8.7")
cafc3f5a
EB
1063 (source
1064 (origin
1065 (method url-fetch)
664e6c3a 1066 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1067 (sha256
1068 (base32
13f3ff35 1069 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1070 (build-system python-build-system)
1071 (native-inputs
13f3ff35 1072 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1073 (propagated-inputs
cafc3f5a
EB
1074 `(("python-pycrypto" ,python-pycrypto)))
1075 (arguments
664e6c3a 1076 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1077 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1078 (synopsis "Store and access your passwords safely")
1079 (description
1080 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1081service from python. It can be used in any application that needs safe
cafc3f5a
EB
1082password storage.")
1083 ;; "MIT" and PSF dual license
f210e944 1084 (license license:x11)))
cafc3f5a 1085
d7af1069 1086(define-public python2-keyring
f210e944 1087 (package-with-python2 python-keyring))
d7af1069 1088
a480bc41
EB
1089(define-public python-six
1090 (package
1091 (name "python-six")
b6ab89ef 1092 (version "1.10.0")
a480bc41
EB
1093 (source
1094 (origin
1095 (method url-fetch)
b6ab89ef 1096 (uri (pypi-uri "six" version))
a480bc41
EB
1097 (sha256
1098 (base32
b6ab89ef 1099 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1100 (build-system python-build-system)
4fd129ee
MB
1101 (native-inputs
1102 `(("python-py" ,python-py)
1103 ("python-pytest" ,python-pytest)))
a480bc41
EB
1104 (home-page "http://pypi.python.org/pypi/six/")
1105 (synopsis "Python 2 and 3 compatibility utilities")
1106 (description
35b9e423 1107 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1108functions for smoothing over the differences between the Python versions with
1109the goal of writing Python code that is compatible on both Python versions.
35b9e423 1110Six supports every Python version since 2.5. It is contained in only one
a480bc41 1111Python file, so it can be easily copied into your project.")
3f641af0 1112 (license license:x11)))
a480bc41 1113
0c20025c
AE
1114(define-public python2-six
1115 (package-with-python2 python-six))
1116
22d7360b 1117(define-public python-dateutil
cafc3f5a
EB
1118 (package
1119 (name "python-dateutil")
6bd9ad69 1120 (version "2.5.3")
cafc3f5a
EB
1121 (source
1122 (origin
1123 (method url-fetch)
394b8060 1124 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1125 (sha256
1126 (base32
6bd9ad69 1127 "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
cafc3f5a 1128 (build-system python-build-system)
f22efa01 1129 (propagated-inputs
394b8060 1130 `(("python-six" ,python-six)))
b5a5fb19 1131 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1132 (synopsis "Extensions to the standard datetime module")
1133 (description
1134 "The dateutil module provides powerful extensions to the standard
1135datetime module, available in Python 2.3+.")
f210e944 1136 (license license:bsd-3)))
cafc3f5a 1137
fc50e9c6
AE
1138(define-public python2-dateutil
1139 (package-with-python2 python-dateutil))
1d08c01f 1140
cafc3f5a
EB
1141(define-public python-parsedatetime
1142 (package
1143 (name "python-parsedatetime")
eebf6f01 1144 (version "2.1")
cafc3f5a
EB
1145 (source
1146 (origin
1147 (method url-fetch)
eebf6f01 1148 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1149 (sha256
1150 (base32
eebf6f01 1151 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1152 (build-system python-build-system)
1153 (native-inputs
eebf6f01
EF
1154 `(("python-nose" ,python-nose)
1155 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1156 (home-page "http://github.com/bear/parsedatetime/")
1157 (synopsis
1158 "Parse human-readable date/time text")
1159 (description
e881752c 1160 "Parse human-readable date/time text.")
f210e944 1161 (license license:asl2.0)))
cafc3f5a 1162
38b8f9b2 1163(define-public python2-parsedatetime
f210e944 1164 (package-with-python2 python-parsedatetime))
38b8f9b2 1165
d072efcb
RW
1166(define-public python-pandas
1167 (package
1168 (name "python-pandas")
8e086048 1169 (version "0.19.2")
d072efcb
RW
1170 (source
1171 (origin
1b96f069 1172 (method url-fetch)
8e086048 1173 (uri (pypi-uri "pandas" version))
1b96f069 1174 (sha256
b03ee02f
MB
1175 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1176 (patches
1177 (search-patches "python-pandas-skip-failing-tests.patch"))))
d072efcb 1178 (build-system python-build-system)
d072efcb 1179 (propagated-inputs
f22efa01
HG
1180 `(("python-numpy" ,python-numpy)
1181 ("python-pytz" ,python-pytz)
22d7360b 1182 ("python-dateutil" ,python-dateutil)))
d072efcb 1183 (native-inputs
abcc7a0e
HG
1184 `(("python-nose" ,python-nose)
1185 ("python-cython" ,python-cython)))
d072efcb
RW
1186 (home-page "http://pandas.pydata.org")
1187 (synopsis "Data structures for data analysis, time series, and statistics")
1188 (description
1189 "Pandas is a Python package providing fast, flexible, and expressive data
1190structures designed to make working with structured (tabular,
1191multidimensional, potentially heterogeneous) and time series data both easy
1192and intuitive. It aims to be the fundamental high-level building block for
1193doing practical, real world data analysis in Python.")
f210e944 1194 (license license:bsd-3)))
d072efcb
RW
1195
1196(define-public python2-pandas
f210e944 1197 (package-with-python2 python-pandas))
d072efcb 1198
cafc3f5a
EB
1199(define-public python-tzlocal
1200 (package
1201 (name "python-tzlocal")
ed80839b 1202 (version "1.2.2")
cafc3f5a
EB
1203 (source
1204 (origin
1205 (method url-fetch)
226d3331 1206 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1207 (sha256
1208 (base32
ed80839b 1209 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1210 (build-system python-build-system)
f22efa01
HG
1211 (propagated-inputs
1212 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1213 (home-page "https://github.com/regebro/tzlocal")
1214 (synopsis
35b9e423 1215 "Local timezone information for Python")
cafc3f5a
EB
1216 (description
1217 "Tzlocal returns a tzinfo object with the local timezone information.
1218This module attempts to fix a glaring hole in pytz, that there is no way to
1219get the local timezone information, unless you know the zoneinfo name, and
1220under several distributions that's hard or impossible to figure out.")
3f641af0 1221 (license license:cc0)))
cafc3f5a 1222
1d08c01f
AE
1223(define-public python2-pysqlite
1224 (package
1225 (name "python2-pysqlite")
e80aaeb4 1226 (version "2.8.3")
1d08c01f
AE
1227 (source
1228 (origin
1229 (method url-fetch)
fe476868 1230 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1231 (sha256
1232 (base32
e80aaeb4 1233 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1d08c01f
AE
1234 (build-system python-build-system)
1235 (inputs
1236 `(("sqlite" ,sqlite)))
1237 (arguments
1238 `(#:python ,python-2 ; incompatible with Python 3
1239 #:tests? #f)) ; no test target
fe476868 1240 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1241 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1242 (description
1243 "Pysqlite provides SQLite bindings for Python that comply to the
1244Database API 2.0T.")
ed0cdf83 1245 (license license:zlib)))
1d08c01f 1246
2875caf5
AE
1247
1248(define-public python2-mechanize
1249 (package
1250 (name "python2-mechanize")
1251 (version "0.2.5")
1252 (source
1253 (origin
1254 (method url-fetch)
1255 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1256 version ".tar.gz"))
1257 (sha256
1258 (base32
1259 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1260 (build-system python-build-system)
2875caf5
AE
1261 (arguments
1262 `(#:python ,python-2 ; apparently incompatible with Python 3
1263 #:tests? #f))
1264 ;; test fails with message
1265 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1266 ;; (python-3.3.2) or
1267 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1268 ;; (python-2.7.5).
1269 ;; The source code is from March 2011 and probably not up-to-date
1270 ;; with respect to python unit tests.
1271 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1272 (synopsis
1273 "Stateful programmatic web browsing in Python")
1274 (description
1275 "Mechanize implements stateful programmatic web browsing in Python,
1276after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1277 (license (license:non-copyleft
1278 "file://COPYING"
1279 "See COPYING in the distribution."))))
2875caf5 1280
0352532e
AE
1281
1282(define-public python-simplejson
1283 (package
1284 (name "python-simplejson")
b2e6e150 1285 (version "3.10.0")
0352532e
AE
1286 (source
1287 (origin
1288 (method url-fetch)
988d1bad 1289 (uri (pypi-uri "simplejson" version))
0352532e
AE
1290 (sha256
1291 (base32
b2e6e150 1292 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1293 (build-system python-build-system)
1294 (home-page "http://simplejson.readthedocs.org/en/latest/")
1295 (synopsis
1296 "Json library for Python")
1297 (description
e881752c
AK
1298 "JSON (JavaScript Object Notation) is a subset of JavaScript
1299syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1300format.
0352532e
AE
1301
1302Simplejson exposes an API familiar to users of the standard library marshal
1303and pickle modules. It is the externally maintained version of the json
1304library contained in Python 2.6, but maintains compatibility with Python 2.5
1305and (currently) has significant performance advantages, even without using
1306the optional C extension for speedups. Simplejson is also supported on
1307Python 3.3+.")
3f641af0 1308 (license license:x11)))
0352532e
AE
1309
1310(define-public python2-simplejson
1311 (package-with-python2 python-simplejson))
421a80a2
AE
1312
1313
ed07b08d 1314(define-public python-pyicu
421a80a2 1315 (package
ed07b08d 1316 (name "python-pyicu")
2e161eaf 1317 (version "1.9.5")
421a80a2
AE
1318 (source
1319 (origin
1320 (method url-fetch)
2e161eaf 1321 (uri (pypi-uri "PyICU" version))
421a80a2
AE
1322 (sha256
1323 (base32
2e161eaf 1324 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
421a80a2 1325 (build-system python-build-system)
dc027d40
MB
1326 (arguments
1327 '(#:phases
1328 (modify-phases %standard-phases
1329 (add-before 'check 'delete-failing-test
1330 (lambda _
1331 ;; XXX: These tests require locales that are unavailable
1332 ;; in the build environment.
1333 (delete-file "test/test_DateTimeParserGenerator.py")
1334 #t)))))
421a80a2
AE
1335 (inputs
1336 `(("icu4c" ,icu4c)))
421a80a2 1337 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1338 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1339 (description
1340 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1341 (license license:x11)))
ed07b08d
LF
1342
1343(define-public python2-pyicu
f210e944 1344 (package-with-python2 python-pyicu))
cc20a22a
LC
1345
1346(define-public python2-dogtail
1347 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1348 ;; spaces in indentation" with Python 3.
1349 (package
1350 (name "python2-dogtail")
1351 (version "0.8.2")
1352 (source (origin
1353 (method url-fetch)
1354 (uri (string-append
1355 "https://fedorahosted.org/released/dogtail/dogtail-"
1356 version ".tar.gz"))
1357 (sha256
1358 (base32
1359 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1360 (build-system python-build-system)
1361 (arguments `(#:python ,python-2
1362 #:tests? #f)) ; invalid command "test"
1363 (home-page "https://fedorahosted.org/dogtail/")
1003fbcf 1364 (synopsis "GUI test tool and automation framework written in Python")
cc20a22a 1365 (description
35b9e423 1366 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1367It uses Accessibility (a11y) technologies to communicate with desktop
1368applications. dogtail scripts are written in Python and executed like any
1369other Python program.")
3f641af0 1370 (license license:gpl2+)))
515e6878 1371
011b18c3
LC
1372(define-public python2-empy
1373 (package
1374 (name "python2-empy")
1375 (version "3.3")
1376 (source (origin
1377 (method url-fetch)
1378 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1379 version ".tar.gz"))
1380 (sha256
1381 (base32
1382 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1383 (build-system python-build-system)
1384 (arguments
1385 `(#:python ,python-2
1386 #:phases (alist-replace
1387 'check
1388 (lambda _
1389 (zero? (system* "./test.sh")))
1390 %standard-phases)))
1391 (home-page "http://www.alcyone.com/software/empy/")
1392 (synopsis "Templating system for Python")
1393 (description
1394 "EmPy is a system for embedding Python expressions and statements in
1395template text; it takes an EmPy source file, processes it, and produces
1396output. This is accomplished via expansions, which are special signals to the
1cd4027c 1397EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1398EmPy can expand arbitrary Python expressions and statements in this way, as
1399well as a variety of special forms. Textual data not explicitly delimited in
1400this way is sent unaffected to the output, allowing Python to be used in
1401effect as a markup language. Also supported are callbacks via hooks,
1402recording and playback via diversions, and dynamic, chainable filters. The
1403system is highly configurable via command line options and embedded
1404commands.")
3f641af0 1405 (license license:lgpl2.1+)))
011b18c3 1406
8deeda0c
LC
1407(define-public python2-element-tree
1408 (package
1409 (name "python2-element-tree")
1410 (version "1.2.6")
1411 (source (origin
1412 (method url-fetch)
1413 (uri (string-append
1414 "http://effbot.org/media/downloads/elementtree-"
1415 version "-20050316.tar.gz"))
1416 (sha256
1417 (base32
1418 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1419 (build-system python-build-system)
1420 (arguments
1421 `(#:python ,python-2 ; seems to be part of Python 3
1422 #:tests? #f)) ; no 'test' sub-command
1423 (synopsis "Toolkit for XML processing in Python")
1424 (description
1425 "ElementTree is a Python library supporting lightweight XML processing.")
1426 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1427 (license (license:x11-style
1428 "http://docs.python.org/2/license.html"
1429 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1430
1431(define-public python2-pybugz
1432 (package
1433 (name "python2-pybugz")
1434 (version "0.6.11")
1435 (source (origin
1436 (method url-fetch)
1437 (uri (string-append
1438 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1439 version ".tar.gz"))
1440 (sha256
1441 (base32
6f194a1e 1442 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1443 (patches (search-patches "pybugz-stty.patch"
1444 "pybugz-encode-error.patch"))))
8deeda0c
LC
1445 (build-system python-build-system)
1446 (arguments
1447 `(#:python ,python-2 ; SyntaxError with Python 3
1448 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1449 (propagated-inputs
1450 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1451 (synopsis "Python and command-line interface to Bugzilla")
1452 (description
1453 "PyBugz is a Python library and command-line tool to query the Bugzilla
1454bug tracking system. It is meant as an aid to speed up interaction with the
1455bug tracker.")
1456 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1457 (license license:gpl2)))
8deeda0c 1458
a480bc41
EB
1459(define-public python-enum34
1460 (package
1461 (name "python-enum34")
d39ae1e5 1462 (version "1.1.0")
a480bc41
EB
1463 (source
1464 (origin
1465 (method url-fetch)
d39ae1e5 1466 (uri (pypi-uri "enum34" version))
a480bc41
EB
1467 (sha256
1468 (base32
d39ae1e5 1469 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1470 (build-system python-build-system)
a480bc41
EB
1471 (arguments
1472 `(#:phases
1473 (alist-replace
1474 'check
1475 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1476 %standard-phases)))
1477 (home-page "https://pypi.python.org/pypi/enum34")
1478 (synopsis "Backported Python 3.4 Enum")
1479 (description
1480 "Enum34 is the new Python stdlib enum module available in Python 3.4
1481backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1482 (license license:bsd-3)))
a480bc41 1483
820acd1b
LF
1484(define-public python2-enum34
1485 (package-with-python2 python-enum34))
1486
a480bc41
EB
1487(define-public python-parse-type
1488 (package
1489 (name "python-parse-type")
1490 (version "0.3.4")
1491 (source
1492 (origin
1493 (method url-fetch)
1494 (uri (string-append "https://pypi.python.org/packages/source/p/"
1495 "parse_type/parse_type-" version ".tar.gz"))
1496 (sha256
1497 (base32
1498 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1499 (build-system python-build-system)
f22efa01 1500 (propagated-inputs
f3b98f4f 1501 `(("python-six" ,python-six)
68f1cdec 1502 ("python-parse" ,python-parse)))
a480bc41
EB
1503 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1504 (home-page "https://github.com/jenisys/parse_type")
1505 (synopsis "Extended parse module")
1506 (description
1507 "Parse_type extends the python parse module.")
3f641af0 1508 (license license:bsd-3)))
a480bc41
EB
1509
1510(define-public python-parse
1511 (package
1512 (name "python-parse")
eb3d3503 1513 (version "1.6.6")
a480bc41
EB
1514 (source
1515 (origin
1516 (method url-fetch)
eb3d3503 1517 (uri (pypi-uri "parse" version))
a480bc41
EB
1518 (sha256
1519 (base32
aa6c09ed
EF
1520 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1521 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1522 (build-system python-build-system)
1523 (arguments
1524 `(#:phases
f9a65318
EF
1525 (modify-phases %standard-phases
1526 (replace 'check
1527 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1528 (home-page "https://github.com/r1chardj0n3s/parse")
1529 (synopsis "Parse strings")
1530 (description
1531 "Parse strings using a specification based on the Python format()
1532syntax.")
3f641af0 1533 (license license:x11)))
a480bc41 1534
d3eff97a
JL
1535(define-public python-polib
1536 (package
1537 (name "python-polib")
1538 (version "1.0.8")
1539 (source (origin
1540 (method url-fetch)
1541 (uri (pypi-uri "polib" version))
1542 (sha256
1543 (base32
1544 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1545 (build-system python-build-system)
1546 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1547 (synopsis "Manipulate, create and modify gettext files")
1548 (description "Polib can manipulate any gettext format (po, pot and mo)
1549files. It can be used to create po files from scratch or to modify
1550existing ones.")
1551 (license license:expat)))
1552
1553(define-public python2-polib
1554 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1555 (package
1556 (inherit base)
1557 (arguments `(,@(package-arguments base)
1558 ;; Tests don't work with python2.
1559 #:tests? #f)))))
a480bc41 1560
515e6878
LC
1561(define-public scons
1562 (package
1563 (name "scons")
a3f61425 1564 (version "2.3.4")
515e6878
LC
1565 (source (origin
1566 (method url-fetch)
de67e922
LF
1567 (uri (string-append "mirror://sourceforge/scons/scons/" version
1568 "/scons-" version ".tar.gz"))
515e6878
LC
1569 (sha256
1570 (base32
a3f61425 1571 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1572 (build-system python-build-system)
1573 (arguments
1574 ;; With Python 3.x, fails to build with a syntax error.
1575 `(#:python ,python-2
b3e8b4bd 1576 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1577 #:tests? #f)) ; no 'python setup.py test' command
1578 (home-page "http://scons.org/")
1579 (synopsis "Software construction tool written in Python")
1580 (description
1581 "SCons is a software construction tool. Think of SCons as an improved,
1582cross-platform substitute for the classic Make utility with integrated
1583functionality similar to autoconf/automake and compiler caches such as ccache.
1584In short, SCons is an easier, more reliable and faster way to build
1585software.")
3f641af0 1586 (license license:x11)))
011b18c3 1587
c15a5c0e
DT
1588(define-public python-extras
1589 (package
1590 (name "python-extras")
1591 (version "0.0.3")
1592 (source
1593 (origin
1594 (method url-fetch)
1595 (uri (string-append
1596 "https://pypi.python.org/packages/source/e/extras/extras-"
1597 version ".tar.gz"))
1598 (sha256
1599 (base32
1600 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1601 (build-system python-build-system)
c15a5c0e
DT
1602 (arguments
1603 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1604 '(#:tests? #f))
1605 (home-page "https://github.com/testing-cabal/extras")
1606 (synopsis "Useful extensions to the Python standard library")
1607 (description
1608 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1609 (license license:expat)))
c15a5c0e
DT
1610
1611(define-public python2-extras
1612 (package-with-python2 python-extras))
1613
56ea0efd
DT
1614(define-public python-mimeparse
1615 (package
1616 (name "python-mimeparse")
1617 (version "0.1.4")
1618 (source
1619 (origin
1620 (method url-fetch)
1621 (uri (string-append
1622 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1623 version ".tar.gz"))
1624 (sha256
1625 (base32
1626 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1627 (build-system python-build-system)
56ea0efd
DT
1628 (arguments
1629 '(#:tests? #f)) ; no setup.py test command
1630 (home-page
1631 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1632 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1633 (description
1634 "Mimeparse provides basic functions for parsing MIME type names and
1635matching them against a list of media-ranges.")
bd3fa666 1636 (license license:expat)))
56ea0efd
DT
1637
1638(define-public python2-mimeparse
1639 (package-with-python2 python-mimeparse))
1640
4435427e
DT
1641(define-public python-nose
1642 (package
1643 (name "python-nose")
f7cb9841 1644 (version "1.3.7")
4435427e
DT
1645 (source
1646 (origin
1647 (method url-fetch)
f7cb9841 1648 (uri (pypi-uri "nose" version))
4435427e
DT
1649 (sha256
1650 (base32
f7cb9841 1651 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1652 (build-system python-build-system)
4435427e
DT
1653 (arguments
1654 '(#:tests? #f)) ; FIXME: test suite fails
1655 (home-page "http://readthedocs.org/docs/nose/")
1656 (synopsis "Python testing library")
1657 (description
1658 "Nose extends the unittest library to make testing easier.")
3f641af0 1659 (license license:lgpl2.0+)))
4435427e
DT
1660
1661(define-public python2-nose
1662 (package-with-python2 python-nose))
1663
0aea283a
EF
1664(define-public python-nose2
1665 (package
1666 (name "python-nose2")
1667 (version "0.6.5")
1668 (source
1669 (origin
1670 (method url-fetch)
1671 (uri (pypi-uri "nose2" version))
1672 (sha256
1673 (base32
1674 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1675 (build-system python-build-system)
1676 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1677 (propagated-inputs
0aea283a
EF
1678 `(("python-cov-core" ,python-cov-core)
1679 ("python-pytest-cov" ,python-pytest-cov)
1680 ("python-six" ,python-six)))
1681 (home-page "https://github.com/nose-devs/nose2")
1682 (synopsis "Next generation of nicer testing for Python")
1683 (description
1684 "Nose2 is the next generation of nicer testing for Python, based on the
1685plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1686better plugin api, being easier for users to configure, and simplifying internal
1687interfaces and processes.")
1688 (license license:bsd-2)))
1689
1690(define-public python2-nose2
1691 (package-with-python2 python-nose2))
1692
6cd9c356
DT
1693(define-public python-unittest2
1694 (package
1695 (name "python-unittest2")
1696 (version "0.5.1")
1697 (source
1698 (origin
1699 (method url-fetch)
1700 (uri (string-append
1701 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1702 version ".tar.gz"))
1703 (sha256
1704 (base32
1705 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1706 (build-system python-build-system)
6cd9c356
DT
1707 (home-page "http://pypi.python.org/pypi/unittest2")
1708 (synopsis "Python unit testing library")
1709 (description
1710 "Unittest2 is a replacement for the unittest module in the Python
1711standard library.")
3f641af0 1712 (license license:psfl)))
6cd9c356
DT
1713
1714(define-public python2-unittest2
1715 (package (inherit python-unittest2)
1716 (name "python2-unittest2")
1717 (version "0.5.1")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 (uri (string-append
1722 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1723 version ".tar.gz"))
1724 (sha256
1725 (base32
1726 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1727 (arguments
1728 `(#:python ,python-2
1729 #:tests? #f)))) ; no setup.py test command
1730
02f8f804 1731(define-public python-pafy
1732 (package
1733 (name "python-pafy")
1734 (version "0.5.2")
1735 (source
1736 (origin
1737 (method url-fetch)
1738 (uri (pypi-uri "pafy" version))
1739 (sha256
1740 (base32
1741 "1ckvrypyvb7jbqlgwdz0y337ajagjv7dgxyns326nqwypn1wpq0i"))))
1742 (build-system python-build-system)
ed3fee5f 1743 (arguments
1744 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1745 (propagated-inputs
1746 ;; Youtube-dl is a python package which is imported in the file
1747 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1748 `(("youtube-dl" ,youtube-dl)))
1749 (home-page "https://np1.github.io/pafy/")
1750 (synopsis "Retrieve YouTube content and metadata")
1751 (description
1752 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1753 (license license:lgpl3+)))
1754
542ad60f
DT
1755(define-public python-py
1756 (package
1757 (name "python-py")
71c8a804 1758 (version "1.4.31")
542ad60f
DT
1759 (source
1760 (origin
1761 (method url-fetch)
71c8a804 1762 (uri (pypi-uri "py" version))
542ad60f
DT
1763 (sha256
1764 (base32
71c8a804 1765 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f 1766 (build-system python-build-system)
dcb0da7b
MB
1767 (arguments
1768 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1769 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1770 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1771 ;; Is this module globally installed?"
1772 '(#:tests? #f))
542ad60f
DT
1773 (home-page "http://pylib.readthedocs.org/")
1774 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1775 (description
1776 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1777code introspection, and logging.")
bd3fa666 1778 (license license:expat)))
542ad60f
DT
1779
1780(define-public python2-py
1781 (package-with-python2 python-py))
1782
855d4761
DT
1783(define-public python-pytest
1784 (package
1785 (name "python-pytest")
61a4332d 1786 (version "2.7.3")
855d4761
DT
1787 (source
1788 (origin
1789 (method url-fetch)
1790 (uri (string-append
1791 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1792 version ".tar.gz"))
1793 (sha256
1794 (base32
61a4332d 1795 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1796 (modules '((guix build utils)))
1797 (snippet
1798 ;; One of the tests involves the /usr directory, so it fails.
1799 '(substitute* "testing/test_argcomplete.py"
1800 (("def test_remove_dir_prefix\\(self\\):")
1801 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1802 (build-system python-build-system)
482d9591
HG
1803 (propagated-inputs
1804 `(("python-py" ,python-py)))
e7881f3d 1805 (native-inputs
482d9591 1806 `(("python-nose" ,python-nose)
855d4761
DT
1807 ("python-mock" ,python-mock)))
1808 (home-page "http://pytest.org")
1809 (synopsis "Python testing library")
1810 (description
1811 "Pytest is a testing tool that provides auto-discovery of test modules
1812and functions, detailed info on failing assert statements, modular fixtures,
1813and many external plugins.")
bd3fa666 1814 (license license:expat)))
855d4761
DT
1815
1816(define-public python2-pytest
1817 (package-with-python2 python-pytest))
1818
fca4ff35
LF
1819;; This package is used by Borg until we can upgrade all our Python packages to
1820;; use a more recent pytest.
1821(define-public python-pytest-2.9.2
1822 (package
1823 (inherit python-pytest)
1824 (name "python-pytest")
1825 (version "2.9.2")
1826 (source (origin
1827 (method url-fetch)
1828 (uri (pypi-uri "pytest" version))
1829 (sha256
1830 (base32
1831 "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"))))
1832 (arguments
1833 `(#:phases
1834 (modify-phases %standard-phases
1835 (add-before 'check 'disable-invalid-test
1836 (lambda _
1837 (substitute* "testing/test_argcomplete.py"
1838 (("def test_remove_dir_prefix" line)
1839 (string-append "@pytest.mark.skip"
1840 "(reason=\"Assumes that /usr exists.\")\n "
1841 line)))
1842 #t)))))))
1843
358c3d61
EF
1844(define-public python-pytest-cov
1845 (package
1846 (name "python-pytest-cov")
545f4a1c 1847 (version "2.2.1")
358c3d61
EF
1848 (source
1849 (origin
1850 (method url-fetch)
1851 (uri (pypi-uri "pytest-cov" version))
1852 (sha256
545f4a1c
EF
1853 (base32
1854 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1855 (build-system python-build-system)
ce40b383
HG
1856 (arguments
1857 `(#:phases
1858 (modify-phases %standard-phases
1859 (replace 'check
1860 (lambda _
1861 ;; options taken from tox.ini
1862 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1863 ;; with "Duplicate implicit target name"
1864 (zero? (system* "python" "./setup.py" "check"
1865 "--strict" "--metadata")))))))
f22efa01 1866 (propagated-inputs
10468636
EF
1867 `(("python-coverage" ,python-coverage)
1868 ("python-pytest" ,python-pytest)))
10468636
EF
1869 (home-page "https://github.com/pytest-dev/pytest-cov")
1870 (synopsis "Pytest plugin for measuring coverage")
1871 (description
1872 "Pytest-cov produces coverage reports. It supports centralised testing and
1873distributed testing in both @code{load} and @code{each} modes. It also
1874supports coverage of subprocesses.")
f210e944 1875 (license license:expat)))
358c3d61
EF
1876
1877(define-public python2-pytest-cov
f210e944 1878 (package-with-python2 python-pytest-cov))
358c3d61 1879
6784f2e3
RW
1880(define-public python-pytest-runner
1881 (package
1882 (name "python-pytest-runner")
1883 (version "2.6.2")
1884 (source
1885 (origin
1886 (method url-fetch)
54cd239b 1887 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1888 (sha256
1889 (base32
1890 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1891 (build-system python-build-system)
1892 (arguments
1893 `(#:phases
1894 (modify-phases %standard-phases
1895 ;; The fancy way of setting the version with setuptools_scm does not
1896 ;; seem to work here.
1897 (add-after 'unpack 'set-version
1898 (lambda _
1899 (substitute* "docs/conf.py"
1900 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1901 (string-append "version = \"" ,version "\"")))
1902 #t)))))
1903 (native-inputs
1904 `(("python-pytest" ,python-pytest)
1905 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1906 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1907 (synopsis "Invoke py.test as a distutils command")
1908 (description
1909 "This package provides a @command{pytest-runner} command that
1910@file{setup.py} files can use to run tests.")
f210e944 1911 (license license:expat)))
54cd239b
EF
1912
1913(define-public python2-pytest-runner
f210e944 1914 (package-with-python2 python-pytest-runner))
6784f2e3 1915
44547e51
EF
1916(define-public python-pytest-mock
1917 (package
1918 (name "python-pytest-mock")
1919 (version "1.2")
1920 (source
1921 (origin
1922 (method url-fetch)
1923 (uri (pypi-uri "pytest-mock" version ".zip"))
1924 (sha256
1925 (base32
1926 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1927 (build-system python-build-system)
1928 (native-inputs
1929 `(("unzip" ,unzip)))
f22efa01 1930 (propagated-inputs
d5e41cf2 1931 `(("python-pytest" ,python-pytest)))
44547e51
EF
1932 (home-page "https://github.com/pytest-dev/pytest-mock/")
1933 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1934 (description
1935 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1936around the patching API provided by the @code{mock} package, but with the
1937benefit of not having to worry about undoing patches at the end of a test.
1938The mocker fixture has the same API as @code{mock.patch}, supporting the
1939same arguments.")
1940 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1941 (license license:expat)))
1942
1943(define-public python2-pytest-mock
1944 (let ((base (package-with-python2
1945 (strip-python2-variant python-pytest-mock))))
1946 (package (inherit base)
f22efa01 1947 (propagated-inputs
44547e51 1948 `(("python2-mock" ,python2-mock)
f22efa01 1949 ,@(package-propagated-inputs base))))))
44547e51 1950
8fa58fc9
CAW
1951(define-public python-pytest-xdist
1952 (package
1953 (name "python-pytest-xdist")
1954 (version "1.14")
1955 (source
1956 (origin
1957 (method url-fetch)
1958 (uri (pypi-uri "pytest-xdist" version ".zip"))
1959 (sha256
1960 (base32
de585a7e
HG
1961 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1962 (modules '((guix build utils)))
1963 (snippet
1964 '(begin
1965 ;; Remove pre-compiled .pyc files from source.
1966 (for-each delete-file-recursively
1967 (find-files "." "__pycache__" #:directories? #t))
1968 (for-each delete-file (find-files "." "\\.pyc$"))
1969 #t))))
8fa58fc9 1970 (build-system python-build-system)
4eb385fb
MB
1971 (arguments
1972 '(#:tests? #f)) ;FIXME: Some tests are failing.
1973 ;; #:phases
1974 ;; (modify-phases %standard-phases
1975 ;; (delete 'check)
1976 ;; (add-after 'install 'check
1977 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
1978 ;; (add-installed-pythonpath inputs outputs)
1979 ;; (zero? (system* "py.test" "-v")))))
8fa58fc9
CAW
1980 (native-inputs
1981 `(("unzip" ,unzip)
8fa58fc9 1982 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1983 (propagated-inputs
c4516ad2 1984 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
1985 ("python-pytest" ,python-pytest)
1986 ("python-py" ,python-py)))
1987 (home-page
1988 "https://github.com/pytest-dev/pytest-xdist")
1989 (synopsis
1990 "Plugin for py.test with distributed testing and loop-on-failing modes")
1991 (description
1992 "The pytest-xdist plugin extends py.test with some unique test execution
1993modes: parallelization, running tests in boxed subprocesses, the ability
1994to run tests repeatedly when failed, and the ability to run tests on multiple
1995Python interpreters or platforms. It uses rsync to copy the existing
1996program code to a remote location, executes there, and then syncs the
1997result back.")
f210e944 1998 (license license:expat)))
8fa58fc9
CAW
1999
2000(define-public python2-pytest-xdist
f210e944 2001 (package-with-python2 python-pytest-xdist))
8fa58fc9 2002
84d24017
DT
2003(define-public python-scripttest
2004 (package
2005 (name "python-scripttest")
2006 (version "1.3")
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (string-append
2011 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
2012 version ".tar.gz"))
2013 (sha256
2014 (base32
2015 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
2016 (build-system python-build-system)
521b7772 2017 (native-inputs
f3b98f4f 2018 `(("python-pytest" ,python-pytest)))
84d24017
DT
2019 (home-page "http://pythonpaste.org/scripttest/")
2020 (synopsis "Python library to test command-line scripts")
2021 (description "Scripttest is a Python helper library for testing
2022interactive command-line applications. With it you can run a script in a
2023subprocess and see the output as well as any file modifications.")
bd3fa666 2024 (license license:expat)))
84d24017
DT
2025
2026(define-public python2-scripttest
2027 (package-with-python2 python-scripttest))
2028
d8fa80e1
DT
2029(define-public python-testtools
2030 (package
2031 (name "python-testtools")
7adb9031 2032 (version "1.4.0")
d8fa80e1
DT
2033 (source
2034 (origin
2035 (method url-fetch)
7adb9031 2036 (uri (pypi-uri "testtools" version))
d8fa80e1
DT
2037 (sha256
2038 (base32
7adb9031 2039 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
d8fa80e1 2040 (build-system python-build-system)
7adb9031
DM
2041 (arguments
2042 `(#:phases
2043 (modify-phases %standard-phases
2044 (add-after 'unpack 'fix-module-imports
2045 (lambda _
2046 (substitute* "setup.py"
2047 (("'unittest2>=0.8.0',") ""))
2048 (substitute* '("testtools/testcase.py"
2049 "testtools/testsuite.py"
2050 "testtools/run.py"
2051 "testtools/tests/test_run.py"
2052 "testtools/tests/test_testsuite.py"
2053 "testtools/tests/test_deferredruntest.py")
2054 ;; unittest2 is a backport of Python2.7 features to Python 2.4.
2055 (("import unittest2 as unittest") "import unittest")
2056 (("import unittest2") "import unittest as unittest2")
2057 (("from unittest2 import") "from unittest import"))
2058 (substitute* "testtools/tests/test_testresult.py"
2059 ;; NUL in source code is not allowed (raises ValueError).
2060 (("\\x00\\x04") "\\x04"))
2061 #t)))))
0e88cbf8 2062 (propagated-inputs
f22efa01
HG
2063 `(("python-mimeparse" ,python-mimeparse)
2064 ("python-extras" ,python-extras)))
d8fa80e1
DT
2065 (home-page "https://github.com/testing-cabal/testtools")
2066 (synopsis
2067 "Extensions to the Python standard library unit testing framework")
2068 (description
2069 "Testtools extends the Python standard library unit testing framework to
2070provide matchers, more debugging information, and cross-Python
2071compatibility.")
3f641af0 2072 (license license:psfl)))
d8fa80e1
DT
2073
2074(define-public python2-testtools
2075 (package-with-python2 python-testtools))
2076
5bf3afea
DT
2077(define-public python-testscenarios
2078 (package
2079 (name "python-testscenarios")
2080 (version "0.4")
2081 (source
2082 (origin
2083 (method url-fetch)
2084 (uri (string-append
2085 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2086 version ".tar.gz"))
2087 (sha256
2088 (base32
2089 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2090 (build-system python-build-system)
f22efa01 2091 (propagated-inputs
8e73d3ba 2092 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2093 (home-page "https://launchpad.net/testscenarios")
2094 (synopsis "Pyunit extension for dependency injection")
2095 (description
2096 "Testscenarios provides clean dependency injection for Python unittest
2097style tests.")
3f641af0 2098 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2099
2100(define-public python2-testscenarios
2101 (package-with-python2 python-testscenarios))
2102
dac79ecc
DT
2103(define-public python-testresources
2104 (package
2105 (name "python-testresources")
2106 (version "0.2.7")
2107 (source
2108 (origin
2109 (method url-fetch)
2110 (uri (string-append
2111 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2112 version ".tar.gz"))
2113 (sha256
2114 (base32
2115 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2116 (build-system python-build-system)
dac79ecc
DT
2117 (home-page "https://launchpad.net/testresources")
2118 (synopsis
2119 "Pyunit extension for managing test resources")
2120 (description
2121 "Testresources is an extension to Python's unittest to allow declarative
2122use of resources by test cases.")
3f641af0 2123 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2124
2125(define-public python2-testresources
2126 (package-with-python2 python-testresources))
2127
070ab058
DT
2128(define-public python-subunit
2129 (package
2130 (name "python-subunit")
2131 (version "0.0.21")
2132 (source
2133 (origin
2134 (method url-fetch)
2135 (uri (string-append
2136 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2137 version ".tar.gz"))
2138 (sha256
2139 (base32
2140 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2141 (build-system python-build-system)
f22efa01 2142 (propagated-inputs
b52ad371
HG
2143 `(("python-extras" ,python-extras)
2144 ("python-mimeparse" ,python-mimeparse)))
2145 (native-inputs
2146 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2147 (home-page "http://launchpad.net/subunit")
2148 (synopsis "Python implementation of the subunit protocol")
2149 (description
2150 "Python-subunit is a Python implementation of the subunit test streaming
2151protocol.")
3f641af0 2152 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2153
2154(define-public python2-subunit
2155 (package-with-python2 python-subunit))
2156
d2a8db92
HG
2157;; Recent versions of python-fixtures and python-testrepository need
2158;; python-pbr for packaging, which itself needs these two packages for
2159;; testing.
2160;; To fix this circular dependency, we use a build of python-pbr, based on the
2161;; same source, just without any test dependencies and with tests disabled.
2162;; python-pbr-minmal is then used to package python-fixtures and
2163;; python-testrepository.
2164;; Strictly speaking we currently could remove the test-requirements from the
2165;; normal python-pbr package (and save this package) since test are disabled
2166;; there anyway. But this may change in future.
2167(define python-pbr-minimal
cd49454b 2168 (package
d2a8db92 2169 (name "python-pbr-minimal")
5bbb2249 2170 (version "1.10.0")
7787ef76
CR
2171 (source
2172 (origin
2173 (method url-fetch)
d2a8db92 2174 (uri (pypi-uri "pbr" version))
7787ef76
CR
2175 (sha256
2176 (base32
a1e3ed6e
DM
2177 "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))
2178 (patches (search-patches "python-pbr-fix-man-page-support.patch"))))
7787ef76
CR
2179 (build-system python-build-system)
2180 (arguments
d2a8db92
HG
2181 `(#:tests? #f))
2182 (home-page "http://docs.openstack.org/developer/pbr/")
2183 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2184 (description
d2a8db92 2185 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2186 (license license:asl2.0)))
7787ef76 2187
d2a8db92
HG
2188(define python2-pbr-minimal
2189 (package-with-python2 python-pbr-minimal))
7787ef76 2190
1ef09c0c 2191(define-public python-pbr
e25f0174 2192 (package
d2a8db92 2193 (inherit python-pbr-minimal)
e25f0174 2194 (name "python-pbr")
e25f0174
BW
2195 (arguments
2196 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2197 (propagated-inputs
d2a8db92
HG
2198 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2199 (native-inputs
e25f0174 2200 `(("python-fixtures" ,python-fixtures)
d2a8db92 2201 ;; discover, coverage, hacking, subunit
e25f0174 2202 ("python-mock" ,python-mock)
d2a8db92 2203 ("python-six" ,python-six)
e25f0174
BW
2204 ("python-sphinx" ,python-sphinx)
2205 ("python-testrepository" ,python-testrepository)
2206 ("python-testresources" ,python-testresources)
2207 ("python-testscenarios" ,python-testscenarios)
2208 ("python-testtools" ,python-testtools)
2209 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2210 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2211 (description
2212 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2213and sensible default behaviors into your setuptools run. It will set
2214versions, process requirements files and generate AUTHORS and ChangeLog file
2215from git information.
2216")))
1ef09c0c
BW
2217
2218(define-public python2-pbr
e25f0174 2219 (package-with-python2 python-pbr))
1ef09c0c 2220
7787ef76
CR
2221(define-public python-fixtures
2222 (package
2223 (name "python-fixtures")
13fcc6df 2224 (version "1.4.0")
7787ef76
CR
2225 (source
2226 (origin
2227 (method url-fetch)
13fcc6df 2228 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2229 (sha256
2230 (base32
13fcc6df 2231 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76 2232 (build-system python-build-system)
f6c1ef18
MB
2233 (arguments
2234 '(#:phases
2235 (modify-phases %standard-phases
2236 (replace 'check
2237 (lambda _
2238 (zero? (system* "python" "-m" "testtools.run"
2239 "fixtures.test_suite")))))))
7787ef76 2240 (propagated-inputs
ae92cadd 2241 `(("python-six" ,python-six)))
e7881f3d 2242 (native-inputs
f6c1ef18
MB
2243 `(("python-mock" ,python-mock)
2244 ("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2245 ("python-testtools" ,python-testtools)))
7787ef76
CR
2246 (home-page "https://launchpad.net/python-fixtures")
2247 (synopsis "Python test fixture library")
2248 (description
2249 "Fixtures provides a way to create reusable state, useful when writing
2250Python tests.")
3f641af0 2251 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2252
cd49454b
DT
2253(define-public python2-fixtures
2254 (package-with-python2 python-fixtures))
2255
b24a0c00
DT
2256(define-public python-testrepository
2257 (package
2258 (name "python-testrepository")
2259 (version "0.0.20")
2260 (source
2261 (origin
2262 (method url-fetch)
2263 (uri (string-append
2264 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2265 version ".tar.gz"))
2266 (sha256
2267 (base32
2268 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2269 (build-system python-build-system)
90110ef9
MB
2270 (arguments
2271 ;; FIXME: Many tests are failing.
2272 '(#:tests? #f))
05de40c5 2273 (propagated-inputs
b2e66edf
HG
2274 `(("python-fixtures" ,python-fixtures)
2275 ("python-subunit" ,python-subunit)
b52ad371
HG
2276 ("python-testtools" ,python-testtools)))
2277 (native-inputs
2278 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2279 ("python-mimeparse" ,python-mimeparse)))
2280 (home-page "https://launchpad.net/testrepository")
2281 (synopsis "Database for Python test results")
2282 (description "Testrepository provides a database of test results which can
2283be used as part of a developer's workflow to check things such as what tests
2284have failed since the last commit or what tests are currently failing.")
3f641af0 2285 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2286
2287(define-public python2-testrepository
2288 (package-with-python2 python-testrepository))
2289
243a009a
DT
2290(define-public python-coverage
2291 (package
2292 (name "python-coverage")
4d4cf3dd 2293 (version "4.1")
243a009a
DT
2294 (source
2295 (origin
2296 (method url-fetch)
82a3c582 2297 (uri (pypi-uri "coverage" version))
243a009a
DT
2298 (sha256
2299 (base32
4d4cf3dd 2300 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2301 (build-system python-build-system)
bd10e677
MB
2302 (arguments
2303 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2304 '(#:tests? #f))
243a009a
DT
2305 (home-page "http://nedbatchelder.com/code/coverage")
2306 (synopsis "Code coverage measurement for Python")
2307 (description
2308 "Coverage measures code coverage, typically during test execution. It
2309uses the code analysis tools and tracing hooks provided in the Python standard
2310library to determine which lines are executable, and which have been
2311executed.")
3f641af0 2312 (license license:bsd-3)))
243a009a
DT
2313
2314(define-public python2-coverage
2315 (package-with-python2 python-coverage))
2316
12f839fd
EF
2317(define-public python-cov-core
2318 (package
2319 (name "python-cov-core")
2320 (version "1.15.0")
2321 (source
2322 (origin
2323 (method url-fetch)
2324 (uri (pypi-uri "cov-core" version))
2325 (sha256
2326 (base32
2327 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2328 (build-system python-build-system)
f78e1c27 2329 (propagated-inputs
12f839fd
EF
2330 `(("python-coverage" ,python-coverage)))
2331 (home-page "https://github.com/schlamar/cov-core")
49d5e338 2332 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
12f839fd 2333 (description
49d5e338
TGR
2334 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2335and @code{nose2-cov}. It is useful for developing coverage plugins for these
2336testing frameworks.")
f210e944 2337 (license license:expat)))
12f839fd
EF
2338
2339(define-public python2-cov-core
f210e944 2340 (package-with-python2 python-cov-core))
12f839fd 2341
041358fb
DT
2342(define-public python-discover
2343 (package
2344 (name "python-discover")
2345 (version "0.4.0")
2346 (source
2347 (origin
2348 (method url-fetch)
2349 (uri (string-append
2350 "https://pypi.python.org/packages/source/d/discover/discover-"
2351 version ".tar.gz"))
2352 (sha256
2353 (base32
2354 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2355 (build-system python-build-system)
041358fb
DT
2356 (home-page "http://pypi.python.org/pypi/discover/")
2357 (synopsis
2358 "Python test discovery for unittest")
2359 (description
2360 "Discover provides test discovery for unittest, a feature that has been
e881752c 2361backported from Python 2.7 for Python 2.4+.")
3f641af0 2362 (license license:bsd-3)))
041358fb
DT
2363
2364(define-public python2-discover
2365 (package-with-python2 python-discover))
2366
a480bc41
EB
2367(define-public behave
2368 (package
2369 (name "behave")
287cfd1a 2370 (version "1.2.5")
a480bc41
EB
2371 (source (origin
2372 (method url-fetch)
287cfd1a 2373 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2374 (sha256
2375 (base32
287cfd1a 2376 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2377 (build-system python-build-system)
f22efa01 2378 (propagated-inputs
f3b98f4f 2379 `(("python-six" ,python-six)
a480bc41
EB
2380 ("python-parse" ,python-parse)
2381 ("python-parse-type" ,python-parse-type)))
2382 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2383 ;PyHamcrest>=1.8
2384 (home-page "http://github.com/behave/behave")
2385 (synopsis "Python behavior-driven development")
2386 (description
2387 "Behave is a tool for behavior-driven development in python.
2388Behavior-driven development (or BDD) is an agile software development
2389technique that encourages collaboration between developers, QA and
2390non-technical or business participants in a software project. Behave uses
2391tests written in a natural language style, backed up by Python code.")
3f641af0 2392 (license license:x11)))
c7303d3c
DT
2393
2394(define-public python-exif-read
2395 (package
2396 (name "python-exif-read")
2a2d0981 2397 (version "2.1.2")
c7303d3c
DT
2398 (source (origin
2399 (method url-fetch)
2a2d0981 2400 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2401 (sha256
2402 (base32
2a2d0981 2403 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2404 (build-system python-build-system)
c7303d3c
DT
2405 (arguments `(#:tests? #f)) ; no tests
2406 (home-page "https://github.com/ianare/exif-py")
2407 (synopsis "Python library to extract EXIF data from image files")
2408 (description
2409 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2410files.")
3f641af0 2411 (license license:bsd-3)))
c7303d3c
DT
2412
2413(define-public python2-exif-read
2414 (package-with-python2 python-exif-read))
d5f89b22
DT
2415
2416(define-public python-pyld
2417 (package
2418 (name "python-pyld")
8957af32 2419 (version "0.7.1")
d5f89b22
DT
2420 (source (origin
2421 (method url-fetch)
af1ab773 2422 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2423 (sha256
2424 (base32
8957af32 2425 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2426 (build-system python-build-system)
d5f89b22
DT
2427 (arguments `(#:tests? #f)) ; no tests
2428 (home-page "http://github.com/digitalbazaar/pyld")
2429 (synopsis "Python implementation of the JSON-LD specification")
2430 (description
2431 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2432 (license license:bsd-3)))
d5f89b22
DT
2433
2434(define-public python2-pyld
2435 (package-with-python2 python-pyld))
3a1f9a68
DT
2436
2437(define-public python-certifi
2438 (package
2439 (name "python-certifi")
28576403 2440 (version "2017.1.23")
3a1f9a68
DT
2441 (source (origin
2442 (method url-fetch)
9a41f443 2443 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2444 (sha256
2445 (base32
28576403 2446 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
3a1f9a68 2447 (build-system python-build-system)
28576403 2448 (home-page "https://certifi.io/")
3a1f9a68
DT
2449 (synopsis "Python CA certificate bundle")
2450 (description
2451 "Certifi is a Python library that contains a CA certificate bundle, which
2452is used by the Requests library to verify HTTPS requests.")
3f641af0 2453 (license license:asl2.0)))
3a1f9a68
DT
2454
2455(define-public python2-certifi
2456 (package-with-python2 python-certifi))
e6cfbd36 2457
12c270dd
RW
2458(define-public python-click
2459 (package
2460 (name "python-click")
d4acb6db 2461 (version "6.7")
12c270dd
RW
2462 (source
2463 (origin
2464 (method url-fetch)
375f224b 2465 (uri (pypi-uri "click" version))
12c270dd 2466 (sha256
43accb58 2467 (base32
d4acb6db 2468 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
12c270dd 2469 (build-system python-build-system)
e2ab5a09
BW
2470 (arguments
2471 `(#:phases
2472 (modify-phases %standard-phases
2473 (add-after 'unpack 'fix-paths
2474 (lambda* (#:key inputs #:allow-other-keys)
2475 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2476 "cross-libc" "libc"))))
2477 (substitute* "click/_unicodefun.py"
2478 (("'locale'")
2479 (string-append "'" glibc "/bin/locale'"))))
97be1bc2
MB
2480 #t))
2481 (replace 'check
2482 (lambda _
2483 (zero? (system* "make" "test")))))))
2484 (native-inputs
2485 `(("python-pytest" ,python-pytest)))
12c270dd
RW
2486 (home-page "http://click.pocoo.org")
2487 (synopsis "Command line library for Python")
2488 (description
2489 "Click is a Python package for creating command line interfaces in a
2490composable way with as little code as necessary. Its name stands for
2491\"Command Line Interface Creation Kit\". It's highly configurable but comes
2492with sensible defaults out of the box.")
3f641af0 2493 (license license:bsd-3)))
12c270dd
RW
2494
2495(define-public python2-click
2496 (package-with-python2 python-click))
2497
addc808d
EF
2498(define-public python-wheel
2499 (package
2500 (name "python-wheel")
0e6df70b 2501 (version "0.30.0a0")
e1ba0749
EF
2502 (source
2503 (origin
2504 (method url-fetch)
2505 (uri (pypi-uri "wheel" version))
2506 (sha256
2507 (base32
0e6df70b 2508 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
e1ba0749
EF
2509 (build-system python-build-system)
2510 (native-inputs
f3b98f4f 2511 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2512 ("python-pytest-cov" ,python-pytest-cov)))
2513 (home-page "https://bitbucket.org/pypa/wheel/")
2514 (synopsis "Format for built Python packages")
2515 (description
2516 "A wheel is a ZIP-format archive with a specially formatted filename and
2517the @code{.whl} extension. It is designed to contain all the files for a PEP
2518376 compatible install in a way that is very close to the on-disk format. Many
2519packages will be properly installed with only the @code{Unpack} step and the
2520unpacked archive preserves enough information to @code{Spread} (copy data and
2521scripts to their final locations) at any later time. Wheel files can be
2522installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2523 (license license:expat)
2524 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2525
2526(define-public python2-wheel
8ad4ae20
LF
2527 (let ((wheel (package-with-python2
2528 (strip-python2-variant python-wheel))))
264ae686 2529 (package (inherit wheel)
8ad4ae20
LF
2530 (native-inputs `(("python2-functools32" ,python2-functools32)
2531 ,@(package-native-inputs wheel))))))
2532
addc808d 2533
ae641128 2534(define-public python-requests
e6cfbd36 2535 (package
ae641128 2536 (name "python-requests")
da5db988 2537 (version "2.13.0")
e6cfbd36
DT
2538 (source (origin
2539 (method url-fetch)
5d691657 2540 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2541 (sha256
2542 (base32
da5db988 2543 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
cff0ccf9 2544 ;; TODO: unbundle urllib3 and chardet.
e6cfbd36 2545 (build-system python-build-system)
cff0ccf9
MB
2546 (arguments
2547 ;; FIXME: Some tests require network access.
2548 '(#:tests? #f))
e6cfbd36
DT
2549 (home-page "http://python-requests.org/")
2550 (synopsis "Python HTTP library")
2551 (description
2552 "Requests is a Python HTTP client library. It aims to be easier to use
2553than Python’s urllib2 library.")
3f641af0 2554 (license license:asl2.0)))
864b5211 2555
e9005180
DT
2556;; Some software requires an older version of Requests, notably Docker
2557;; Compose.
2558(define-public python-requests-2.7
2559 (package (inherit python-requests)
2560 (version "2.7.0")
2561 (source (origin
2562 (method url-fetch)
2563 (uri (pypi-uri "requests" version))
2564 (sha256
2565 (base32
2566 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2567
ae641128 2568(define-public python2-requests
8ad4ae20 2569 (package-with-python2 python-requests))
ae641128 2570
ea521b42
DT
2571(define-public python-vcversioner
2572 (package
2573 (name "python-vcversioner")
538fe019 2574 (version "2.16.0.0")
ea521b42
DT
2575 (source
2576 (origin
2577 (method url-fetch)
2578 (uri (pypi-uri "vcversioner" version))
2579 (sha256
2580 (base32
538fe019 2581 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2582 (build-system python-build-system)
ea521b42
DT
2583 (synopsis "Python library for version number discovery")
2584 (description "Vcversioner is a Python library that inspects tagging
2585information in a variety of version control systems in order to discover
2586version numbers.")
2587 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2588 (license license:isc)))
ea521b42
DT
2589
2590(define-public python2-vcversioner
f210e944 2591 (package-with-python2 python-vcversioner))
ae641128 2592
864b5211
DT
2593(define-public python-jsonschema
2594 (package
2595 (name "python-jsonschema")
b3667afb 2596 (version "2.5.1")
864b5211
DT
2597 (source (origin
2598 (method url-fetch)
2599 (uri
2600 (string-append
2601 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2602 version ".tar.gz"))
2603 (sha256
2604 (base32
b3667afb 2605 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2606 (build-system python-build-system)
8bcd6b91
EF
2607 (arguments
2608 '(#:phases
2609 (modify-phases %standard-phases
2610 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2611 (native-inputs
8bcd6b91
EF
2612 `(("python-nose" ,python-nose)
2613 ("python-vcversioner" ,python-vcversioner)))
2614 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2615 (synopsis "Implementation of JSON Schema for Python")
2616 (description
2617 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2618 (license license:expat)
2619 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2620
2621(define-public python2-jsonschema
a14600ec
LF
2622 (let ((jsonschema (package-with-python2
2623 (strip-python2-variant python-jsonschema))))
264ae686 2624 (package (inherit jsonschema)
eaba9d66 2625 (native-inputs
8bcd6b91 2626 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2627 ,@(package-native-inputs jsonschema)))
2628 (propagated-inputs
2629 `(("python2-functools32" ,python2-functools32))))))
850189b8 2630
9f21414d 2631(define-public python-kitchen
2632 (package
2633 (name "python-kitchen")
2634 (version "1.2.4")
2635 (source
2636 (origin
2637 (method url-fetch)
2638 (uri (pypi-uri "kitchen" version))
2639 (sha256
2640 (base32
2641 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2642 (build-system python-build-system)
2643 (propagated-inputs
2644 `(("python-chardet" ,python-chardet)))
2645 (home-page "https://fedorahosted.org/kitchen")
2646 (synopsis "Python API for snippets")
2647 (description "@code{kitchen} module provides a python API for all sorts of
2648little useful snippets of code that everybody ends up writing for their projects
2649but never seem big enough to build an independent release. Use kitchen and stop
2650cutting and pasting that code over and over.")
2651 (license (list license:lgpl2.1+
2652 ;; subprocess.py, test_subprocess.py,
2653 ;; kitchen/pycompat25/defaultdict.py:
2654 license:psfl))))
2655
2656(define-public python2-kitchen
2657 (package-with-python2 python-kitchen))
2658
850189b8
DT
2659(define-public python-unidecode
2660 (package
2661 (name "python-unidecode")
5754fe95 2662 (version "0.04.20")
850189b8
DT
2663 (source (origin
2664 (method url-fetch)
8925d4f3 2665 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2666 (sha256
2667 (base32
5754fe95 2668 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
850189b8 2669 (build-system python-build-system)
850189b8
DT
2670 (home-page "https://pypi.python.org/pypi/Unidecode")
2671 (synopsis "ASCII transliterations of Unicode text")
2672 (description
2673 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2674useful when integrating with legacy code that doesn't support Unicode, or for
2675ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2676machine identifiers from human-readable Unicode strings that should still be
2677somewhat intelligeble.")
3f641af0 2678 (license license:gpl2+)))
850189b8
DT
2679
2680(define-public python2-unidecode
2681 (package-with-python2 python-unidecode))
6d45fef4
DT
2682
2683(define-public python-pyjwt
2684 (package
2685 (name "python-pyjwt")
eb31d4b4 2686 (version "1.4.0")
6d45fef4
DT
2687 (source
2688 (origin
2689 (method url-fetch)
eb31d4b4 2690 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2691 (sha256
2692 (base32
eb31d4b4 2693 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2694 (build-system python-build-system)
eb31d4b4 2695 (native-inputs
130fe994
HG
2696 `(("python-pytest" ,python-pytest)
2697 ("python-pytest-cov" ,python-pytest-cov)
2698 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2699 (home-page "http://github.com/progrium/pyjwt")
2700 (synopsis "JSON Web Token implementation in Python")
2701 (description
2702 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2703 (license license:expat)))
6d45fef4
DT
2704
2705(define-public python2-pyjwt
2706 (package-with-python2 python-pyjwt))
2707
a80488c2 2708(define-public python-pykka
2709 (package
2710 (name "python-pykka")
2711 (version "1.2.1")
2712 (source
2713 (origin
2714 (method url-fetch)
2715 (uri (pypi-uri "Pykka" version))
2716 (sha256
2717 (base32
2718 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2719 (build-system python-build-system)
2720 (native-inputs
2721 `(("python-mock" ,python-mock)
2722 ("python-nose" ,python-nose)
2723 ("python-gevent" ,python-gevent)
2724 ("python-eventlet" ,python-eventlet)))
2725 (home-page "https://www.pykka.org/")
2726 (synopsis "Pykka is a Python implementation of the actor model")
2727 (description
2728 "Pykka is a Python implementation of the actor model.
2729The actor model introduces some simple rules to control the sharing
2730of state and cooperation between execution units, which makes it
2731easier to build concurrent applications.")
2732 (license license:asl2.0)))
2733
2734(define-public python2-pykka
2735 (package-with-python2 python-pykka))
2736
2cec1f6f
DT
2737(define-public python-oauthlib
2738 (package
2739 (name "python-oauthlib")
bde2171d 2740 (version "1.0.3")
2cec1f6f
DT
2741 (source (origin
2742 (method url-fetch)
bde2171d 2743 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2744 (sha256
2745 (base32
bde2171d 2746 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2747 (build-system python-build-system)
bde2171d 2748 (native-inputs
bb06aa34 2749 `(("python-nose" ,python-nose)
c616b5d3 2750 ("python-mock" ,python-mock)
bde2171d 2751 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2752 ("python-pyjwt" ,python-pyjwt)
2753 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2754 (home-page "https://github.com/idan/oauthlib")
2755 (synopsis "OAuth implementation for Python")
2756 (description
2757 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2758OAuth request-signing logic.")
3f641af0 2759 (license license:bsd-3)
59f151ec 2760 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2761
2762(define-public python2-oauthlib
59f151ec 2763 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2764 (package
2765 (inherit base)
00e10c6e 2766 (native-inputs `(("python2-unittest2" ,python2-unittest2)
59f151ec 2767 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2768
2769(define-public python-itsdangerous
2770 (package
2771 (name "python-itsdangerous")
2772 (version "0.24")
2773 (source
2774 (origin
2775 (method url-fetch)
2776 (uri (string-append
2777 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2778 version ".tar.gz"))
2779 (sha256
2780 (base32
2781 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2782 (build-system python-build-system)
ec5dbb5c
DT
2783 (home-page "http://github.com/mitsuhiko/itsdangerous")
2784 (synopsis "Python library for passing data to/from untrusted environments")
2785 (description
2786 "Itsdangerous provides various helpers to pass trusted data to untrusted
2787environments and back.")
f210e944 2788 (license license:bsd-3)))
ec5dbb5c
DT
2789
2790(define-public python2-itsdangerous
f210e944 2791 (package-with-python2 python-itsdangerous))
5731cae3 2792
8d12be1e
RW
2793(define-public python-pyyaml
2794 (package
2795 (name "python-pyyaml")
bf5e4bc4 2796 (version "3.12")
8d12be1e
RW
2797 (source
2798 (origin
2799 (method url-fetch)
bf5e4bc4 2800 (uri (pypi-uri "PyYAML" version))
8d12be1e
RW
2801 (sha256
2802 (base32
bf5e4bc4 2803 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
8d12be1e
RW
2804 (build-system python-build-system)
2805 (inputs
2806 `(("libyaml" ,libyaml)))
8d12be1e
RW
2807 (home-page "http://pyyaml.org/wiki/PyYAML")
2808 (synopsis "YAML parser and emitter for Python")
2809 (description
2810 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2811complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2812API, and sensible error messages. PyYAML supports standard YAML tags and
2813provides Python-specific tags that allow to represent an arbitrary Python
2814object.")
2815 (license license:expat)))
2816
2817(define-public python2-pyyaml
2818 (package-with-python2 python-pyyaml))
2819
5731cae3
DT
2820(define-public python-virtualenv
2821 (package
2822 (name "python-virtualenv")
58d04dba 2823 (version "15.0.3")
5731cae3
DT
2824 (source
2825 (origin
2826 (method url-fetch)
17804240 2827 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2828 (sha256
2829 (base32
58d04dba 2830 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2831 (build-system python-build-system)
17804240
EF
2832 (arguments
2833 `(#:phases
2834 (modify-phases %standard-phases
58d04dba
RW
2835 (replace 'check
2836 (lambda _
2837 ;; Disable failing test. See upstream bug report
2838 ;; https://github.com/pypa/virtualenv/issues/957
2839 (substitute* "tests/test_virtualenv.py"
2840 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2841 (zero? (system* "py.test")))))))
e7881f3d 2842 (native-inputs
f3b98f4f 2843 `(("python-mock" ,python-mock)
17804240 2844 ("python-pytest" ,python-pytest)))
5731cae3
DT
2845 (home-page "https://virtualenv.pypa.io/")
2846 (synopsis "Virtual Python environment builder")
2847 (description
2848 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2849 (license license:expat)))
5731cae3
DT
2850
2851(define-public python2-virtualenv
2852 (package-with-python2 python-virtualenv))
8176d4d5
DT
2853
2854(define-public python-markupsafe
2855 (package
2856 (name "python-markupsafe")
2857 (version "0.23")
2858 (source
2859 (origin
2860 (method url-fetch)
2861 (uri (string-append
2862 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2863 version ".tar.gz"))
2864 (sha256
2865 (base32
2866 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2867 (build-system python-build-system)
8176d4d5
DT
2868 (home-page "http://github.com/mitsuhiko/markupsafe")
2869 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2870 (description
2871 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2872for Python.")
3f641af0 2873 (license license:bsd-3)))
8176d4d5
DT
2874
2875(define-public python2-markupsafe
2876 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2877
2878(define-public python-jinja2
2879 (package
2880 (name "python-jinja2")
e98149b3 2881 (version "2.8")
fe34f0d1
DT
2882 (source
2883 (origin
2884 (method url-fetch)
e98149b3 2885 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2886 (sha256
2887 (base32
e98149b3 2888 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1 2889 (build-system python-build-system)
f22efa01 2890 (propagated-inputs
f3b98f4f 2891 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
2892 (home-page "http://jinja.pocoo.org/")
2893 (synopsis "Python template engine")
2894 (description
2895 "Jinja2 is a small but fast and easy to use stand-alone template engine
2896written in pure Python.")
3f641af0 2897 (license license:bsd-3)))
fe34f0d1
DT
2898
2899(define-public python2-jinja2
2900 (package-with-python2 python-jinja2))
3580ab8b 2901
f7d17ac7
EE
2902(define-public python-pystache
2903 (package
2904 (name "python-pystache")
2905 (version "0.5.4")
2906 (source (origin
2907 (method url-fetch)
2908 (uri (pypi-uri "pystache" version))
2909 (sha256
2910 (base32
2911 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2912 (build-system python-build-system)
8bd5164b
MB
2913 (arguments
2914 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
f7d17ac7
EE
2915 (home-page "http://defunkt.io/pystache/")
2916 (synopsis "Python logic-less template engine")
2917 (description
2918 "Pystache is a Python implementation of the framework agnostic,
2919logic-free templating system Mustache.")
8bd5164b
MB
2920 (license license:expat)
2921 (properties `((python2-variant . ,(delay python2-pystache))))))
f7d17ac7
EE
2922
2923(define-public python2-pystache
8bd5164b
MB
2924 (package (inherit (package-with-python2
2925 (strip-python2-variant python-pystache)))
2926 (arguments
2927 `(#:python ,python-2
2928 #:phases
2929 (modify-phases %standard-phases
2930 (replace 'check
2931 (lambda _
2932 (zero? (system* "python" "test_pystache.py")))))))))
f7d17ac7 2933
1285119b
RW
2934(define-public python-joblib
2935 (package
2936 (name "python-joblib")
f34ef331 2937 (version "0.10.3")
1285119b
RW
2938 (source (origin
2939 (method url-fetch)
f34ef331 2940 (uri (pypi-uri "joblib" version))
1285119b
RW
2941 (sha256
2942 (base32
6aa5f1ca
HG
2943 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2944 (modules '((guix build utils)))
2945 (snippet
2946 '(begin
2947 ;; Remove pre-compiled .pyc files from source.
2948 (for-each delete-file-recursively
2949 (find-files "." "__pycache__" #:directories? #t))
2950 (for-each delete-file (find-files "." "\\.pyc$"))
2951 #t))))
1285119b 2952 (build-system python-build-system)
a8dd960a
RW
2953 (arguments
2954 `(#:phases
2955 (modify-phases %standard-phases
2956 (add-before 'check 'disable-failing-tests
2957 (lambda _
2958 ;; This numpydoc tests fails for unknown reasons
2959 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2960 ;; This numpydoc test depends on matplotlib, which is not a
2961 ;; required input.
2962 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2963 ;; These tests fail to execute sys.executable
2964 (substitute* "joblib/test/test_parallel.py"
2965 (("import nose" line)
2966 (string-append "from nose.plugins.skip import SkipTest\n" line))
2967 (("def test_nested_parallel_warnings" line)
2968 (string-append "@SkipTest\n" line))
2969 (("def test_parallel_with_interactively_defined_functions" line)
2970 (string-append "@SkipTest\n" line)))
2971 #t)))))
f052ec9a 2972 ;; Provide nose to enable tests command
1285119b 2973 (native-inputs
f3b98f4f 2974 `(("python-nose" ,python-nose)
f34ef331
RW
2975 ("python-sphinx" ,python-sphinx)
2976 ("python-docutils" ,python-docutils)
2977 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
2978 (home-page "http://pythonhosted.org/joblib/")
2979 (synopsis "Using Python functions as pipeline jobs")
2980 (description
2981 "Joblib is a set of tools to provide lightweight pipelining in Python.
2982In particular, joblib offers: transparent disk-caching of the output values
2983and lazy re-evaluation (memoize pattern), easy simple parallel computing
2984logging and tracing of the execution.")
3f641af0 2985 (license license:bsd-3)))
1285119b
RW
2986
2987(define-public python2-joblib
2988 (package-with-python2 python-joblib))
2989
3580ab8b
DT
2990(define-public python-docutils
2991 (package
2992 (name "python-docutils")
00e0ca7c 2993 (version "0.13.1")
3580ab8b
DT
2994 (source
2995 (origin
2996 (method url-fetch)
00e0ca7c 2997 (uri (pypi-uri "docutils" version))
3580ab8b
DT
2998 (sha256
2999 (base32
00e0ca7c 3000 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 3001 (build-system python-build-system)
3580ab8b
DT
3002 (arguments
3003 '(#:tests? #f)) ; no setup.py test command
3004 (home-page "http://docutils.sourceforge.net/")
3005 (synopsis "Python Documentation Utilities")
3006 (description
3007 "Docutils is a modular system for processing documentation into useful
3008formats, such as HTML, XML, and LaTeX. For input Docutils supports
3009reStructuredText.")
3010 ;; Most of the source code is public domain, but some source files are
3011 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 3012 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
3013
3014(define-public python2-docutils
3015 (package-with-python2 python-docutils))
fb35b7c0
DT
3016
3017(define-public python-pygments
3018 (package
3019 (name "python-pygments")
7d2e758d 3020 (version "2.1.3")
fb35b7c0
DT
3021 (source
3022 (origin
3023 (method url-fetch)
9f442285 3024 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
3025 (sha256
3026 (base32
7d2e758d 3027 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
fb35b7c0 3028 (build-system python-build-system)
995cb99e
MB
3029 (arguments
3030 ;; FIXME: Tests require sphinx, which depends on this.
3031 '(#:tests? #f))
fb35b7c0
DT
3032 (home-page "http://pygments.org/")
3033 (synopsis "Syntax highlighting")
3034 (description
3035 "Pygments is a syntax highlighting package written in Python.")
3f641af0 3036 (license license:bsd-2)))
fb35b7c0
DT
3037
3038(define-public python2-pygments
3039 (package-with-python2 python-pygments))
9dd6078d
DT
3040
3041(define-public python-sphinx
3042 (package
3043 (name "python-sphinx")
c227458a 3044 (version "1.5.1")
9dd6078d
DT
3045 (source
3046 (origin
3047 (method url-fetch)
9a8acd00 3048 (uri (pypi-uri "Sphinx" version))
9dd6078d
DT
3049 (sha256
3050 (base32
c227458a 3051 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
9dd6078d 3052 (build-system python-build-system)
03cb5f9e 3053 (arguments
c227458a
DM
3054 `(#:phases
3055 (modify-phases %standard-phases
3056 (replace 'check
3057 (lambda _
3058 ;; Requires Internet access.
3059 (delete-file "tests/test_build_linkcheck.py")
3060 (zero? (system* "make" "test")))))))
f22efa01 3061 (propagated-inputs
9a8acd00
DM
3062 `(("python-imagesize" ,python-imagesize)
3063 ("python-sphinx-alabaster-theme"
3064 ,python-sphinx-alabaster-theme)
3065 ("python-babel" ,python-babel)
3066 ("python-snowballstemmer" ,python-snowballstemmer)
9dd6078d 3067 ("python-docutils" ,python-docutils)
9a8acd00
DM
3068 ("python-jinja2" ,python-jinja2)
3069 ("python-pygments" ,python-pygments)
a10b9810 3070 ("python-requests" ,python-requests)
9a8acd00 3071 ("python-six" ,python-six)))
c227458a
DM
3072 (native-inputs
3073 `(("graphviz" ,graphviz)
3074 ("python-html5lib" ,python-html5lib)
3075 ("python-mock" ,python-mock)
a10b9810 3076 ("python-nose" ,python-nose)))
9dd6078d
DT
3077 (home-page "http://sphinx-doc.org/")
3078 (synopsis "Python documentation generator")
3079 (description "Sphinx is a tool that makes it easy to create documentation
3080for Python projects or other documents consisting of multiple reStructuredText
3081sources.")
9a8acd00
DM
3082 (license license:bsd-3)
3083 (properties `((python2-variant . ,(delay python2-sphinx))))))
9dd6078d
DT
3084
3085(define-public python2-sphinx
9a8acd00
DM
3086 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3087 (package
3088 (inherit base)
3089 (native-inputs `(("python2-mock" ,python2-mock)
c227458a 3090 ("python2-enum34" ,python2-enum34)
9a8acd00
DM
3091 ,@(package-native-inputs base)))
3092 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3093 ,@(package-propagated-inputs base))))))
6888830b 3094
ad320b20
RW
3095(define-public python-sphinx-rtd-theme
3096 (package
3097 (name "python-sphinx-rtd-theme")
3098 (version "0.1.6")
3099 (source
3100 (origin
3101 (method url-fetch)
3102 (uri (string-append "https://pypi.python.org/packages/source/s/"
3103 "sphinx_rtd_theme/sphinx_rtd_theme-"
3104 version ".tar.gz"))
3105 (sha256
3106 (base32
3107 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
3108 (build-system python-build-system)
9893cff3 3109 (arguments '(#:tests? #f)) ; No tests.
9d3a15b4
LF
3110 (propagated-inputs
3111 `(("python-sphinx" ,python-sphinx)))
ad320b20
RW
3112 (home-page "https://github.com/snide/sphinx_rtd_theme/")
3113 (synopsis "ReadTheDocs.org theme for Sphinx")
3114 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 3115 (license license:expat)))
ad320b20
RW
3116
3117(define-public python2-sphinx-rtd-theme
3118 (package-with-python2 python-sphinx-rtd-theme))
3119
fe94cf0c
HG
3120(define-public python-rst.linker
3121 (package
3122 (name "python-rst.linker")
3123 (version "1.7")
3124 (source
3125 (origin
3126 (method url-fetch)
3127 (uri (pypi-uri "rst.linker" version))
3128 (sha256
3129 (base32
3130 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
3131 (build-system python-build-system)
3132 (propagated-inputs
22d7360b 3133 `(("python-dateutil" ,python-dateutil)
fe94cf0c
HG
3134 ("python-six" ,python-six)))
3135 (native-inputs
3136 `(("python-setuptools-scm" ,python-setuptools-scm)))
3137 ;; Test would require path.py, which would introduce a cyclic dependence.
3138 (arguments `(#:tests? #f))
3139 ;; Note: As of version 1.7 the documentation is not worth building.
3140 (home-page "https://github.com/jaraco/rst.linker")
3141 (synopsis "Sphinx plugin to add links and timestamps")
3142 (description "rst.linker allows to automatically replace text by a
3143reStructuredText external reference or timestamps. It's primary purpose is to
3144augment the changelog, but it can be used for other documents, too.")
3145 (license license:expat)))
3146
3147(define-public python2-rst.linker
3148 (package-with-python2 python-rst.linker))
3149
f4de5b3b
CAW
3150(define-public python-feedgenerator
3151 (package
3152 (name "python-feedgenerator")
f0412aa2 3153 (version "1.8")
f4de5b3b 3154 (source
f4de5b3b 3155 (origin
f0412aa2
EF
3156 (method url-fetch)
3157 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
3158 (sha256
3159 (base32
7c88bcf4
HG
3160 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))
3161 (modules '((guix build utils)))
3162 (snippet
3163 '(begin
3164 ;; Remove pre-compiled .pyc files from source.
3165 (for-each delete-file-recursively
3166 (find-files "." "__pycache__" #:directories? #t))
3167 (for-each delete-file (find-files "." "\\.pyc$"))
3168 #t))))
f4de5b3b 3169 (build-system python-build-system)
dae73d9b 3170 (propagated-inputs
f3b98f4f 3171 `(("python-pytz" ,python-pytz)
f4de5b3b 3172 ("python-six" ,python-six)))
f0412aa2 3173 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3174 (synopsis
3175 "Standalone version of Django's Atom/RSS feed generator")
3176 (description
3177 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3178which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3179 (license license:bsd-3)))
f4de5b3b
CAW
3180
3181(define-public python2-feedgenerator
3182 (package-with-python2 python-feedgenerator))
3183
59ad30e3
CAW
3184(define-public python-blinker
3185 (package
3186 (name "python-blinker")
7fb9ff4d 3187 (version "1.4")
59ad30e3
CAW
3188 (source
3189 (origin
3190 (method url-fetch)
7fb9ff4d 3191 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3192 (sha256
3193 (base32
7fb9ff4d 3194 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3195 (build-system python-build-system)
59ad30e3
CAW
3196 (home-page "http://pythonhosted.org/blinker/")
3197 (synopsis "Fast, simple object-to-object and broadcast signaling")
3198 (description
3199 "Blinker provides a fast dispatching system that allows any number of
3200interested parties to subscribe to events, or \"signals\".")
3201 (license license:expat)))
3202
3203(define-public python2-blinker
3204 (package-with-python2 python-blinker))
3205
b8050e71
CAW
3206(define-public pelican
3207 (package
3208 (name "pelican")
11f97c27 3209 (version "3.6.3")
b8050e71
CAW
3210 (source
3211 (origin
3212 (method url-fetch)
11f97c27 3213 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3214 (sha256
3215 (base32
11f97c27 3216 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3217 (build-system python-build-system)
f22efa01 3218 (propagated-inputs
b8050e71
CAW
3219 `(("python-feedgenerator" ,python-feedgenerator)
3220 ("python-jinja2" ,python-jinja2)
3221 ("python-pygments" ,python-pygments)
3222 ("python-docutils" ,python-docutils)
3223 ("python-pytz" ,python-pytz)
3224 ("python-blinker" ,python-blinker)
3225 ("python-unidecode" ,python-unidecode)
3226 ("python-six" ,python-six)
22d7360b 3227 ("python-dateutil" ,python-dateutil)))
b8050e71
CAW
3228 (home-page "http://getpelican.com/")
3229 (arguments
3230 `(;; XXX Requires a lot more packages to do unit tests :P
3231 #:tests? #f
3232 #:phases (modify-phases %standard-phases
3233 (add-before
3234 'install 'adjust-requires
3235 ;; Since feedgenerator is installed from git, it doesn't
3236 ;; conform to the version requirements.
3237 ;;
3238 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3239 ;; version requirement so setuptools doesn't get confused.
3240 (lambda _
3241 (substitute* "setup.py"
3242 (("['\"]feedgenerator.*?['\"]")
3243 "'feedgenerator'")))))))
3244 (synopsis "Python-based static site publishing system")
3245 (description
3246 "Pelican is a tool to generate a static blog from reStructuredText,
3247Markdown input files, and more. Pelican uses Jinja2 for templating
3248and is very extensible.")
3f641af0 3249 (license license:agpl3+)))
b8050e71 3250
240ca4aa
RW
3251(define-public python-scikit-learn
3252 (package
3253 (name "python-scikit-learn")
8e401ab6 3254 (version "0.18.1")
240ca4aa
RW
3255 (source
3256 (origin
3257 (method url-fetch)
3258 (uri (string-append
3259 "https://github.com/scikit-learn/scikit-learn/archive/"
3260 version ".tar.gz"))
7e21b9fb 3261 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3262 (sha256
3263 (base32
8e401ab6 3264 "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
240ca4aa
RW
3265 (build-system python-build-system)
3266 (arguments
3267 `(#:phases
4d25c486
MB
3268 (modify-phases %standard-phases
3269 (delete 'check)
3270 (add-after 'install 'check
3271 ;; Running tests from the source directory requires
3272 ;; an "inplace" build with paths relative to CWD.
3273 ;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
3274 ;; Use the installed version instead.
3275 (lambda* (#:key inputs outputs #:allow-other-keys)
3276 (add-installed-pythonpath inputs outputs)
3277 ;; some tests require access to "$HOME"
3278 (setenv "HOME" "/tmp")
3279 ;; Step out of the source directory just to be sure.
3280 (chdir "..")
3281 (zero? (system* "nosetests" "-v" "sklearn")))))))
240ca4aa 3282 (inputs
328bb95d
HG
3283 `(("openblas" ,openblas)))
3284 (native-inputs
8e401ab6
RW
3285 `(("python-nose" ,python-nose)
3286 ("python-cython" ,python-cython)))
240ca4aa
RW
3287 (propagated-inputs
3288 `(("python-numpy" ,python-numpy)
3289 ("python-scipy" ,python-scipy)))
3290 (home-page "http://scikit-learn.org/")
3291 (synopsis "Machine Learning in Python")
3292 (description
3293 "Scikit-learn provides simple and efficient tools for data
3294mining and data analysis.")
1b5241c5 3295 (license license:bsd-3)))
240ca4aa
RW
3296
3297(define-public python2-scikit-learn
1b5241c5 3298 (package-with-python2 python-scikit-learn))
240ca4aa 3299
12f8f9bb
RW
3300(define-public python-scikit-image
3301 (package
3302 (name "python-scikit-image")
3303 (version "0.11.3")
3304 (source
3305 (origin
3306 (method url-fetch)
3307 (uri (string-append
3308 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3309 version ".tar.gz"))
3310 (sha256
3311 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3312 (build-system python-build-system)
9026e689
MB
3313 (arguments
3314 ;; TODO: Some tests require running X11 server. Disable them?
3315 '(#:tests? #f))
b83e2333 3316 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3317 (propagated-inputs
3318 `(("python-matplotlib" ,python-matplotlib)
3319 ("python-networkx" ,python-networkx)
12f8f9bb 3320 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3321 ("python-pillow" ,python-pillow)))
3322 (native-inputs
b83e2333
HG
3323 `(("python-numpy" ,python-numpy)
3324 ("python-cython" ,python-cython)
3325 ("python-six" ,python-six)))
12f8f9bb
RW
3326 (home-page "http://scikit-image.org/")
3327 (synopsis "Image processing in Python")
3328 (description
e881752c 3329 "Scikit-image is a collection of algorithms for image processing.")
12733594 3330 (license license:bsd-3)))
12f8f9bb
RW
3331
3332(define-public python2-scikit-image
12733594 3333 (package-with-python2 python-scikit-image))
12f8f9bb 3334
5394a6a6
RW
3335(define-public python-redis
3336 (package
3337 (name "python-redis")
911a8faf 3338 (version "2.10.5")
5394a6a6
RW
3339 (source
3340 (origin
3341 (method url-fetch)
911a8faf 3342 (uri (pypi-uri "redis" version))
5394a6a6 3343 (sha256
911a8faf 3344 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
5394a6a6
RW
3345 (build-system python-build-system)
3346 ;; Tests require a running Redis server
3347 (arguments '(#:tests? #f))
cf8124b0
HG
3348 ;; As long as we are not running test, we do not need this input :-)
3349 ;;(native-inputs
3350 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3351 (home-page "https://github.com/andymccurdy/redis-py")
3352 (synopsis "Redis Python client")
3353 (description
3354 "This package provides a Python interface to the Redis key-value store.")
3355 (license license:expat)))
3356
3357(define-public python2-redis
3358 (package-with-python2 python-redis))
3359
748cef5b
RW
3360(define-public python-rq
3361 (package
3362 (name "python-rq")
3363 (version "0.5.2")
3364 (source
3365 (origin
3366 (method url-fetch)
3367 (uri (string-append
3368 "https://pypi.python.org/packages/source/r/rq/rq-"
3369 version ".tar.gz"))
3370 (sha256
3371 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3372 (build-system python-build-system)
3373 (propagated-inputs
3374 `(("python-click" ,python-click)
3375 ("python-redis" ,python-redis)))
748cef5b
RW
3376 (home-page "http://python-rq.org/")
3377 (synopsis "Simple job queues for Python")
3378 (description
3379 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3380processing them in the background with workers. It is backed by Redis and it
3381is designed to have a low barrier to entry.")
3f641af0 3382 (license license:bsd-2)))
748cef5b
RW
3383
3384(define-public python2-rq
3385 (package-with-python2 python-rq))
3386
6888830b
FB
3387(define-public python-cython
3388 (package
3389 (name "python-cython")
dd22efef 3390 (version "0.24.1")
6888830b
FB
3391 (source
3392 (origin
3393 (method url-fetch)
56918e26 3394 (uri (pypi-uri "Cython" version))
6888830b
FB
3395 (sha256
3396 (base32
dd22efef 3397 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3398 (build-system python-build-system)
3399 ;; we need the full python package and not just the python-wrapper
3400 ;; because we need libpython3.3m.so
3401 (inputs
3402 `(("python" ,python)))
3403 (arguments
3404 `(#:phases
b92f651b
EF
3405 (modify-phases %standard-phases
3406 (add-before 'check 'set-HOME
3407 ;; some tests require access to "$HOME/.cython"
3408 (lambda _ (setenv "HOME" "/tmp")))
3409 (replace 'check
3410 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3411 (home-page "http://cython.org/")
3412 (synopsis "C extensions for Python")
3413 (description "Cython is an optimising static compiler for both the Python
3414programming language and the extended Cython programming language. It makes
3415writing C extensions for Python as easy as Python itself.")
3f641af0 3416 (license license:asl2.0)
48b311b1 3417 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3418
3419(define-public python2-cython
48b311b1
LC
3420 (package (inherit (package-with-python2
3421 (strip-python2-variant python-cython)))
6888830b
FB
3422 (name "python2-cython")
3423 (inputs
3424 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3425
ee5fb7ee
AV
3426;; The RPython toolchain currently does not support Python 3.
3427(define-public python2-rpython
3428 (package
3429 (name "python2-rpython")
3430 (version "0.1.4")
3431 (source
3432 (origin
3433 (method url-fetch)
3434 (uri (pypi-uri "rpython" version))
3435 (sha256
3436 (base32
3437 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3438 (build-system python-build-system)
3439 (arguments `(#:python ,python-2))
3440 (native-inputs
f3b98f4f 3441 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3442 (home-page "https://rpython.readthedocs.org")
3443 (synopsis "Framework for implementing interpreters and virtual machines")
3444 (description "RPython is a translation and support framework for
3445producing implementations of dynamic languages, emphasizing a clean separation
3446between language specification and implementation aspects.")
3447 (license license:expat)))
3448
7ccb71e0 3449(define-public python-numpy
0da98533 3450 (package
7ccb71e0
TD
3451 (name "python-numpy")
3452 (version "1.12.0")
0da98533
FB
3453 (source
3454 (origin
3455 (method url-fetch)
7ccb71e0
TD
3456 (uri (string-append
3457 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3458 (file-name (string-append name "-" version ".tar.gz"))
0da98533
FB
3459 (sha256
3460 (base32
7ccb71e0 3461 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
0da98533
FB
3462 (build-system python-build-system)
3463 (inputs
328bb95d 3464 `(("openblas" ,openblas)
cba256f8 3465 ("lapack" ,lapack)))
0da98533 3466 (native-inputs
7ccb71e0
TD
3467 `(("python-cython" ,python-cython)
3468 ("python-nose" ,python-nose)
2efabc55 3469 ("gfortran" ,gfortran)))
0da98533
FB
3470 (arguments
3471 `(#:phases
2efabc55
HG
3472 (modify-phases %standard-phases
3473 (add-before 'build 'set-environment-variables
3474 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3475 (call-with-output-file "site.cfg"
3476 (lambda (port)
cba256f8
RW
3477 (format port
3478 "[openblas]
dbdfe515
RW
3479libraries = openblas
3480library_dirs = ~a/lib
3481include_dirs = ~a/include
cba256f8 3482
2efabc55
HG
3483# backslash-n to make emacs happy
3484\n[lapack]
cba256f8
RW
3485lapack_libs = lapack
3486library_dirs = ~a/lib
3487include_dirs = ~a/include
3488"
3489 (assoc-ref inputs "openblas")
3490 (assoc-ref inputs "openblas")
3491 (assoc-ref inputs "lapack")
3492 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3493 ;; Use "gcc" executable, not "cc".
3494 (substitute* "numpy/distutils/system_info.py"
3495 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3496 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3497 #t))
6a843168
FB
3498 ;; Tests can only be run after the library has been installed and not
3499 ;; within the source directory.
2efabc55
HG
3500 (delete 'check)
3501 (add-after 'install 'check
3502 (lambda* (#:key outputs inputs #:allow-other-keys)
3503 ;; Make installed package available for running the tests
3504 (add-installed-pythonpath inputs outputs)
6a843168 3505 (with-directory-excursion "/tmp"
89b5c60e 3506 (zero? (system* "python" "-c"
2efabc55 3507 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3508 (home-page "http://www.numpy.org/")
3509 (synopsis "Fundamental package for scientific computing with Python")
3510 (description "NumPy is the fundamental package for scientific computing
e881752c 3511with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3512object, sophisticated (broadcasting) functions, tools for integrating C/C++
3513and Fortran code, useful linear algebra, Fourier transform, and random number
3514capabilities.")
3f641af0 3515 (license license:bsd-3)))
0da98533 3516
7ccb71e0
TD
3517(define-public python2-numpy
3518 (package-with-python2 python-numpy))
15bfe6d6 3519
460fccd4 3520(define-public python-munch
3521 (package
3522 (name "python-munch")
3523 (version "2.0.4")
3524 (source
3525 (origin
3526 (method url-fetch)
3527 (uri (pypi-uri "munch" version))
3528 (sha256
3529 (base32
3530 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3531 (build-system python-build-system)
3532 (home-page "https://github.com/Infinidat/munch")
3533 (synopsis "Dot-accessible dictionary")
3534 (description "Munch is a dot-accessible dictionary similar to JavaScript
3535objects.")
3536 (license license:expat)))
3537
3538(define-public python2-munch
3539 (package-with-python2 python-munch))
3540
3a1bfe18
RW
3541(define-public python2-fastlmm
3542 (package
3543 (name "python2-fastlmm")
154d0016 3544 (version "0.2.21")
3a1bfe18
RW
3545 (source
3546 (origin
3547 (method url-fetch)
b074e7d4 3548 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3549 (sha256
3550 (base32
154d0016 3551 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3552 (build-system python-build-system)
3553 (arguments
3554 `(#:python ,python-2)) ; only Python 2.7 is supported
3555 (propagated-inputs
3556 `(("python2-numpy" ,python2-numpy)
3557 ("python2-scipy" ,python2-scipy)
3558 ("python2-matplotlib" ,python2-matplotlib)
3559 ("python2-pandas" ,python2-pandas)
3560 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3561 ("python2-pysnptools" ,python2-pysnptools)))
3562 (native-inputs
3563 `(("unzip" ,unzip)
2efabc55 3564 ("python2-cython" ,python2-cython)
1b6d7c3f
MB
3565 ("python2-mock" ,python2-mock)
3566 ("python2-nose" ,python2-nose)))
3a1bfe18
RW
3567 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3568 (synopsis "Perform genome-wide association studies on large data sets")
3569 (description
3570 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3571Models, is a program for performing both single-SNP and SNP-set genome-wide
3572association studies (GWAS) on extremely large data sets.")
3f641af0 3573 (license license:asl2.0)))
3a1bfe18 3574
7ccb71e0
TD
3575(define-public python-numpy-documentation
3576 (package
3577 (name "python-numpy-documentation")
3578 (version (package-version python-numpy))
3579 (source (package-source python-numpy))
3580 (build-system python-build-system)
2ee8869a 3581 (native-inputs
7ccb71e0
TD
3582 `(("python-matplotlib" ,python-matplotlib)
3583 ("python-numpy" ,python-numpy)
3584 ("pkg-config" ,pkg-config)
2efabc55
HG
3585 ("python-sphinx" ,python-sphinx)
3586 ("python-numpydoc" ,python-numpydoc)
2ee8869a
FB
3587 ("texlive" ,texlive)
3588 ("texinfo" ,texinfo)
3589 ("perl" ,perl)
7ccb71e0
TD
3590 ("scipy-sphinx-theme"
3591 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3592 (method git-fetch)
3593 (uri (git-reference
3594 (url "https://github.com/scipy/scipy-sphinx-theme.git")
67416769 3595 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
7ccb71e0
TD
3596 (sha256
3597 (base32
67416769 3598 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
7ccb71e0 3599 ,@(package-native-inputs python-numpy)))
2ee8869a 3600 (arguments
7ccb71e0
TD
3601 `(#:tests? #f ; we're only generating the documentation
3602 #:phases
3603 (modify-phases %standard-phases
3604 (delete 'build)
3605 (replace 'install
3606 (lambda* (#:key inputs outputs #:allow-other-keys)
3607 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3608 (doc (string-append
3609 data "/doc/" ,name "-"
3610 ,(package-version python-numpy)))
3611 (info-reader (string-append data "/info"))
3612 (html (string-append doc "/html"))
3613 (scipy-sphinx-theme "scipy-sphinx-theme")
3614 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3615 (pyver ,(string-append "PYVER=")))
3616 (with-directory-excursion "doc"
3617 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3618 (mkdir-p html)
3619 (system* "make" "html" pyver)
3620 (system* "make" "latex" "PAPER=a4" pyver)
3621 (system* "make" "-C" "build/latex"
3622 "all-pdf" "PAPER=a4" pyver)
3623 ;; FIXME: Generation of the info file fails.
3624 ;; (system* "make" "info" pyver)
3625 ;; (mkdir-p info)
3626 ;; (copy-file "build/texinfo/numpy.info"
3627 ;; (string-append info "/numpy.info"))
3628 (for-each (lambda (file)
3629 (copy-file (string-append "build/latex" file)
3630 (string-append doc file)))
3631 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3632 (with-directory-excursion "build/html"
3633 (for-each (lambda (file)
3634 (let* ((dir (dirname file))
3635 (tgt-dir (string-append html "/" dir)))
3636 (unless (equal? "." dir)
3637 (mkdir-p tgt-dir))
3638 (install-file file html)))
3639 (find-files "." ".*")))))
3640 #t)))))
3641 (home-page (package-home-page python-numpy))
3642 (synopsis "Documentation for the python-numpy package")
3643 (description (package-description python-numpy))
3644 (license (package-license python-numpy))))
2ee8869a 3645
7ccb71e0
TD
3646(define-public python2-numpy-documentation
3647 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
3648 (package
3649 (inherit numpy-documentation)
3650 (native-inputs `(("python2-functools32" ,python2-functools32)
3651 ,@(package-native-inputs numpy-documentation))))))
2ee8869a 3652
0151a8df 3653(define-public python-pygit2
3654 (package
3655 (name "python-pygit2")
022c9772 3656 (version "0.25.0")
0151a8df 3657 (source
3658 (origin
3659 (method url-fetch)
3660 (uri (pypi-uri "pygit2" version))
3661 (sha256
3662 (base32
bb6043fe
MB
3663 "0wf5rp0fvrw7j3j18dvwjq6xqlbm611wd55aphrfpps0v1gxh3ny"))
3664 (patches
3665 (search-patches "python-pygit2-disable-network-tests.patch"))))
0151a8df 3666 (build-system python-build-system)
3667 (propagated-inputs
3668 `(("python-six" ,python-six)
3669 ("python-cffi" ,python-cffi)
3670 ("libgit2" ,libgit2)
3671 ("python-tox" ,python-tox)))
3672 (home-page "https://github.com/libgit2/pygit2")
3673 (synopsis "Python bindings for libgit2")
3674 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3675library, libgit2 implements Git plumbing.")
3676 ;; GPL2.0 only, with linking exception.
3677 (license license:gpl2)))
3678
3679(define-public python2-pygit2
3680 (package-with-python2 python-pygit2))
3681
15bfe6d6
FB
3682(define-public python-pyparsing
3683 (package
3684 (name "python-pyparsing")
e0669289 3685 (version "2.0.3")
15bfe6d6
FB
3686 (source
3687 (origin
3688 (method url-fetch)
de67e922
LF
3689 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3690 "/pyparsing-" version
15bfe6d6
FB
3691 "/pyparsing-" version ".tar.gz"))
3692 (sha256
3693 (base32
e0669289 3694 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3695 (build-system python-build-system)
3696 (outputs '("out" "doc"))
3697 (arguments
3698 `(#:tests? #f ; no test target
3699 #:modules ((guix build python-build-system)
3700 (guix build utils))
3701 #:phases
3702 (alist-cons-after
3703 'install 'install-doc
3704 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3705 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3706 "/share/doc/" ,name "-" ,version))
3707 (html-doc (string-append doc "/html"))
3708 (examples (string-append doc "/examples")))
3709 (mkdir-p html-doc)
3710 (mkdir-p examples)
89b5c60e 3711 (for-each
15bfe6d6 3712 (lambda (dir tgt)
89b5c60e 3713 (map (lambda (file)
96c46210 3714 (install-file file tgt))
15bfe6d6
FB
3715 (find-files dir ".*")))
3716 (list "docs" "htmldoc" "examples")
3717 (list doc html-doc examples))))
3718 %standard-phases)))
3719 (home-page "http://pyparsing.wikispaces.com")
3720 (synopsis "Python parsing class library")
3721 (description
3722 "The pyparsing module is an alternative approach to creating and
3723executing simple grammars, vs. the traditional lex/yacc approach, or the use
3724of regular expressions. The pyparsing module provides a library of classes
3725that client code uses to construct the grammar directly in Python code.")
bd3fa666 3726 (license license:expat)))
15bfe6d6
FB
3727
3728(define-public python2-pyparsing
3729 (package-with-python2 python-pyparsing))
3730
ec00de35
FB
3731(define-public python-numpydoc
3732 (package
3733 (name "python-numpydoc")
3734 (version "0.5")
3735 (source
3736 (origin
3737 (method url-fetch)
89b5c60e 3738 (uri (string-append
ec00de35
FB
3739 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3740 version ".tar.gz"))
3741 (sha256
3742 (base32
5e4d8f67
AE
3743 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3744 (modules '((guix build utils)))
3745 (snippet
3746 '(begin
3747 ;; Drop a test requiring matplotlib, which we cannot add as an
3748 ;; input since it would create a circular dependency: Extend the
3749 ;; test for Python 3, where it is already dropped, to Python 2.
3750 (substitute* "numpydoc/tests/test_plot_directive.py"
3751 (("3") "2"))))))
ec00de35 3752 (build-system python-build-system)
fe4a8da4 3753 (propagated-inputs
213d1745
HG
3754 `(("python-sphinx" ,python-sphinx)))
3755 (native-inputs
3756 `(("python-nose" ,python-nose)))
ec00de35
FB
3757 (home-page "https://pypi.python.org/pypi/numpydoc")
3758 (synopsis
3759 "Numpy's Sphinx extensions")
3760 (description
3761 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3762 (license license:bsd-2)))
ec00de35
FB
3763
3764(define-public python2-numpydoc
5e4d8f67 3765 (package-with-python2 python-numpydoc))
1c65314c 3766
1e656049
RW
3767(define-public python-numexpr
3768 (package
3769 (name "python-numexpr")
2ee57340 3770 (version "2.6.1")
1e656049
RW
3771 (source
3772 (origin
3773 (method url-fetch)
26112c0a 3774 (uri (pypi-uri "numexpr" version))
1e656049
RW
3775 (sha256
3776 (base32
2ee57340 3777 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
3778 (build-system python-build-system)
3779 (arguments `(#:tests? #f)) ; no tests included
3780 (propagated-inputs
3781 `(("python-numpy" ,python-numpy)))
3782 (home-page "https://github.com/pydata/numexpr")
3783 (synopsis "Fast numerical expression evaluator for NumPy")
3784 (description
3785 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3786expressions that operate on arrays are accelerated and use less memory than
3787doing the same calculation in Python. In addition, its multi-threaded
3788capabilities can make use of all your cores, which may accelerate
3789computations, most specially if they are not memory-bounded (e.g. those using
3790transcendental functions).")
f210e944 3791 (license license:expat)))
1e656049
RW
3792
3793(define-public python2-numexpr
f210e944 3794 (package-with-python2 python-numexpr))
1e656049 3795
361d982c
MB
3796(define-public python-cycler
3797 (package
3798 (name "python-cycler")
3799 (version "0.10.0")
3800 (source (origin
3801 (method url-fetch)
3802 (uri (pypi-uri "cycler" version))
3803 (sha256
3804 (base32
3805 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
3806 (build-system python-build-system)
3807 (arguments
3808 ;; XXX: The current version requires 'coveralls' which we don't have.
3809 ;; Enable this for the next release which uses 'python-pytest'.
3810 '(#:tests? #f))
3811 (propagated-inputs
3812 `(("python-six" ,python-six)))
3813 (home-page "http://matplotlib.org/cycler/")
3814 (synopsis "Composable keyword argument iterator")
3815 (description
3816 "When using @code{matplotlib} and plotting more than one line, it is
3817common to want to be able to want to be able to cycle over one or more artist
3818styles; but the plotting logic can quickly become involved.
3819To address this and enable easy cycling over arbitrary @code{kwargs}, the
3820@code{Cycler} class was developed.")
3821 (license license:bsd-3)))
3822
3823(define-public python2-cycler
3824 (package-with-python2 python-cycler))
3825
2aa6d3ae
TD
3826(define-public python-colorspacious
3827 (package
3828 (name "python-colorspacious")
3829 (version "1.1.0")
3830 (source
3831 (origin
3832 (method url-fetch)
3833 (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
3834 version ".tar.gz"))
3835 (file-name (string-append name "-" version))
3836 (sha256
3837 (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
3838 (build-system python-build-system)
3839 (propagated-inputs
3840 `(("python-numpy" ,python-numpy)))
ba062b3e
TD
3841 (native-inputs
3842 `(("python-nose" ,python-nose)))
3843 (arguments
3844 `(#:phases
3845 (modify-phases %standard-phases
3846 (replace 'check
3847 (lambda _
3848 (zero? (system* "nosetests" "--all-modules" "-v" "colorspacious")))))))
2aa6d3ae
TD
3849 (home-page "https://github.com/njsmith/colorspacious")
3850 (synopsis "Python library for colorspace conversions")
3851 (description "@code{colorspacious} is a Python library that lets you
3852convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
3853 (license license:expat)))
3854
3855(define-public python2-colorspacious
3856 (package-with-python2 python-colorspacious))
3857
1c65314c
FB
3858(define-public python-matplotlib
3859 (package
3860 (name "python-matplotlib")
4535a93a 3861 (version "2.0.0")
1c65314c
FB
3862 (source
3863 (origin
3864 (method url-fetch)
4535a93a
TD
3865 (uri (string-append
3866 "https://github.com/matplotlib/matplotlib/archive/v" version ".tar.gz"))
3867 (file-name (string-append name "-" version ".tar.gz"))
1c65314c
FB
3868 (sha256
3869 (base32
4535a93a 3870 "0w3k5m5qb3wsd7yhvmg042xddvligklvcq2visk2c5wnph3hhsln"))))
1c65314c 3871 (build-system python-build-system)
25f9a068 3872 (propagated-inputs ; the following packages are all needed at run time
4535a93a
TD
3873 `(("python-cycler" ,python-cycler)
3874 ("python-pyparsing" ,python-pyparsing)
25f9a068
FB
3875 ("python-pygobject" ,python-pygobject)
3876 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3877 ("python-tkinter" ,python "tk")
22d7360b 3878 ("python-dateutil" ,python-dateutil)
7ccb71e0 3879 ("python-numpy" ,python-numpy)
ca33a3ad
HG
3880 ("python-pillow" ,python-pillow)
3881 ("python-pytz" ,python-pytz)
3882 ("python-six" ,python-six)
25f9a068
FB
3883 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3884 ;; from 'gtk+') provides the required 'typelib' files used by
3885 ;; 'gobject-introspection'. The location of these files is set with the
3886 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3887 ;; is done automatically by a 'native-search-path' procedure. However,
3888 ;; at run-time the user must set this variable as follows:
3889 ;;
3890 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3891 ("gtk+" ,gtk+)
3892 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3893 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3894 ;; object. For this reason we need to import both libraries.
3895 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3896 ("python-pycairo" ,python-pycairo)
3897 ("python-cairocffi" ,python-cairocffi)))
1c65314c 3898 (inputs
ca33a3ad 3899 `(("libpng" ,libpng)
1c65314c
FB
3900 ("imagemagick" ,imagemagick)
3901 ("freetype" ,freetype)
25f9a068
FB
3902 ("cairo" ,cairo)
3903 ("glib" ,glib)
1c65314c 3904 ;; FIXME: Add backends when available.
1c65314c 3905 ;("python-wxpython" ,python-wxpython)
4535a93a 3906 ("python-pyqt" ,python-pyqt)
1bbc659f
FB
3907 ("tcl" ,tcl)
3908 ("tk" ,tk)))
1c65314c
FB
3909 (native-inputs
3910 `(("pkg-config" ,pkg-config)
ca33a3ad 3911 ("python-nose" ,python-nose)
4535a93a 3912 ("python-mock" ,python-mock)))
1c65314c
FB
3913 (arguments
3914 `(#:phases
42b7009a
DM
3915 (modify-phases %standard-phases
3916 (add-before 'build 'configure-environment
3917 (lambda* (#:key outputs inputs #:allow-other-keys)
3918 (let ((cairo (assoc-ref inputs "cairo"))
3919 (gtk+ (assoc-ref inputs "gtk+")))
3920 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3921 ;; has not effect.
3922 (setenv "LD_LIBRARY_PATH"
3923 (string-append cairo "/lib:" gtk+ "/lib"))
3924 (setenv "HOME" (getcwd))
3925 (call-with-output-file "setup.cfg"
3926 (lambda (port)
3927 (format port "[directories]~%
1bbc659f 3928basedirlist = ~a,~a~%
57b7b8cd 3929 [rc_options]~%
1bbc659f 3930backend = TkAgg~%"
4535a93a
TD
3931 (assoc-ref inputs "tcl")
3932 (assoc-ref inputs "tk")))))
3933 #t)))))
3934 (home-page "http://matplotlib.org")
3935 (synopsis "2D plotting library for Python")
3936 (description
3937 "Matplotlib is a Python 2D plotting library which produces publication
3938quality figures in a variety of hardcopy formats and interactive environments
3939across platforms. Matplotlib can be used in Python scripts, the python and
3940ipython shell, web application servers, and six graphical user interface
3941toolkits.")
3942 (license license:psfl)
3943 (properties `((python2-variant . ,(delay python2-matplotlib))))))
3944
3945(define-public python2-matplotlib
3946 (let ((matplotlib (package-with-python2
3947 (strip-python2-variant python-matplotlib))))
3948 (package (inherit matplotlib)
3949 ;; Make sure to use special packages for Python 2 instead
3950 ;; of those automatically rewritten by package-with-python2.
3951 (propagated-inputs
3952 `(("python2-pycairo" ,python2-pycairo)
3953 ("python2-functools32" ,python2-functools32)
3954 ("python2-pygobject-2" ,python2-pygobject-2)
3955 ("python2-subprocess32" ,python2-subprocess32)
3956 ("python2-tkinter" ,python-2 "tk")
3957 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3958 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
3959
3960(define-public python-matplotlib-documentation
3961 (package
3962 (name "python-matplotlib-documentation")
3963 (version (package-version python-matplotlib))
3964 (source (package-source python-matplotlib))
3965 (build-system python-build-system)
3966 (native-inputs
3967 `(("python-matplotlib" ,python-matplotlib)
3968 ("python-colorspacious" ,python-colorspacious)
3969 ("python-sphinx" ,python-sphinx)
3970 ("python-numpydoc" ,python-numpydoc)
3971 ("python-ipython" ,python-ipython)
1eaaea41
TD
3972 ("python-mock" ,python-mock)
3973 ("graphviz" ,graphviz)
4535a93a
TD
3974 ("texlive" ,texlive)
3975 ("texinfo" ,texinfo)
3976 ,@(package-native-inputs python-matplotlib)))
3977 (arguments
3978 `(#:tests? #f ; we're only generating documentation
3979 #:phases
3980 (modify-phases %standard-phases
1eaaea41
TD
3981 (replace 'build
3982 (lambda _
3983 (chdir "doc")
3984 ;; Produce pdf in 'A4' format.
3985 (substitute* "conf.py"
3986 (("latex_paper_size = 'letter'") "")
3987 ;; latex_paper_size is deprecated -> set paper size using
3988 ;; latex_elements
3989 (("latex_elements\\['pointsize'\\] = '11pt'" match)
3990 ;; insert at a point where latex_elements{} is defined:
3991 (string-append match "\nlatex_elements['papersize'] = 'a4paper'")))
3992 (zero? (system* "python" "make.py" "html" "latex" "texinfo"))))
4535a93a 3993 (replace 'install
42b7009a 3994 (lambda* (#:key inputs outputs #:allow-other-keys)
4535a93a 3995 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
1eaaea41 3996 (doc (string-append data "/doc/python-matplotlib-" ,version))
42b7009a
DM
3997 (info (string-append data "/info"))
3998 (html (string-append doc "/html")))
1eaaea41
TD
3999 (mkdir-p html)
4000 (mkdir-p info)
4001 (copy-recursively "build/html" html)
4002 (symlink (string-append html "/_images")
4003 (string-append info "/matplotlib-figures"))
4004 (with-directory-excursion "build/texinfo"
4005 (substitute* "matplotlib.texi"
4006 (("@image\\{([^,]*)" all file)
4007 (string-append "@image{matplotlib-figures/" file)))
18b31516 4008 (symlink (string-append html "/_images")
1eaaea41
TD
4009 "./matplotlib-figures")
4010 (system* "makeinfo" "--no-split"
4011 "-o" "matplotlib.info" "matplotlib.texi"))
4012 (copy-file "build/texinfo/matplotlib.info"
4013 (string-append info "/matplotlib.info"))
4014 (copy-file "build/latex/Matplotlib.pdf"
4015 (string-append doc "/Matplotlib.pdf")))
4535a93a
TD
4016 #t)))))
4017 (home-page (package-home-page python-matplotlib))
4018 (synopsis "Documentation for the python-matplotlib package")
4019 (description (package-description python-matplotlib))
4020 (license (package-license python-matplotlib))))
1c65314c 4021
4535a93a
TD
4022(define-public python2-matplotlib-documentation
4023 (package-with-python2 python-matplotlib-documentation))
94914805 4024
0dde6232
RW
4025(define-public python2-pysnptools
4026 (package
4027 (name "python2-pysnptools")
a800018e 4028 (version "0.3.9")
0dde6232
RW
4029 (source
4030 (origin
4031 (method url-fetch)
3f2e9675 4032 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
4033 (sha256
4034 (base32
a800018e 4035 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
4036 (build-system python-build-system)
4037 (arguments
4038 `(#:python ,python-2)) ; only Python 2.7 is supported
4039 (propagated-inputs
4040 `(("python2-numpy" ,python2-numpy)
4041 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
4042 ("python2-pandas" ,python2-pandas)))
4043 (native-inputs
4044 `(("python2-cython" ,python2-cython)))
0dde6232 4045 (native-inputs
f3b98f4f 4046 `(("unzip" ,unzip)))
0dde6232
RW
4047 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
4048 (synopsis "Library for reading and manipulating genetic data")
4049 (description
4050 "PySnpTools is a library for reading and manipulating genetic data. It
4051can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4052those files. It can also efficiently manipulate ranges of integers using set
4053operators such as union, intersection, and difference.")
3f641af0 4054 (license license:asl2.0)))
0dde6232 4055
c9b1b4f9
RW
4056(define-public python-rpy2
4057 (package
4058 (name "python-rpy2")
ec3bcbc7 4059 (version "2.7.6")
c9b1b4f9
RW
4060 (source
4061 (origin
4062 (method url-fetch)
ec3bcbc7 4063 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
4064 (sha256
4065 (base32
ec3bcbc7 4066 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9 4067 (build-system python-build-system)
444464ec
MB
4068 (arguments
4069 '(#:phases
4070 (modify-phases %standard-phases
4071 (delete 'check)
4072 (add-after 'install 'check
4073 (lambda* (#:key outputs inputs #:allow-other-keys)
4074 ;; It's easier to run tests after install.
4075 ;; Make installed package available for running the tests
4076 (add-installed-pythonpath inputs outputs)
4077 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
482d9591
HG
4078 (propagated-inputs
4079 `(("python-six" ,python-six)))
c9b1b4f9 4080 (inputs
482d9591 4081 `(("readline" ,readline)
c9b1b4f9
RW
4082 ("icu4c" ,icu4c)
4083 ("pcre" ,pcre)
4084 ("r" ,r)))
4085 (native-inputs
f3b98f4f 4086 `(("zlib" ,zlib)))
c9b1b4f9
RW
4087 (home-page "http://rpy.sourceforge.net/")
4088 (synopsis "Python interface to the R language")
4089 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
4090low-level interface to R from Python, a proposed high-level interface,
4091including wrappers to graphical libraries, as well as R-like structures and
4092functions.")
3f641af0 4093 (license license:gpl3+)))
c9b1b4f9
RW
4094
4095(define-public python2-rpy2
4096 (let ((rpy2 (package-with-python2 python-rpy2)))
4097 (package (inherit rpy2)
d6abd094 4098 (propagated-inputs
c9b1b4f9 4099 `(("python2-singledispatch" ,python2-singledispatch)
d6abd094 4100 ,@(package-propagated-inputs rpy2))))))
c9b1b4f9 4101
bb986599
FB
4102(define-public python-scipy
4103 (package
4104 (name "python-scipy")
35093253 4105 (version "0.18.1")
bb986599
FB
4106 (source
4107 (origin
4108 (method url-fetch)
35093253
TD
4109 (uri (string-append "https://github.com/scipy/scipy/archive/v"
4110 version ".tar.gz"))
4111 (file-name (string-append name "-" version ".tar.gz"))
bb986599
FB
4112 (sha256
4113 (base32
35093253 4114 "17slsrfawjp7if6qrlx03zhgp05350ginxx8ddpw9zqx43x905sn"))))
bb986599 4115 (build-system python-build-system)
dd86c0d1 4116 (propagated-inputs
bb986599
FB
4117 `(("python-numpy" ,python-numpy)
4118 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
4119 ("python-pyparsing" ,python-pyparsing)))
4120 (inputs
4121 `(("lapack" ,lapack)
719b01c1 4122 ("openblas" ,openblas)))
bb986599 4123 (native-inputs
35093253
TD
4124 `(("python-cython" ,python-cython)
4125 ("python-nose" ,python-nose)
4126 ("python-sphinx" ,python-sphinx)
5248d49e 4127 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 4128 ("gfortran" ,gfortran)
bb986599
FB
4129 ("perl" ,perl)))
4130 (outputs '("out" "doc"))
4131 (arguments
4132 `(#:phases
16ca6aaa 4133 (modify-phases %standard-phases
16ca6aaa
MB
4134 (add-before 'build 'configure-openblas
4135 (lambda* (#:key inputs #:allow-other-keys)
4136 (call-with-output-file "site.cfg"
4137 (lambda (port)
4138 (format port
4139 "[blas]
719b01c1
RW
4140libraries = openblas
4141library_dirs = ~a/lib
4142include_dirs = ~a/include
d548e6aa
HG
4143
4144# backslash-n to make emacs happy
4145\n[atlas]
719b01c1
RW
4146library_dirs = ~a/lib
4147atlas_libs = openblas
4148"
16ca6aaa
MB
4149 (assoc-ref inputs "openblas")
4150 (assoc-ref inputs "openblas")
4151 (assoc-ref inputs "openblas"))))
db967b64 4152 #t))
35093253
TD
4153 (add-after 'install 'install-doc
4154 (lambda* (#:key inputs outputs #:allow-other-keys)
4155 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4156 (doc (string-append data "/doc/" ,name "-" ,version))
4157 (html (string-append doc "/html"))
4158 (pyver ,(string-append "PYVER=")))
4159 ;; Make installed package available for building the
4160 ;; documentation
4161 (add-installed-pythonpath inputs outputs)
4162 (with-directory-excursion "doc"
4163 ;; Fix generation of images for mathematical expressions.
4164 (substitute* (find-files "source" "conf\\.py")
4165 (("pngmath_use_preview = True")
4166 "pngmath_use_preview = False"))
4167 (mkdir-p html)
4168 (system* "make" "html" pyver)
4169 (with-directory-excursion "build/html"
4170 (for-each (lambda (file)
4171 (let* ((dir (dirname file))
4172 (tgt-dir (string-append html "/" dir)))
4173 (install-file file html)))
4174 (find-files "." ".*")))))
4175 #t))
4176 (add-after 'unpack 'fix-tests
4177 (lambda _
4178 (substitute* "scipy/integrate/tests/test_quadpack.py"
4179 (("libm.so") "libm.so.6"))
4180 #t))
4181 ;; Tests can only be run after the library has been installed and not
4182 ;; within the source directory.
4183 (delete 'check)
4184 (add-after 'install 'check
4185 (lambda* (#:key inputs outputs #:allow-other-keys)
4186 (add-installed-pythonpath inputs outputs)
4187 (with-directory-excursion "/tmp"
4188 (zero? (system* "python" "-c"
4189 "import scipy; scipy.test('full')")))
4190 #t)))))
bb986599
FB
4191 (home-page "http://www.scipy.org/")
4192 (synopsis "The Scipy library provides efficient numerical routines")
4193 (description "The SciPy library is one of the core packages that make up
4194the SciPy stack. It provides many user-friendly and efficient numerical
4195routines such as routines for numerical integration and optimization.")
9200fe14 4196 (properties `((python2-variant . ,(delay python2-scipy))))
3f641af0 4197 (license license:bsd-3)))
bb986599 4198
764c077b 4199(define-public python2-scipy
35093253
TD
4200 (package-with-python2
4201 (strip-python2-variant python-scipy)))
bb986599 4202
73acc193 4203(define-public python-socksipy-branch
4204 (package
4205 (name "python-socksipy-branch")
4206 (version "1.01")
4207 (source
4208 (origin
4209 (method url-fetch)
4210 (uri (pypi-uri "SocksiPy-branch" version))
4211 (sha256
4212 (base32
4213 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4214 (build-system python-build-system)
4215 (arguments
4216 `(#:tests? #f)) ; There are no tests
4217 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4218 (synopsis "Python SOCKS module")
4219 (description
4220 "SocksiPy - A Python SOCKS client module. It provides a
4221socket-like interface that supports connections to any TCP
4222service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4223The original version was developed by Dan Haim, this is a
4224branch created by Mario Vilas to address some open issues,
4225as the original project seems to have been abandoned circa 2007.")
4226 (license license:bsd-3)))
4227
4228(define-public python2-socksipy-branch
4229 (package-with-python2 python-socksipy-branch))
4230
94914805
EB
4231(define-public python-sqlalchemy
4232 (package
4233 (name "python-sqlalchemy")
a4ba286b 4234 (version "1.0.12")
94914805
EB
4235 (source
4236 (origin
4237 (method url-fetch)
4238 (uri (string-append "https://pypi.python.org/packages/source/S/"
4239 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
4240 (sha256
4241 (base32
a4ba286b 4242 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
4243 (build-system python-build-system)
4244 (native-inputs
4245 `(("python-cython" ,python-cython) ;for c extensions
4246 ("python-pytest" ,python-pytest)
4247 ("python-mock" ,python-mock))) ;for tests
4248 (arguments
4249 `(#:phases (alist-replace
4250 'check
4251 (lambda _ (zero? (system* "py.test")))
4252 %standard-phases)))
4253 (home-page "http://www.sqlalchemy.org")
4254 (synopsis "Database abstraction library")
4255 (description
4256 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4257gives application developers the full power and flexibility of SQL. It
4258provides a full suite of well known enterprise-level persistence patterns,
4259designed for efficient and high-performing database access, adapted into a
4260simple and Pythonic domain language.")
3f641af0 4261 (license license:x11)))
94914805
EB
4262
4263(define-public python2-sqlalchemy
4264 (package-with-python2 python-sqlalchemy))
c937562e 4265
4a093330
DM
4266(define-public python-pycodestyle
4267 (package
4268 (name "python-pycodestyle")
4269 (version "2.0.0")
4270 (source
4271 (origin
4272 (method url-fetch)
4273 (uri (pypi-uri "pycodestyle" version))
4274 (sha256
4275 (base32
4276 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
4277 (build-system python-build-system)
4278 (home-page "https://pycodestyle.readthedocs.io/")
4279 (synopsis "Python style guide checker")
4280 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4281Python code against some of the style conventions in
4282@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4283 (license license:expat)))
4a093330
DM
4284
4285(define-public python2-pycodestyle
f210e944 4286 (package-with-python2 python-pycodestyle))
b91912c4
DM
4287
4288(define-public python-orderedmultidict
4289 (package
4290 (name "python-orderedmultidict")
9e2802cb 4291 (version "0.7.11")
b91912c4
DM
4292 (source
4293 (origin
4294 (method url-fetch)
4295 (uri (pypi-uri "orderedmultidict" version))
4296 (sha256
4297 (base32
9e2802cb 4298 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
b91912c4
DM
4299 (build-system python-build-system)
4300 (arguments
4301 `(#:phases
4302 (modify-phases %standard-phases
4303 (add-after 'unpack 'fix-tests
4304 (lambda _
4305 ;; The package uses nosetest for running the tests.
4306 ;; Adding this initfile allows to run the test suite
4307 ;; without requiring nosetest.
4308 (zero? (system* "touch" "tests/__init__.py")))))))
4309 (propagated-inputs
4310 `(("python-six" ,python-six)))
4311 (native-inputs
4312 `(("python-pycodestyle" ,python-pycodestyle)))
4313 (home-page "https://github.com/gruns/orderedmultidict")
4314 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4315 (description "This package contains a library for ordered multivalue
4316dictionaries. A multivalue dictionary is a dictionary that can store
4317multiple values for the same key. An ordered multivalue dictionary is a
4318multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4319 (license license:unlicense)))
b91912c4
DM
4320
4321(define-public python2-orderedmultidict
f210e944 4322 (package-with-python2 python-orderedmultidict))
9dede065
DM
4323
4324(define-public python-furl
4325 (package
4326 (name "python-furl")
4327 (version "0.5.6")
4328 (source
4329 (origin
4330 (method url-fetch)
4331 (uri (pypi-uri "furl" version))
4332 (sha256
4333 (base32
4334 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4335 (build-system python-build-system)
4336 (propagated-inputs
4337 `(("python-six" ,python-six)
4338 ("python-orderedmultidict" ,python-orderedmultidict)))
4339 (native-inputs
4340 `(("python-pycodestyle" ,python-pycodestyle)))
4341 (home-page "https://github.com/gruns/furl")
4342 (synopsis "URL manipulation in Python")
4343 (description "Furl provides an easy-to-use alternative to the
4344@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4345 (license license:unlicense)))
9dede065
DM
4346
4347(define-public python2-furl
f210e944 4348 (package-with-python2 python-furl))
462bf271
DM
4349
4350(define-public python-flask-babel
4351 (package
4352 (name "python-flask-babel")
4353 (version "0.11.1")
4354 (source
4355 (origin
4356 (method url-fetch)
4357 (uri (pypi-uri "Flask-Babel" version))
4358 (sha256
4359 (base32
4360 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4361 (build-system python-build-system)
4362 (propagated-inputs
4363 `(("python-flask" ,python-flask)
4364 ("python-babel" ,python-babel)
4365 ("python-jinja2" ,python-jinja2)
4366 ("python-pytz" ,python-pytz)))
4367 (home-page "https://github.com/python-babel/flask-babel")
4368 (synopsis "Add i18n/l10n support to Flask applications")
4369 (description "This package implements internationalization and localization
4370support for Flask. This is based on the Python babel module as well as pytz -
4371both of which are installed automatically if you install this library.")
f210e944 4372 (license license:bsd-3)))
462bf271
DM
4373
4374(define-public python2-flask-babel
f210e944 4375 (package-with-python2 python-flask-babel))
4a093330 4376
de2966cf
EF
4377(define-public python-sqlalchemy-utils
4378 (package
4379 (name "python-sqlalchemy-utils")
bb4b1706 4380 (version "0.32.11")
de2966cf
EF
4381 (source
4382 (origin
4383 (method url-fetch)
4384 (uri (pypi-uri "SQLAlchemy-Utils" version))
4385 (sha256
4386 (base32
bb4b1706 4387 "1wghyvk73cmq3iqyg3fczw128fv2pan2v76m0xg1bw05h8fhvnk3"))))
de2966cf 4388 (build-system python-build-system)
35d56b7b
MB
4389 (arguments
4390 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
4391 ;; #:phases
4392 ;; (modify-phases %standard-phases
4393 ;; (replace 'check
4394 ;; (lambda _
4395 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
c22b4f87 4396 (propagated-inputs
de2966cf
EF
4397 `(("python-six" ,python-six)
4398 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb 4399 (native-inputs
22d7360b 4400 `(("python-dateutil" ,python-dateutil)
35d56b7b
MB
4401 ("python-flexmock" ,python-flexmock)
4402 ("python-psycopg2" ,python-psycopg2)
4403 ("python-pytest" ,python-pytest)
4404 ("python-pytz" ,python-pytz)))
de2966cf
EF
4405 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4406 (synopsis "Various utility functions for SQLAlchemy")
4407 (description
4408 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4409for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4410
4411You might also want to install the following optional dependencies:
4412@enumerate
4413@item @code{python-passlib}
4414@item @code{python-babel}
4415@item @code{python-cryptography}
4416@item @code{python-pytz}
4417@item @code{python-psycopg2}
4418@item @code{python-furl}
4419@item @code{python-flask-babel}
4420@end enumerate
4421")
de2966cf
EF
4422 (license license:bsd-3)))
4423
4424(define-public python2-sqlalchemy-utils
f210e944 4425 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4426
af5a4602
CAW
4427(define-public python-alembic
4428 (package
4429 (name "python-alembic")
4418990d 4430 (version "0.8.10")
af5a4602
CAW
4431 (source
4432 (origin
4433 (method url-fetch)
4434 (uri (pypi-uri "alembic" version))
4435 (sha256
4436 (base32
4418990d 4437 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
af5a4602
CAW
4438 (build-system python-build-system)
4439 (native-inputs
4440 `(("python-mock" ,python-mock)
4441 ("python-pytest-cov" ,python-pytest-cov)))
4442 (propagated-inputs
4443 `(("python-sqlalchemy" ,python-sqlalchemy)
4444 ("python-mako" ,python-mako)
4445 ("python-editor" ,python-editor)))
4446 (home-page "http://bitbucket.org/zzzeek/alembic")
4447 (synopsis
4448 "Database migration tool for SQLAlchemy")
4449 (description
4450 "Alembic is a lightweight database migration tool for usage with the
4451SQLAlchemy Database Toolkit for Python.")
f210e944 4452 (license license:expat)))
af5a4602
CAW
4453
4454(define-public python2-alembic
f210e944 4455 (package-with-python2 python-alembic))
af5a4602 4456
138adbbe
TD
4457(define-public python-autopep8
4458 (package
4459 (name "python-autopep8")
4460 (version "1.2.4")
4461 (source
4462 (origin
4463 (method url-fetch)
4464 (uri (pypi-uri "autopep8" version))
4465 (sha256
4466 (base32
4467 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4468 (build-system python-build-system)
4469 (propagated-inputs
4470 `(("python-pep8" ,python-pep8)))
4471 (home-page "https://github.com/hhatto/autopep8")
4472 (synopsis "Format Python code according to the PEP 8 style guide")
4473 (description
4474 "@code{autopep8} automatically formats Python code to conform to
4475the PEP 8 style guide. It uses the pycodestyle utility to determine
4476what parts of the code needs to be formatted. @code{autopep8} is
4477capable of fixing most of the formatting issues that can be reported
4478by pycodestyle.")
4479 (license (license:non-copyleft
4480 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4481
4482(define-public python2-autopep8
4483 (package-with-python2 python-autopep8))
4484
1671c07c
EB
4485(define-public python-distutils-extra
4486 (package
4487 (name "python-distutils-extra")
4488 (version "2.38")
4489 (source
4490 (origin
4491 (method url-fetch)
4492 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4493 version "/+download/python-distutils-extra-"
4494 version ".tar.gz"))
4495 (sha256
4496 (base32
4497 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4498 (build-system python-build-system)
1671c07c
EB
4499 (home-page "https://launchpad.net/python-distutils-extra/")
4500 (synopsis "Enhancements to Python's distutils")
4501 (description
4502 "The python-distutils-extra module enables you to easily integrate
4503gettext support, themed icons, and scrollkeeper-based documentation into
4504Python's distutils.")
3f641af0 4505 (license license:gpl2)))
1671c07c
EB
4506
4507(define-public python2-distutils-extra
4508 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4509
4510(define-public python2-elib.intl
4511 (package
4512 (name "python2-elib.intl")
4513 (version "0.0.3")
4514 (source
4515 (origin
4516 ;; This project doesn't tag releases or publish tarballs, so we take
4517 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4518 (method git-fetch)
4519 (uri (git-reference
4520 (url "https://github.com/dieterv/elib.intl.git")
4521 (commit "d09997cfef")))
4522 (sha256
4523 (base32
4524 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4525 (build-system python-build-system)
ea5456c8
EB
4526 (arguments
4527 ;; incompatible with Python 3 (exception syntax)
4528 `(#:python ,python-2
b41a05ce 4529 #:tests? #f))
ea5456c8
EB
4530 (home-page "https://github.com/dieterv/elib.intl")
4531 (synopsis "Enhanced internationalization for Python")
4532 (description
4533 "The elib.intl module provides enhanced internationalization (I18N)
4534services for your Python modules and applications.")
3f641af0 4535 (license license:lgpl3+)))
ea5456c8 4536
c937562e
EB
4537(define-public python-pillow
4538 (package
4539 (name "python-pillow")
aba5182c 4540 (version "3.3.3")
c937562e
EB
4541 (source
4542 (origin
4543 (method url-fetch)
f1d9231d 4544 (uri (pypi-uri "Pillow" version))
c937562e
EB
4545 (sha256
4546 (base32
aba5182c 4547 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4548 (build-system python-build-system)
4549 (native-inputs
f3b98f4f 4550 `(("python-nose" ,python-nose)))
c937562e 4551 (inputs
5ff408d9
SB
4552 `(("freetype" ,freetype)
4553 ("lcms" ,lcms)
c937562e
EB
4554 ("zlib" ,zlib)
4555 ("libjpeg" ,libjpeg)
4556 ("openjpeg" ,openjpeg)
5ff408d9
SB
4557 ("libtiff" ,libtiff)
4558 ("libwebp" ,libwebp)))
c937562e 4559 (arguments
e5358a6b 4560 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4561 (add-after
4562 'install 'check-installed
6151120a 4563 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4564 (begin
4565 (setenv "HOME" (getcwd))
6151120a
HG
4566 ;; Make installed package available for running the
4567 ;; tests
4568 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4569 (and (zero? (system* "python" "selftest.py"
4570 "--installed"))
4571 (zero? (system* "python" "test-installed.py"))))))
4572 (delete 'check))))
c937562e
EB
4573 (home-page "https://pypi.python.org/pypi/Pillow")
4574 (synopsis "Fork of the Python Imaging Library")
4575 (description
4576 "The Python Imaging Library adds image processing capabilities to your
4577Python interpreter. This library provides extensive file format support, an
4578efficient internal representation, and fairly powerful image processing
4579capabilities. The core image library is designed for fast access to data
4580stored in a few basic pixel formats. It should provide a solid foundation for
4581a general image processing tool.")
3f641af0 4582 (license (license:x11-style
c937562e
EB
4583 "http://www.pythonware.com/products/pil/license.htm"
4584 "The PIL Software License"))))
4585
4586(define-public python2-pillow
4587 (package-with-python2 python-pillow))
bb986599 4588
a415f036
FB
4589(define-public python-pycparser
4590 (package
4591 (name "python-pycparser")
5043b20d 4592 (version "2.17")
a415f036
FB
4593 (source
4594 (origin
4595 (method url-fetch)
38eb6919 4596 (uri (pypi-uri "pycparser" version))
a415f036
FB
4597 (sha256
4598 (base32
5043b20d 4599 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
a415f036
FB
4600 (outputs '("out" "doc"))
4601 (build-system python-build-system)
4602 (native-inputs
f3b98f4f 4603 `(("pkg-config" ,pkg-config)))
a415f036 4604 (arguments
89b5c60e 4605 `(#:phases
819939cb
TGR
4606 (modify-phases %standard-phases
4607 (replace 'check
4608 (lambda _
4609 (with-directory-excursion "tests"
4610 (zero? (system* "python" "all_tests.py")))))
4611 (add-after 'install 'install-doc
4612 (lambda* (#:key outputs #:allow-other-keys)
4613 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4614 (doc (string-append data "/doc/" ,name "-" ,version))
4615 (examples (string-append doc "/examples")))
4616 (mkdir-p examples)
4617 (for-each (lambda (file)
4618 (copy-file (string-append "." file)
4619 (string-append doc file)))
4620 '("/README.rst" "/CHANGES" "/LICENSE"))
4621 (copy-recursively "examples" examples)))))))
a415f036
FB
4622 (home-page "https://github.com/eliben/pycparser")
4623 (synopsis "C parser in Python")
4624 (description
4625 "Pycparser is a complete parser of the C language, written in pure Python
4626using the PLY parsing library. It parses C code into an AST and can serve as
4627a front-end for C compilers or analysis tools.")
3f641af0 4628 (license license:bsd-3)))
a415f036
FB
4629
4630(define-public python2-pycparser
4631 (package-with-python2 python-pycparser))
57c3f716
FB
4632
4633(define-public python-cffi
4634 (package
4635 (name "python-cffi")
2d3a437c 4636 (version "1.4.2")
57c3f716
FB
4637 (source
4638 (origin
4639 (method url-fetch)
2d3a437c 4640 (uri (pypi-uri "cffi" version))
89b5c60e 4641 (sha256
2d3a437c 4642 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4643 (build-system python-build-system)
4644 (outputs '("out" "doc"))
4645 (inputs
4646 `(("libffi" ,libffi)))
4647 (propagated-inputs ; required at run-time
4648 `(("python-pycparser" ,python-pycparser)))
4649 (native-inputs
4650 `(("pkg-config" ,pkg-config)
4651 ("python-sphinx" ,python-sphinx)
f3b98f4f 4652 ("python-pytest" ,python-pytest)))
57c3f716 4653 (arguments
4179f952 4654 `(#:phases
57c3f716
FB
4655 (alist-cons-after
4656 'install 'install-doc
4657 (lambda* (#:key outputs #:allow-other-keys)
4658 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4659 (doc (string-append data "/doc/" ,name "-" ,version))
4660 (html (string-append doc "/html")))
4661 (with-directory-excursion "doc"
4662 (system* "make" "html")
4663 (mkdir-p html)
4664 (copy-recursively "build/html" html))
4665 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4666 %standard-phases)))
4667 (home-page "http://cffi.readthedocs.org")
4668 (synopsis "Foreign function interface for Python")
4669 (description
4670 "Foreign Function Interface for Python calling C code.")
bd3fa666 4671 (license license:expat)))
57c3f716
FB
4672
4673(define-public python2-cffi
4674 (package-with-python2 python-cffi))
6fa14469
FB
4675
4676(define-public python-xcffib
4677 (package
4678 (name "python-xcffib")
4679 (version "0.1.9")
4680 (source
4681 (origin
4682 (method url-fetch)
4683 (uri (string-append "https://pypi.python.org/packages/source/x/"
4684 "xcffib/xcffib-" version ".tar.gz"))
4685 (sha256
4686 (base32
4687 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4688 (build-system python-build-system)
4689 (inputs
482d9591 4690 `(("libxcb" ,libxcb)))
6fa14469 4691 (propagated-inputs
482d9591
HG
4692 `(("python-cffi" ,python-cffi) ; used at run time
4693 ("python-six" ,python-six)))
6fa14469 4694 (arguments
e2816ac7
MB
4695 `(;; FIXME: Tests cannot load libxcb.so.1
4696 #:tests? #f
4697 #:phases
c8cd850c
MB
4698 (modify-phases %standard-phases
4699 (add-after 'install 'install-doc
4700 (lambda* (#:key outputs #:allow-other-keys)
4701 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4702 "/doc/" ,name "-" ,version)))
4703 (mkdir-p doc)
4704 (copy-file "README.md"
4705 (string-append doc "/README.md"))
4706 #t))))))
6fa14469
FB
4707 (home-page "https://github.com/tych0/xcffib")
4708 (synopsis "XCB Python bindings")
4709 (description
4710 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4711support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4712 (license license:expat)))
6fa14469
FB
4713
4714(define-public python2-xcffib
4715 (package-with-python2 python-xcffib))
4716
9e099723
FB
4717(define-public python-cairocffi
4718 (package
4719 (name "python-cairocffi")
4720 (version "0.6")
4721 (source
4722 (origin
4723 (method url-fetch)
4724 ;; The archive on pypi is missing the 'utils' directory!
4725 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4726 version ".tar.gz"))
f586c877 4727 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4728 (sha256
4729 (base32
4730 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4731 (build-system python-build-system)
4732 (outputs '("out" "doc"))
4733 (inputs
4734 `(("gdk-pixbuf" ,gdk-pixbuf)
4735 ("cairo" ,cairo)))
4736 (native-inputs
4737 `(("pkg-config" ,pkg-config)
4738 ("python-sphinx" ,python-sphinx)
f3b98f4f 4739 ("python-docutils" ,python-docutils)))
9e099723
FB
4740 (propagated-inputs
4741 `(("python-xcffib" ,python-xcffib))) ; used at run time
4742 (arguments
a792e1aa
MB
4743 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
4744 #:tests? #f
4745 #:phases
6734c7ba
MB
4746 (modify-phases %standard-phases
4747 (add-after 'install 'install-doc
4748 (lambda* (#:key inputs outputs #:allow-other-keys)
4749 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4750 (doc (string-append data "/doc/" ,name "-" ,version))
4751 (html (string-append doc "/html")))
4752 (setenv "LD_LIBRARY_PATH"
4753 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4754 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4755 (setenv "LANG" "en_US.UTF-8")
4756 (mkdir-p html)
4757 (for-each (lambda (file)
4758 (copy-file (string-append "." file)
4759 (string-append doc file)))
4760 '("/README.rst" "/CHANGES" "/LICENSE"))
4761 (system* "python" "setup.py" "build_sphinx")
4762 (copy-recursively "docs/_build/html" html)
4763 #t))))))
9e099723
FB
4764 (home-page "https://github.com/SimonSapin/cairocffi")
4765 (synopsis "Python bindings and object-oriented API for Cairo")
4766 (description
4767 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4768Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4769graphics library with support for multiple backends including image buffers,
4770PNG, PostScript, PDF, and SVG file output.")
3f641af0 4771 (license license:bsd-3)))
9e099723
FB
4772
4773(define-public python2-cairocffi
4774 (package-with-python2 python-cairocffi))
4775
3cff95cb
RW
4776(define-public python-decorator
4777 (package
4778 (name "python-decorator")
d79fa7da 4779 (version "4.0.10")
3cff95cb
RW
4780 (source
4781 (origin
4782 (method url-fetch)
e21338be 4783 (uri (pypi-uri "decorator" version))
3cff95cb 4784 (sha256
d79fa7da 4785 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
3cff95cb
RW
4786 (build-system python-build-system)
4787 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 4788 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4789 (synopsis "Python module to simplify usage of decorators")
4790 (description
4791 "The aim of the decorator module is to simplify the usage of decorators
4792for the average programmer, and to popularize decorators usage giving examples
4793of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4794etc. The core of this module is a decorator factory.")
4795 (license license:expat)))
4796
4797(define-public python2-decorator
4798 (package-with-python2 python-decorator))
4799
2c0499ad
RW
4800(define-public python-drmaa
4801 (package
4802 (name "python-drmaa")
4803 (version "0.7.6")
4804 (source
4805 (origin
4806 (method url-fetch)
4807 (uri (string-append
4808 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4809 version ".tar.gz"))
4810 (sha256
4811 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4812 (build-system python-build-system)
4813 ;; The test suite requires libdrmaa which is provided by the cluster
4814 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4815 ;; should be set to the path of the libdrmaa library.
4816 (arguments '(#:tests? #f))
4817 (native-inputs
f3b98f4f 4818 `(("python-nose" ,python-nose)))
2c0499ad
RW
4819 (home-page "https://pypi.python.org/pypi/drmaa")
4820 (synopsis "Python bindings for the DRMAA library")
4821 (description
4822 "A Python package for Distributed Resource Management (DRM) job
4823submission and control. This package is an implementation of the DRMAA 1.0
4824Python language binding specification.")
3f641af0 4825 (license license:bsd-3)))
2c0499ad
RW
4826
4827(define-public python2-drmaa
4828 (package-with-python2 python-drmaa))
4829
d05c6da0
RW
4830(define-public python-gridmap
4831 (package
4832 (name "python-gridmap")
4833 (version "0.13.0")
4834 (source
4835 (origin
4836 (method url-fetch)
4837 (uri (string-append
4838 "https://github.com/pygridtools/gridmap/archive/v"
4839 version ".tar.gz"))
4840 (file-name (string-append name "-" version ".tar.gz"))
4841 (sha256
4842 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4843 (build-system python-build-system)
ad348f9f
MB
4844 (arguments
4845 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
f22efa01 4846 (propagated-inputs
d05c6da0
RW
4847 `(("python-psutil" ,python-psutil)
4848 ("python-drmaa" ,python-drmaa)
4849 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
4850 (home-page "https://github.com/pygridtools/gridmap")
4851 (synopsis "Create jobs on a cluster directly from Python")
4852 (description
4853 "Gridmap is a Python package to allow you to easily create jobs on the
4854cluster directly from Python. You can directly map Python functions onto the
4855cluster without needing to write any wrapper code yourself.")
3f641af0 4856 (license license:gpl3+)))
d05c6da0
RW
4857
4858(define-public python2-gridmap
4859 (package-with-python2 python-gridmap))
4860
cb6d5c54
RW
4861(define-public python-pexpect
4862 (package
4863 (name "python-pexpect")
ed118043 4864 (version "4.2.1")
cb6d5c54
RW
4865 (source
4866 (origin
4867 (method url-fetch)
ed118043 4868 (uri (pypi-uri "pexpect" version))
cb6d5c54 4869 (sha256
ed118043 4870 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
cb6d5c54
RW
4871 (build-system python-build-system)
4872 (arguments
4873 `(#:phases
4874 (modify-phases %standard-phases
ed118043
MB
4875 (add-before 'check 'prepare-tests
4876 (lambda _
4877 (substitute* (find-files "tests")
4878 (("/bin/ls") (which "ls"))
4879 (("/bin/echo") (which "echo"))
4880 (("/bin/which") (which "which"))
4881 ;; Many tests try to use the /bin directory which
4882 ;; is not present in the build environment.
4883 ;; Use one that's non-empty and unlikely to change.
4884 (("/bin'") "/dev'"))
4885 ;; XXX: Socket connection test gets "Connection reset by peer".
4886 ;; Why does it not work? Delete for now.
4887 (delete-file "tests/test_socket.py")
4888 #t))
cb6d5c54
RW
4889 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4890 (native-inputs
ed118043
MB
4891 `(("python-nose" ,python-nose)
4892 ("python-pytest" ,python-pytest)
4893 ("man-db" ,man-db)
4894 ("which" ,which)))
4895 (propagated-inputs
4896 `(("python-ptyprocess" ,python-ptyprocess)))
cb6d5c54
RW
4897 (home-page "http://pexpect.readthedocs.org/")
4898 (synopsis "Controlling interactive console applications")
4899 (description
4900 "Pexpect is a pure Python module for spawning child applications;
4901controlling them; and responding to expected patterns in their output.
4902Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4903child application and control it as if a human were typing commands.")
3f641af0 4904 (license license:isc)))
cb6d5c54
RW
4905
4906(define-public python2-pexpect
4907 (package-with-python2 python-pexpect))
4908
229ad120
RW
4909(define-public python-setuptools-scm
4910 (package
4911 (name "python-setuptools-scm")
5b1f31ff 4912 (version "1.15.0")
229ad120
RW
4913 (source (origin
4914 (method url-fetch)
383af6b0 4915 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4916 (sha256
4917 (base32
5b1f31ff 4918 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
229ad120
RW
4919 (build-system python-build-system)
4920 (home-page "https://github.com/pypa/setuptools_scm/")
4921 (synopsis "Manage Python package versions in SCM metadata")
4922 (description
383af6b0 4923 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4924@dfn{software configuration management} (SCM) metadata instead of declaring
4925them as the version argument or in a SCM managed file.")
4926 (license license:expat)))
4927
4928(define-public python2-setuptools-scm
4929 (package-with-python2 python-setuptools-scm))
4930
b74270ee
RW
4931(define-public python-pathpy
4932 (package
4933 (name "python-pathpy")
4934 (version "8.1.1")
4935 (source
4936 (origin
4937 (method url-fetch)
4938 (uri (string-append "https://pypi.python.org/packages/source/p/"
4939 "path.py/path.py-" version ".tar.gz"))
4940 (sha256
4941 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 4942 (outputs '("out" "doc"))
b74270ee
RW
4943 (build-system python-build-system)
4944 (propagated-inputs
4945 `(("python-appdirs" ,python-appdirs)))
4946 (native-inputs
f3b98f4f 4947 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
4948 ("python-sphinx" ,python-sphinx)
4949 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
4950 ("python-pytest" ,python-pytest)
4951 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
4952 (arguments
4953 `(#:phases
4954 (modify-phases %standard-phases
4955 (add-after 'build 'build-doc
4956 (lambda _
4957 (setenv "LANG" "en_US.UTF-8")
4958 (zero? (system* "python" "setup.py" "build_sphinx"))))
4959 (add-after 'install 'install-doc
4960 (lambda* (#:key outputs #:allow-other-keys)
4961 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4962 (doc (string-append data "/doc/" ,name "-" ,version))
4963 (html (string-append doc "/html")))
4964 (mkdir-p html)
4965 (for-each (lambda (file)
4966 (copy-file file (string-append doc "/" file)))
4967 '("README.rst" "CHANGES.rst"))
4968 (copy-recursively "build/sphinx/html" html)))))))
b74270ee
RW
4969 (home-page "http://github.com/jaraco/path.py")
4970 (synopsis "Python module wrapper for built-in os.path")
4971 (description
4972 "@code{path.py} implements path objects as first-class entities, allowing
4973common operations on files to be invoked on those path objects directly.")
4974 (license license:expat)))
4975
4976(define-public python2-pathpy
4977 (package-with-python2 python-pathpy))
4978
0d34e01b
RW
4979(define-public python-pickleshare
4980 (package
4981 (name "python-pickleshare")
4982 (version "0.5")
4983 (source
4984 (origin
4985 (method url-fetch)
4986 (uri (string-append "https://pypi.python.org/packages/source/p/"
4987 "pickleshare/pickleshare-" version ".tar.gz"))
4988 (sha256
4989 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4990 (build-system python-build-system)
4991 (propagated-inputs
4992 `(("python-pathpy" ,python-pathpy)))
4993 (home-page "https://github.com/vivainio/pickleshare")
4994 (synopsis "Tiny key value database with concurrency support")
4995 (description
4996 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4997Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4998shelve, many processes can access the database simultaneously. Changing a
4999value in database is immediately visible to other processes accessing the same
5000database. Concurrency is possible because the values are stored in separate
5001files. Hence the “database” is a directory where all files are governed by
5002PickleShare.")
5003 (license license:expat)))
5004
5005(define-public python2-pickleshare
5006 (package-with-python2 python-pickleshare))
5007
cd6e5189
RW
5008(define-public python-simplegeneric
5009 (package
5010 (name "python-simplegeneric")
5011 (version "0.8.1")
5012 (source
5013 (origin
5014 (method url-fetch)
5015 (uri (string-append "https://pypi.python.org/packages/source/s/"
5016 "simplegeneric/simplegeneric-" version ".zip"))
5017 (sha256
5018 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5019 (build-system python-build-system)
5020 (native-inputs
f3b98f4f 5021 `(("unzip" ,unzip)))
cd6e5189
RW
5022 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5023 (synopsis "Python module for simple generic functions")
5024 (description
5025 "The simplegeneric module lets you define simple single-dispatch generic
5026functions, akin to Python’s built-in generic functions like @code{len()},
5027@code{iter()} and so on. However, instead of using specially-named methods,
5028these generic functions use simple lookup tables, akin to those used by
5029e.g. @code{pickle.dump()} and other generic functions found in the Python
5030standard library.")
3f641af0 5031 (license license:zpl2.1)))
cd6e5189
RW
5032
5033(define-public python2-simplegeneric
5034 (package-with-python2 python-simplegeneric))
5035
ddc7d8ed 5036(define-public python-ipython-genutils
c4abbac3 5037 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
5038 (package
5039 (name "python-ipython-genutils")
5040 (version "0.1.0")
5041 (source
5042 (origin
5043 (method url-fetch)
5044 (uri (string-append "https://pypi.python.org/packages/source/i/"
5045 "ipython_genutils/ipython_genutils-"
5046 version ".tar.gz"))
5047 (sha256
5048 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5049 (build-system python-build-system)
5050 (arguments `(#:tests? #f)) ; no tests
5051 (home-page "http://ipython.org")
5052 (synopsis "Vestigial utilities from IPython")
5053 (description
c4abbac3
HG
5054 "This package provides retired utilities from IPython. No packages
5055outside IPython/Jupyter should depend on it.
5056
5057This package shouldn't exist. It contains some common utilities shared by
5058Jupyter and IPython projects during The Big Split. As soon as possible, those
5059packages will remove their dependency on this, and this package will go
5060away.")
3f641af0 5061 (license license:bsd-3)))
ddc7d8ed
RW
5062
5063(define-public python2-ipython-genutils
5064 (package-with-python2 python-ipython-genutils))
5065
2b10eb48
RW
5066(define-public python-traitlets
5067 (package
5068 (name "python-traitlets")
a5ba1481 5069 (version "4.2.0")
2b10eb48
RW
5070 (source
5071 (origin
5072 (method url-fetch)
cc0c4fde 5073 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
5074 (sha256
5075 (base32
a5ba1481 5076 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
5077 (build-system python-build-system)
5078 (arguments
5079 `(#:phases
5080 (modify-phases %standard-phases
5081 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5082 (propagated-inputs
5083 `(("python-ipython-genutils" ,python-ipython-genutils)
5084 ("python-decorator" ,python-decorator)))
5085 (native-inputs
cc0c4fde
EF
5086 `(("python-mock" ,python-mock)
5087 ("python-nose" ,python-nose)))
2b10eb48
RW
5088 (home-page "http://ipython.org")
5089 (synopsis "Configuration system for Python applications")
5090 (description
5091 "Traitlets is a framework that lets Python classes have attributes with
5092type checking, dynamically calculated default values, and ‘on change’
5093callbacks. The package also includes a mechanism to use traitlets for
5094configuration, loading values from files or from command line arguments. This
5095is a distinct layer on top of traitlets, so you can use traitlets in your code
5096without using the configuration machinery.")
3f641af0 5097 (license license:bsd-3)))
2b10eb48
RW
5098
5099(define-public python2-traitlets
5100 (package-with-python2 python-traitlets))
5101
4263b06f
RW
5102(define-public python-jupyter-core
5103 (package
5104 (name "python-jupyter-core")
45cc957c 5105 (version "4.2.1")
4263b06f
RW
5106 (source
5107 (origin
5108 (method url-fetch)
5109 (uri (string-append (pypi-uri "jupyter_core" version)))
5110 (sha256
5111 (base32
45cc957c 5112 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
4263b06f
RW
5113 (build-system python-build-system)
5114 ;; FIXME: not sure how to run the tests
5115 (arguments `(#:tests? #f))
5116 (propagated-inputs
5117 `(("python-traitlets" ,python-traitlets)))
5118 (home-page "http://jupyter.org/")
5119 (synopsis "Jupyter base package")
5120 (description
5121 "Jupyter core is the base package on which Jupyter projects rely.")
5122 (license license:bsd-3)))
5123
5124(define-public python2-jupyter-core
5125 (package-with-python2 python-jupyter-core))
5126
9ff01f2d
RW
5127(define-public python-jupyter-client
5128 (package
5129 (name "python-jupyter-client")
5130 (version "4.4.0")
5131 (source
5132 (origin
5133 (method url-fetch)
5134 (uri (pypi-uri "jupyter_client" version))
5135 (sha256
5136 (base32
5137 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
5138 (build-system python-build-system)
5139 ;; Tests fail because of missing native python kernel which I assume is
5140 ;; provided by the ipython package, which we cannot use because it would
5141 ;; cause a dependency cycle.
5142 (arguments `(#:tests? #f))
5143 (propagated-inputs
5144 `(("python-pyzmq" ,python-pyzmq)
5145 ("python-traitlets" ,python-traitlets)
5146 ("python-jupyter-core" ,python-jupyter-core)))
5147 (home-page "http://jupyter.org/")
5148 (synopsis "Jupyter protocol implementation and client libraries")
5149 (description
5150 "The @code{jupyter_client} package contains the reference implementation
5151of the Jupyter protocol. It also provides client and kernel management APIs
5152for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5153installing @code{kernelspec}s for use with Jupyter frontends.")
5154 (license license:bsd-3)))
5155
5156(define-public python2-jupyter-client
5157 (package-with-python2 python-jupyter-client))
5158
ab526102
RW
5159(define-public python-ipykernel
5160 (package
5161 (name "python-ipykernel")
f165648e 5162 (version "4.5.2")
ab526102
RW
5163 (source
5164 (origin
5165 (method url-fetch)
5166 (uri (pypi-uri "ipykernel" version))
5167 (sha256
f165648e 5168 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
ab526102
RW
5169 (build-system python-build-system)
5170 ;; The tests load a submodule of IPython. However, IPython itself depends
5171 ;; on ipykernel.
5172 (arguments `(#:tests? #f))
5173 (propagated-inputs
5174 ;; imported at runtime during connect
5175 `(("python-jupyter-client" ,python-jupyter-client)))
5176 (home-page "http://ipython.org")
5177 (synopsis "IPython Kernel for Jupyter")
5178 (description
5179 "This package provides the IPython kernel for Jupyter.")
5180 (license license:bsd-3)))
5181
5182(define-public python2-ipykernel
5183 (package-with-python2 python-ipykernel))
5184
5ff6effc
RW
5185(define-public python-testpath
5186 (package
5187 (name "python-testpath")
5188 (version "0.2")
5189 (source
5190 (origin
5191 (method url-fetch)
5192 (uri (string-append "https://github.com/jupyter/testpath/archive/"
5193 version ".tar.gz"))
5194 (file-name (string-append name "-" version ".tar.gz"))
5195 (sha256
5196 (base32
5197 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
5198 (build-system python-build-system)
5199 (arguments
5200 `(#:tests? #f ; this package does not even have a setup.py
b320f7bf
TD
5201 #:modules ((guix build python-build-system)
5202 (guix build utils)
5203 (srfi srfi-1))
5204 #:imported-modules (,@%python-build-system-modules
5205 (srfi srfi-1))
5ff6effc
RW
5206 #:phases
5207 (modify-phases %standard-phases
5208 (delete 'install)
5209 (replace 'build
b320f7bf
TD
5210 (lambda* (#:key inputs outputs #:allow-other-keys)
5211 (let* ((version (last
5212 (string-split (assoc-ref inputs "python") #\-)))
5213 (x.y (string-join (take (string-split version #\.) 2)
5214 "."))
5215 (dir (string-append
5216 (assoc-ref outputs "out")
5217 "/lib/python" x.y "/site-packages/testpath")))
5218 (mkdir-p dir)
5219 (copy-recursively "testpath" dir))
5220 #t)))))
5ff6effc
RW
5221 (home-page "https://github.com/takluyver/testpath")
5222 (synopsis "Test utilities for code working with files and commands")
5223 (description
5224 "Testpath is a collection of utilities for Python code working with files
5225and commands. It contains functions to check things on the filesystem, and
5226tools for mocking system commands and recording calls to those.")
5227 (license license:expat)))
5228
5229(define-public python2-testpath
5230 (package-with-python2 python-testpath))
5231
ae1ab9fe
FB
5232(define-public python-ipython
5233 (package
5234 (name "python-ipython")
fb25d348 5235 (version "5.2.2")
ae1ab9fe
FB
5236 (source
5237 (origin
fceac880 5238 (method url-fetch)
accd5f99 5239 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 5240 (sha256
fb25d348 5241 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
ae1ab9fe
FB
5242 (build-system python-build-system)
5243 (outputs '("out" "doc"))
3a0b1b9a
FB
5244 (propagated-inputs
5245 `(("python-pyzmq" ,python-pyzmq)
fb25d348 5246 ("python-prompt-toolkit" ,python-prompt-toolkit)
accd5f99 5247 ("python-terminado" ,python-terminado)
ae1ab9fe 5248 ("python-matplotlib" ,python-matplotlib)
5d26e542 5249 ("python-numpy" ,python-numpy)
ae1ab9fe 5250 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
5251 ("python-jinja2" ,python-jinja2)
5252 ("python-mistune" ,python-mistune)
accd5f99
RW
5253 ("python-pexpect" ,python-pexpect)
5254 ("python-pickleshare" ,python-pickleshare)
5255 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 5256 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
5257 ("python-traitlets" ,python-traitlets)
5258 ("python-ipykernel" ,python-ipykernel)
fb25d348 5259 ("python-nbformat" ,python-nbformat)
accd5f99
RW
5260 ("python-pygments" ,python-pygments)))
5261 (inputs
5262 `(("readline" ,readline)
5263 ("which" ,which)))
ae1ab9fe 5264 (native-inputs
fb25d348
TD
5265 `(("graphviz" ,graphviz)
5266 ("pkg-config" ,pkg-config)
accd5f99
RW
5267 ("python-requests" ,python-requests) ;; for tests
5268 ("python-testpath" ,python-testpath)
5269 ("python-nose" ,python-nose)
ae1ab9fe 5270 ("python-sphinx" ,python-sphinx)
fb25d348 5271 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
ae1ab9fe 5272 ("texlive" ,texlive)
f3b98f4f 5273 ("texinfo" ,texinfo)))
ae1ab9fe 5274 (arguments
89b5c60e 5275 `(#:phases
3a0b1b9a
FB
5276 (modify-phases %standard-phases
5277 (add-after
5278 'install 'install-doc
5279 (lambda* (#:key inputs outputs #:allow-other-keys)
5280 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5281 (doc (string-append data "/doc/" ,name "-" ,version))
5282 (html (string-append doc "/html"))
5283 (man1 (string-append data "/man/man1"))
5284 (info (string-append data "/info"))
fb25d348
TD
5285 (examples (string-append doc "/examples"))
5286 (python-arg (string-append "PYTHON=" (which "python"))))
afd3d931 5287 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
5288 ;; Make installed package available for running the tests
5289 (add-installed-pythonpath inputs outputs)
3a0b1b9a 5290 (with-directory-excursion "docs"
accd5f99
RW
5291 ;; FIXME: pdf fails to build
5292 ;;(system* "make" "pdf" "PAPER=a4")
fb25d348
TD
5293 (system* "make" python-arg "html")
5294 (system* "make" python-arg "info"))
3a0b1b9a
FB
5295 (copy-recursively "docs/man" man1)
5296 (copy-recursively "examples" examples)
accd5f99 5297 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
5298 ;; (copy-file "docs/build/latex/ipython.pdf"
5299 ;; (string-append doc "/ipython.pdf"))
5300 (mkdir-p info)
5301 (copy-file "docs/build/texinfo/ipython.info"
5302 (string-append info "/ipython.info"))
5303 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5304 ;; Tests can only be run after the library has been installed and not
5305 ;; within the source directory.
5306 (delete 'check)
5307 (add-after
5308 'install 'check
eee5cd04 5309 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
5310 (if tests?
5311 (with-directory-excursion "/tmp"
eee5cd04
HG
5312 ;; Make installed package available for running the tests
5313 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
5314 (setenv "HOME" "/tmp/") ;; required by a test
5315 (zero? (system* (string-append (assoc-ref outputs "out")
5316 "/bin/iptest"))))
5317 #t)))
5318 (add-before
5319 'install 'fix-tests
5320 (lambda* (#:key inputs #:allow-other-keys)
5321 (substitute* "./IPython/utils/_process_posix.py"
5322 (("/usr/bin/env', 'which") (which "which")))
5323 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5324 (("#!/usr/bin/env python")
5325 (string-append "#!" (which "python"))))
5326 ;; Disable 1 failing test
5327 (substitute* "./IPython/core/tests/test_magic.py"
5328 (("def test_dirops\\(\\):" all)
5329 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
5330 (home-page "http://ipython.org")
5331 (synopsis "IPython is a tool for interactive computing in Python")
5332 (description
5333 "IPython provides a rich architecture for interactive computing with:
5334Powerful interactive shells, a browser-based notebook, support for interactive
5335data visualization, embeddable interpreters and tools for parallel
5336computing.")
135ba811
EF
5337 (license license:bsd-3)
5338 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
5339
5340(define-public python2-ipython
135ba811 5341 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
5342 (package
5343 (inherit ipython)
3a0b1b9a 5344 ;; FIXME: add pyreadline once available.
fb25d348
TD
5345 (propagated-inputs
5346 `(("python2-backports-shutil-get-terminal-size"
5347 ,python2-backports-shutil-get-terminal-size)
5348 ("python2-pathlib2" ,python2-pathlib2)
5349 ,@(package-propagated-inputs ipython)))
e62600fe 5350 (native-inputs
135ba811 5351 `(("python2-mock" ,python2-mock)
77a6932a 5352 ,@(package-native-inputs ipython))))))
03411993
AE
5353
5354(define-public python-isodate
5355 (package
5356 (name "python-isodate")
b6785c2e 5357 (version "0.5.4")
03411993
AE
5358 (source
5359 (origin
5360 (method url-fetch)
b6785c2e 5361 (uri (pypi-uri "isodate" version))
03411993
AE
5362 (sha256
5363 (base32
b6785c2e 5364 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5365 (build-system python-build-system)
03411993
AE
5366 (home-page
5367 "http://cheeseshop.python.org/pypi/isodate")
5368 (synopsis
5369 "Python date parser and formatter")
5370 (description
5371 "Python-isodate is a python module for parsing and formatting
5372ISO 8601 dates, time and duration.")
3f641af0 5373 (license license:bsd-3)))
03411993
AE
5374
5375(define-public python2-isodate
5376 (package-with-python2 python-isodate))
673ab897
AE
5377
5378(define-public python-html5lib
5379 (package
5380 (name "python-html5lib")
a14061aa 5381 (version "1.0b10")
673ab897
AE
5382 (source
5383 (origin
5384 (method url-fetch)
fee04c19 5385 (uri (pypi-uri "html5lib" version))
673ab897
AE
5386 (sha256
5387 (base32
a14061aa 5388 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5389 (build-system python-build-system)
3dd75476 5390 (propagated-inputs
4eb6ed28
MB
5391 `(("python-six" ,python-six)
5392 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5393 (arguments
5394 `(#:test-target "check"))
5395 (home-page
5396 "https://github.com/html5lib/html5lib-python")
5397 (synopsis
5398 "Python HTML parser based on the WHATWG HTML specifcation")
5399 (description
5400 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5401and written in Python.")
bd3fa666 5402 (license license:expat)))
673ab897
AE
5403
5404(define-public python2-html5lib
5405 (package-with-python2 python-html5lib))
e99f4211 5406
8ee62c97
RW
5407;; Needed for python-bleach, a dependency of python-notebook
5408(define-public python-html5lib-0.9
5409 (package
5410 (inherit python-html5lib)
5411 (version "0.999")
5412 (source
5413 (origin
5414 (method url-fetch)
5415 (uri (pypi-uri "html5lib" version))
5416 (sha256
5417 (base32
5418 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5419
5420(define-public python2-html5lib-0.9
5421 (package-with-python2 python-html5lib-0.9))
5422
adbca19e
MB
5423(define-public python-webencodings
5424 (package
5425 (name "python-webencodings")
5426 (version "0.5")
5427 (source (origin
5428 (method url-fetch)
5429 (uri (pypi-uri "webencodings" version))
5430 (sha256
5431 (base32
5432 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5433 (build-system python-build-system)
5434 (arguments
5435 '(#:phases
5436 (modify-phases %standard-phases
5437 (replace 'check
5438 (lambda _
5439 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5440 (native-inputs
5441 `(("python-pytest" ,python-pytest)))
5442 (home-page "https://github.com/SimonSapin/python-webencodings")
5443 (synopsis "Character encoding aliases for legacy web content")
5444 (description
5445 "In order to be compatible with legacy web content when interpreting
5446something like @code{Content-Type: text/html; charset=latin1}, tools need
5447to use a particular set of aliases for encoding labels as well as some
5448overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
5449the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
5450or @code{UTF-16} BOM takes precedence over any other encoding declaration.
5451The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
5452defines all such details so that implementations do not have to
5453reverse-engineer each other.
5454
5455This module implements the Encoding standard and has encoding labels and
5456BOM detection, but the actual implementation for encoders and decoders
5457is Python’s.")
5458 (license license:bsd-3)))
5459
5460(define-public python2-webencodings
5461 (package-with-python2 python-webencodings))
5462
e99f4211
MW
5463(define-public python-urwid
5464 (package
5465 (name "python-urwid")
51ff41f6 5466 (version "1.3.1")
e99f4211
MW
5467 (source
5468 (origin
5469 (method url-fetch)
b97c1bfd 5470 (uri (pypi-uri "urwid" version))
e99f4211
MW
5471 (sha256
5472 (base32
51ff41f6 5473 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 5474 (build-system python-build-system)
b97c1bfd
LF
5475 (arguments
5476 `(#:phases
5477 (modify-phases %standard-phases
5478 ;; Disable failing test. Bug filed upstream:
5479 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5480 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5481 (add-after 'unpack 'disable-failing-test
5482 (lambda _
5483 (substitute* "urwid/tests/test_event_loops.py"
5484 (("test_remove_watch_file")
5485 "disable_remove_watch_file")))))))
e99f4211
MW
5486 (home-page "http://urwid.org")
5487 (synopsis "Console user interface library for Python")
5488 (description
5489 "Urwid is a curses-based UI/widget library for Python. It includes many
5490features useful for text console applications.")
3f641af0 5491 (license license:lgpl2.1+)))
e99f4211
MW
5492
5493(define-public python2-urwid
5494 (package-with-python2 python-urwid))
d95a56c6 5495
5220022a
JL
5496(define-public python-openid
5497 (package
5498 (name "python-openid")
5499 (version "3.0.10")
5500 (source
5501 (origin
5502 (method url-fetch)
5503 (uri (pypi-uri "python3-openid" version))
5504 (sha256
5505 (base32
5506 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
5507 (build-system python-build-system)
5508 (home-page "https://github.com/necaris/python3-openid")
5509 (synopsis "OpenID support for servers and consumers")
5510 (description "This library provides OpenID authentication for Python, both
5511for clients and servers.")
5512 (license license:asl2.0)))
5513
3ef00f56 5514(define-public python2-openid
5515 (package
5516 (name "python2-openid")
5517 (version "2.2.5")
5518 (source
5519 (origin
5520 (method url-fetch)
5521 (uri (pypi-uri "python-openid" version))
5522 (sha256
5523 (base32
5524 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
5525 (build-system python-build-system)
5526 (arguments
5527 ;; Python 3 support is in `python3-openid`, a separate package.
5528 `(#:python ,python-2))
5529 (home-page "https://github.com/openid/python-openid")
5530 (synopsis "OpenID support for servers and consumers")
5531 (description "This library provides OpenID authentication for Python, both
5532for clients and servers.")
5533 (license license:asl2.0)))
5534
47d0b292
TS
5535(define-public python-urwidtrees
5536 (package
5537 (name "python-urwidtrees")
37ec4623 5538 (version "1.0.2")
47d0b292
TS
5539 (source
5540 (origin
5541 (method url-fetch)
37ec4623
TS
5542 ;; package author intends on distributing via github rather than pypi:
5543 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5544 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5545 version ".tar.gz"))
5546 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5547 (sha256
5548 (base32
37ec4623 5549 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5550 (build-system python-build-system)
5551 (arguments
5552 '(#:tests? #f)) ; no tests
f22efa01 5553 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
5554 (home-page "https://github.com/pazz/urwidtrees")
5555 (synopsis "Tree widgets for urwid")
5556 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5557toolkit. Use it to build trees of widgets.")
3f641af0 5558 (license license:gpl3+)))
47d0b292
TS
5559
5560(define-public python2-urwidtrees
5561 (package-with-python2 python-urwidtrees))
5562
d95a56c6
PAR
5563(define-public python-dbus
5564 (package
5565 (name "python-dbus")
5566 (version "1.2.0")
5567 (source
5568 (origin
5569 (method url-fetch)
5570 (uri (string-append
5cc3096c 5571 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5572 version ".tar.gz"))
5573 (sha256
5574 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5575 (build-system gnu-build-system)
6717c879
SB
5576 (arguments
5577 '(#:phases
5578 (modify-phases %standard-phases
5579 (add-before
5580 'check 'pre-check
5581 (lambda _
5582 ;; XXX: For the missing '/etc/machine-id'.
5583 (substitute* "test/run-test.sh"
5584 (("DBUS_FATAL_WARNINGS=1")
5585 "DBUS_FATAL_WARNINGS=0"))
5586 #t)))))
d95a56c6
PAR
5587 (native-inputs
5588 `(("pkg-config" ,pkg-config)))
5589 (inputs
5590 `(("python" ,python)
2e88d113 5591 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5592 (synopsis "Python bindings for D-bus")
5593 (description "python-dbus provides bindings for libdbus, the reference
5594implementation of D-Bus.")
5595 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5596 (license license:expat)))
b52af02b
MW
5597
5598(define-public python2-dbus
5599 (package (inherit python-dbus)
5600 (name "python2-dbus")
5601 (inputs `(("python" ,python-2)
5602 ,@(alist-delete "python"
5603 (package-inputs python-dbus)
5604 equal?)))
5605 ;; FIXME: on Python 2, the test_utf8 fails with:
5606 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5607 (arguments `(#:tests? #f))))
a6ac8332
AE
5608
5609(define-public python-apsw
5610 (package
5611 (name "python-apsw")
917708c2 5612 (version "3.9.2-r1")
a6ac8332
AE
5613 (source
5614 (origin
5615 (method url-fetch)
917708c2 5616 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5617 (sha256
5618 (base32
917708c2 5619 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5620 (build-system python-build-system)
5621 (inputs
f3b98f4f 5622 `(("sqlite" ,sqlite)))
a6ac8332
AE
5623 (arguments
5624 `(#:phases
154d207c
MB
5625 (modify-phases %standard-phases
5626 (delete 'check)
5627 (add-after 'install 'check
5628 (lambda* (#:key inputs outputs #:allow-other-keys)
5629 (add-installed-pythonpath inputs outputs)
5630 (zero? (system* "python" "setup.py" "test")))))))
a6ac8332
AE
5631 (home-page "https://github.com/rogerbinns/apsw/")
5632 (synopsis "Another Python SQLite Wrapper")
5633 (description "APSW is a Python wrapper for the SQLite
5634embedded relational database engine. In contrast to other wrappers such as
5635pysqlite it focuses on being a minimal layer over SQLite attempting just to
5636translate the complete SQLite API into Python.")
abde5f37 5637 (license license:zlib)))
a6ac8332
AE
5638
5639(define-public python2-apsw
5640 (package-with-python2 python-apsw))
26b307e2
AE
5641
5642(define-public python-lxml
5643 (package
5644 (name "python-lxml")
d58a3203 5645 (version "3.6.0")
26b307e2
AE
5646 (source
5647 (origin
5648 (method url-fetch)
97bbc480 5649 (uri (pypi-uri "lxml" version))
26b307e2 5650 (sha256
d58a3203
EF
5651 (base32
5652 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5653 (build-system python-build-system)
5654 (inputs
5655 `(("libxml2" ,libxml2)
f3b98f4f 5656 ("libxslt" ,libxslt)))
26b307e2
AE
5657 (home-page "http://lxml.de/")
5658 (synopsis
5659 "Python XML processing library")
5660 (description
5661 "The lxml XML toolkit is a Pythonic binding for the C libraries
5662libxml2 and libxslt.")
3f641af0 5663 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5664
5665(define-public python2-lxml
5666 (package-with-python2 python-lxml))
4ed20663 5667
b32a1e47
CAW
5668;; beautifulsoup4 has a totally different namespace than 3.x,
5669;; and pypi seems to put it under its own name, so I guess we should too
5670(define-public python-beautifulsoup4
5671 (package
5672 (name "python-beautifulsoup4")
67fd4a12 5673 (version "4.5.1")
b32a1e47
CAW
5674 (source
5675 (origin
5676 (method url-fetch)
5677 (uri (pypi-uri "beautifulsoup4" version))
5678 (sha256
5679 (base32
67fd4a12 5680 "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"))))
b32a1e47 5681 (build-system python-build-system)
5f37f0b6
LF
5682 (arguments
5683 `(#:phases
5684 (modify-phases %standard-phases
5685 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5686 ;; must use this conversion script when building with Python 3. The
5687 ;; conversion script also runs the tests.
5688 ;; For more information, see the file 'convert-py3k' in the source
5689 ;; distribution.
5690 (replace 'check
5691 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5692 (home-page
5693 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5694 (synopsis
5695 "Python screen-scraping library")
5696 (description
5697 "Beautiful Soup is a Python library designed for rapidly setting up
5698screen-scraping projects. It offers Pythonic idioms for navigating,
5699searching, and modifying a parse tree, providing a toolkit for
5700dissecting a document and extracting what you need. It automatically
5701converts incoming documents to Unicode and outgoing documents to UTF-8.")
ee94ca11
MB
5702 (license license:expat)
5703 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
b32a1e47
CAW
5704
5705(define-public python2-beautifulsoup4
5706 (package
5707 (inherit (package-with-python2
5708 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 5709 (arguments `(#:python ,python-2))))
b32a1e47 5710
4dcb135e 5711(define-public python-cssutils
092e86f5 5712 (package
4dcb135e 5713 (name "python-cssutils")
58d1d816 5714 (version "1.0.1")
092e86f5
AE
5715 (source
5716 (origin
5717 (method url-fetch)
58d1d816 5718 (uri (pypi-uri "cssutils" version))
092e86f5 5719 (sha256
58d1d816
EF
5720 (base32
5721 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5722 (build-system python-build-system)
5723 (native-inputs
4dcb135e 5724 `(("unzip" ,unzip))) ; for unpacking the source
092e86f5 5725 (arguments
4dcb135e 5726 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
092e86f5
AE
5727 (home-page "http://cthedot.de/cssutils/")
5728 (synopsis
5729 "CSS Cascading Style Sheets library for Python")
5730 (description
5731 "Cssutils is a Python package for parsing and building CSS
5732Cascading Style Sheets. Currently it provides a DOM only and no rendering
5733options.")
3f641af0 5734 (license license:lgpl3+)))
880ff77c 5735
4dcb135e
EB
5736(define-public python2-cssutils
5737 (package-with-python2 python-cssutils))
5738
880ff77c
AE
5739(define-public python-cssselect
5740 (package
5741 (name "python-cssselect")
d5ccd9ab 5742 (version "0.9.2")
880ff77c
AE
5743 (source
5744 (origin
5745 (method url-fetch)
d5ccd9ab 5746 (uri (pypi-uri "cssselect" version))
880ff77c 5747 (sha256
d5ccd9ab
EF
5748 (base32
5749 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 5750 (build-system python-build-system)
880ff77c
AE
5751 (arguments
5752 ;; tests fail with message
5753 ;; AttributeError: 'module' object has no attribute 'tests'
5754 `(#:tests? #f))
5755 (home-page
5756 "https://pythonhosted.org/cssselect/")
5757 (synopsis
5758 "CSS3 selector parser and translator to XPath 1.0")
5759 (description
5760 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5761them to XPath 1.0 expressions. Such expressions can be used in lxml or
5762another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5763 (license license:bsd-3)))
880ff77c
AE
5764
5765(define-public python2-cssselect
5766 (package-with-python2 python-cssselect))
60357f99 5767
03702173 5768(define-public python-openid-cla
5769 (package
5770 (name "python-openid-cla")
5771 (version "1.2")
5772 (source
5773 (origin
5774 (method url-fetch)
5775 (uri (pypi-uri "python-openid-cla" version))
5776 (sha256
5777 (base32
5778 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
5779 (build-system python-build-system)
019ccdb6 5780 (arguments '(#:tests? #f)) ; No tests.
03702173 5781 (home-page "https://github.com/puiterwijk/python-openid-cla/")
5782 (synopsis "Implementation of the OpenID CLA extension for python-openid")
5783 (description "@code{openid-cla} is an implementation of the OpenID
5784contributor license agreement extension for python-openid.")
5785 (license license:bsd-3)))
5786
5787(define-public python2-openid-cla
5788 (package-with-python2 python-openid-cla))
5789
a0e41de4 5790(define-public python-openid-teams
5791 (package
5792 (name "python-openid-teams")
5793 (version "1.1")
5794 (source
5795 (origin
5796 (method url-fetch)
5797 (uri (pypi-uri "python-openid-teams" version))
5798 (sha256
5799 (base32
5800 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
5801 (build-system python-build-system)
ac72d3d2 5802 (arguments '(#:tests? #f)) ; No tests.
a0e41de4 5803 (home-page "https://github.com/puiterwijk/python-openid-teams/")
5804 (synopsis "Implementation of the OpenID teams extension for python-openid")
5805 (description
5806 "@code{openid-teams} is an implementation of the OpenID
5807teams extension for python-openid.")
5808 (license license:bsd-3)))
5809
5810(define-public python2-openid-teams
5811 (package-with-python2 python-openid-teams))
5812
60357f99
AE
5813(define-public python-netifaces
5814 (package
5815 (name "python-netifaces")
5816 (version "0.10.4")
5817 (source
5818 (origin
5819 (method url-fetch)
5820 (uri (string-append
5821 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5822 version
5823 ".tar.gz"))
5824 (sha256
5825 (base32
5826 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5827 (build-system python-build-system)
60357f99
AE
5828 (home-page
5829 "https://bitbucket.org/al45tair/netifaces")
5830 (synopsis
5831 "Python module for portable network interface information")
5832 (description
5833 "Netifaces is a Python module providing information on network
5834interfaces in an easy and portable manner.")
5835 (license license:expat)))
5836
5837(define-public python2-netifaces
5838 (package-with-python2 python-netifaces))
92cb152b 5839
32f77c04
RW
5840(define-public python-networkx
5841 (package
5842 (name "python-networkx")
a4d9609c 5843 (version "1.11")
32f77c04
RW
5844 (source
5845 (origin
5846 (method url-fetch)
a4d9609c 5847 (uri (pypi-uri "networkx" version))
32f77c04 5848 (sha256
a4d9609c 5849 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5850 (build-system python-build-system)
5851 ;; python-decorator is needed at runtime
5852 (propagated-inputs
5853 `(("python-decorator" ,python-decorator)))
5854 (native-inputs
f3b98f4f 5855 `(("python-nose" ,python-nose)))
32f77c04
RW
5856 (home-page "http://networkx.github.io/")
5857 (synopsis "Python module for creating and manipulating graphs and networks")
5858 (description
5859 "NetworkX is a Python package for the creation, manipulation, and study
5860of the structure, dynamics, and functions of complex networks.")
3f641af0 5861 (license license:bsd-3)))
32f77c04
RW
5862
5863(define-public python2-networkx
5864 (package-with-python2 python-networkx))
5865
92cb152b
RW
5866(define-public snakemake
5867 (package
5868 (name "snakemake")
7b93d866 5869 (version "3.9.0")
92cb152b
RW
5870 (source
5871 (origin
5872 (method url-fetch)
7b93d866 5873 (uri (pypi-uri "snakemake" version))
92cb152b 5874 (sha256
7b93d866 5875 (base32 "1d48ql0010v9ls6mac7fz6j391gm4h74a64hqgw89s0vfqgdyzdl"))))
92cb152b 5876 (build-system python-build-system)
7b93d866
MB
5877 (arguments
5878 ;; TODO: Package missing test dependencies.
5879 '(#:tests? #f))
5880 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
92cb152b
RW
5881 (synopsis "Python-based execution environment for make-like workflows")
5882 (description
5883 "Snakemake aims to reduce the complexity of creating workflows by
5884providing a clean and modern domain specific specification language (DSL) in
5885Python style, together with a fast and comfortable execution environment.")
5886 (license license:expat)))
a1920bc9 5887
35de1fbd
RW
5888(define-public python-seaborn
5889 (package
5890 (name "python-seaborn")
ccc18762 5891 (version "0.7.1")
35de1fbd
RW
5892 (source
5893 (origin
5894 (method url-fetch)
fc899d4f 5895 (uri (pypi-uri "seaborn" version))
35de1fbd 5896 (sha256
ccc18762 5897 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
35de1fbd 5898 (build-system python-build-system)
6f976df6
MB
5899 (arguments
5900 '(#:tests? #f)) ; Tests requires a running X11 server.
35de1fbd
RW
5901 (propagated-inputs
5902 `(("python-pandas" ,python-pandas)
5903 ("python-matplotlib" ,python-matplotlib)
5904 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5905 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5906 (synopsis "Statistical data visualization")
5907 (description
5908 "Seaborn is a library for making attractive and informative statistical
5909graphics in Python. It is built on top of matplotlib and tightly integrated
5910with the PyData stack, including support for numpy and pandas data structures
5911and statistical routines from scipy and statsmodels.")
3f641af0 5912 (license license:bsd-3)
fc899d4f 5913 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5914
5915(define-public python2-seaborn
fc899d4f
EF
5916 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5917 (package
5918 (inherit base)
5919 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 5920 ,@(package-propagated-inputs base))))))
35de1fbd 5921
58a35665
MB
5922(define-public python-mpmath
5923 (package
5924 (name "python-mpmath")
5925 (version "0.19")
5926 (source (origin
5927 (method url-fetch)
5928 (uri (string-append "http://mpmath.org/files/mpmath-"
5929 version ".tar.gz"))
5930 (sha256
5931 (base32
5932 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
5933 (build-system python-build-system)
5934 (arguments
5935 '(#:phases
5936 (modify-phases %standard-phases
5937 (replace 'check
5938 (lambda _
5939 (zero?
5940 (system* "python" "mpmath/tests/runtests.py" "-local")))))))
5941 (home-page "http://mpmath.org")
5942 (synopsis "Arbitrary-precision floating-point arithmetic in python")
5943 (description
5944 "@code{mpmath} can be used as an arbitrary-precision substitute for
5945Python's float/complex types and math/cmath modules, but also does much
5946more advanced mathematics.")
5947 (license license:bsd-3)))
5948
5949(define-public python2-mpmath
5950 (package-with-python2 python-mpmath))
5951
90fc547f
RW
5952(define-public python-sympy
5953 (package
5954 (name "python-sympy")
52f622ef 5955 (version "1.0")
90fc547f
RW
5956 (source
5957 (origin
5958 (method url-fetch)
5959 (uri (string-append
5960 "https://github.com/sympy/sympy/releases/download/sympy-"
5961 version "/sympy-" version ".tar.gz"))
5962 (sha256
52f622ef 5963 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
90fc547f 5964 (build-system python-build-system)
52f622ef
MB
5965 (propagated-inputs
5966 `(("python-mpmath" ,python-mpmath)))
90fc547f
RW
5967 (home-page "http://www.sympy.org/")
5968 (synopsis "Python library for symbolic mathematics")
5969 (description
5970 "SymPy is a Python library for symbolic mathematics. It aims to become a
5971full-featured computer algebra system (CAS) while keeping the code as simple
5972as possible in order to be comprehensible and easily extensible.")
3f641af0 5973 (license license:bsd-3)))
90fc547f
RW
5974
5975(define-public python2-sympy
5976 (package-with-python2 python-sympy))
5977
e8c9b010
SR
5978(define-public python-q
5979 (package
5980 (name "python-q")
5981 (version "2.6")
5982 (source
5983 (origin
5984 (method url-fetch)
5985 (uri (pypi-uri "q" version))
5986 (sha256
5987 (base32
5988 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
5989 (build-system python-build-system)
5990 (home-page "https://github.com/zestyping/q")
5991 (synopsis "Quick-and-dirty debugging output for tired programmers")
5992 (description
5993 "q is a Python module for \"print\" style of debugging Python code. It
5994provides convenient short API for print out of values, tracebacks, and
5995falling into the Python interpreter.")
f210e944 5996 (license license:asl2.0)))
e8c9b010
SR
5997
5998(define-public python2-q
f210e944 5999 (package-with-python2 python-q))
e8c9b010 6000
a1920bc9
FB
6001(define-public python-testlib
6002 (package
6003 (name "python-testlib")
6004 (version "0.6.5")
6005 (source
6006 (origin
6007 (method url-fetch)
6008 (uri (string-append
6009 "https://pypi.python.org/packages/source/t/testlib/testlib-"
6010 version ".zip"))
6011 (sha256
6012 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
6013 (build-system python-build-system)
a1920bc9 6014 (native-inputs
632735f2 6015 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
6016 (synopsis "Python micro test suite harness")
6017 (description "A micro unittest suite harness for Python.")
6018 (home-page "https://github.com/trentm/testlib")
1cb9c006 6019 (license license:expat)))
a1920bc9
FB
6020
6021(define-public python2-testlib
6022 (package-with-python2 python-testlib))
db62afa5
LC
6023
6024(define-public python2-xlib
6025 (package
6026 (name "python2-xlib")
6027 (version "0.14")
6028 (source (origin
6029 (method url-fetch)
de67e922
LF
6030 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6031 "/" version "/"
db62afa5
LC
6032 "python-xlib-" version ".tar.gz"))
6033 (sha256
6034 (base32
6035 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6036 (build-system python-build-system)
6037 (arguments
6038 `(#:python ,python-2 ;Python 2 only
6039 #:tests? #f)) ;no tests
db62afa5
LC
6040 (home-page "http://python-xlib.sourceforge.net/")
6041 (synopsis "Python X11 client library")
6042 (description
6043 "The Python X Library is intended to be a fully functional X client
6044library for Python programs. It is useful to implement low-level X clients.
6045It is written entirely in Python.")
3f641af0 6046 (license license:gpl2+)))
0234ca06
DT
6047
6048(define-public python-singledispatch
6049 (package
6050 (name "python-singledispatch")
6051 (version "3.4.0.3")
6052 (source
6053 (origin
6054 (method url-fetch)
bdb67d84 6055 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
6056 (sha256
6057 (base32
6058 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6059 (build-system python-build-system)
5e1c9d24
HG
6060 (native-inputs
6061 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
6062 (home-page
6063 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6064 (synopsis "Backport of singledispatch feature from Python 3.4")
6065 (description
6066 "This library brings functools.singledispatch from Python 3.4 to Python
60672.6-3.3.")
6068 (license license:expat)))
6069
6070(define-public python2-singledispatch
6071 (package-with-python2 python-singledispatch))
feaae484 6072
310d218f
RW
6073(define-public python-tornado
6074 (package
6075 (name "python-tornado")
a724924b 6076 (version "4.3")
310d218f
RW
6077 (source
6078 (origin
6079 (method url-fetch)
a724924b 6080 (uri (pypi-uri "tornado" version))
310d218f 6081 (sha256
a724924b 6082 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 6083 (build-system python-build-system)
3fe2c209
MB
6084 (arguments
6085 '(;; FIXME: Two tests error out with:
6086 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
6087 ;; #:phases
6088 ;; (modify-phases %standard-phases
6089 ;; (replace 'check
6090 ;; (lambda _
6091 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
6092 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
6093 ;; (zero? (system* "python" "-m" "tornado.test")))))
6094 #:tests? #f))
310d218f 6095 (native-inputs
b455439b 6096 `(("python-certifi" ,python-certifi)))
f22efa01 6097 (propagated-inputs
b455439b 6098 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 6099 (home-page "http://www.tornadoweb.org/")
310d218f
RW
6100 (synopsis "Python web framework and asynchronous networking library")
6101 (description
6102 "Tornado is a Python web framework and asynchronous networking library,
6103originally developed at FriendFeed. By using non-blocking network I/O,
6104Tornado can scale to tens of thousands of open connections, making it ideal
6105for long polling, WebSockets, and other applications that require a long-lived
6106connection to each user.")
3f641af0 6107 (license license:asl2.0)
b455439b 6108 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
6109
6110(define-public python2-tornado
b455439b 6111 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 6112 (package (inherit tornado)
f22efa01 6113 (propagated-inputs
310d218f
RW
6114 `(("python2-backport-ssl-match-hostname"
6115 ,python2-backport-ssl-match-hostname)
b455439b 6116 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 6117 ,@(package-propagated-inputs tornado))))))
310d218f 6118
6b59fc10
EF
6119;; the python- version can be removed with python-3.5
6120(define-public python-backports-abc
6121 (package
6122 (name "python-backports-abc")
27f9148e 6123 (version "0.5")
6b59fc10
EF
6124 (source
6125 (origin
6126 (method url-fetch)
6127 (uri (pypi-uri "backports_abc" version))
6128 (sha256
6129 (base32
27f9148e 6130 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6b59fc10 6131 (build-system python-build-system)
6b59fc10 6132 (home-page "https://github.com/cython/backports_abc")
66e07664 6133 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
6134 (description
6135 "Python-backports-abc provides a backport of additions to the
6136'collections.abc' module in Python-3.5.")
3f641af0 6137 (license license:psfl)))
6b59fc10
EF
6138
6139(define-public python2-backports-abc
6140 (package-with-python2 python-backports-abc))
6141
ec074213
TD
6142(define-public python2-backports-shutil-get-terminal-size
6143 (package
6144 (name "python2-backports-shutil-get-terminal-size")
6145 (version "1.0.0")
6146 (source
6147 (origin
6148 (method url-fetch)
6149 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6150 (sha256
6151 (base32
6152 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6153 (build-system python-build-system)
6154 (arguments
c0446791
MB
6155 `(#:python ,python-2
6156 #:phases
6157 (modify-phases %standard-phases
6158 (replace 'check
6159 (lambda _
6160 (zero? (system* "py.test" "-v")))))))
6161 (native-inputs
6162 `(("python2-pytest" ,python2-pytest)))
ec074213
TD
6163 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6164 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6165 (description
6166 "This package provides a backport of the @code{get_terminal_size
6167function} from Python 3.3's @code{shutil}.
6168Unlike the original version it is written in pure Python rather than C,
6169so it might be a tiny bit slower.")
6170 (license license:expat)))
6171
feaae484
SB
6172(define-public python-waf
6173 (package
6174 (name "python-waf")
7dd55dfe 6175 (version "1.9.5")
feaae484
SB
6176 (source (origin
6177 (method url-fetch)
bae67829 6178 (uri (string-append "https://waf.io/"
feaae484
SB
6179 "waf-" version ".tar.bz2"))
6180 (sha256
6181 (base32
7dd55dfe 6182 "1sl3ipi2czds57rlzjnpdzqa0skx8asfvmh3qmibpvdwf15rpppg"))))
feaae484
SB
6183 (build-system python-build-system)
6184 (arguments
6185 '(#:phases
6186 (modify-phases %standard-phases
6187 (replace 'build
7dd55dfe
EF
6188 (lambda _
6189 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 6190 (replace 'check
7dd55dfe
EF
6191 (lambda _
6192 (zero? (system* "python" "waf" "--version"))))
feaae484 6193 (replace 'install
7dd55dfe
EF
6194 (lambda _
6195 (copy-file "waf" %output))))))
6196 (home-page "http://waf.io/")
feaae484
SB
6197 (synopsis "Python-based build system")
6198 (description
6199 "Waf is a Python-based framework for configuring, compiling and installing
6200applications.")
3f641af0 6201 (license license:bsd-3)))
feaae484
SB
6202
6203(define-public python2-waf
6204 (package-with-python2 python-waf))
45203542
RW
6205
6206(define-public python-pyzmq
6207 (package
6208 (name "python-pyzmq")
3655ee76 6209 (version "15.1.0")
45203542
RW
6210 (source
6211 (origin
6212 (method url-fetch)
3655ee76 6213 (uri (pypi-uri "pyzmq" version))
45203542 6214 (sha256
3655ee76 6215 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
6216 (build-system python-build-system)
6217 (arguments
6218 `(#:configure-flags
6219 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6220 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6221 ;; --inplace' for 'python setup.py test' to work.
6222 #:tests? #f))
6223 (inputs
6224 `(("zeromq" ,zeromq)))
6225 (native-inputs
6226 `(("pkg-config" ,pkg-config)
f3b98f4f 6227 ("python-nose" ,python-nose)))
45203542
RW
6228 (home-page "http://github.com/zeromq/pyzmq")
6229 (synopsis "Python bindings for 0MQ")
6230 (description
6231 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 6232 (license license:bsd-4)))
45203542
RW
6233
6234(define-public python2-pyzmq
6235 (package-with-python2 python-pyzmq))
d889e6c4
CR
6236
6237(define-public python-pep8
6238 (package
6239 (name "python-pep8")
db251311 6240 (version "1.7.0")
d889e6c4
CR
6241 (source
6242 (origin
6243 (method url-fetch)
db251311 6244 (uri (pypi-uri "pep8" version))
d889e6c4
CR
6245 (sha256
6246 (base32
db251311 6247 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 6248 (build-system python-build-system)
d889e6c4
CR
6249 (home-page "http://pep8.readthedocs.org/")
6250 (synopsis "Python style guide checker")
6251 (description
6252 "This tools checks Python code against some of the style conventions in
6253PEP 8.")
6254 (license license:expat)))
6255
6256(define-public python2-pep8
6257 (package-with-python2 python-pep8))
e31d7f44
CR
6258
6259(define-public python-pyflakes
6260 (package
6261 (name "python-pyflakes")
2abc3972 6262 (version "1.0.0")
e31d7f44
CR
6263 (source
6264 (origin
6265 (method url-fetch)
2abc3972 6266 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
6267 (sha256
6268 (base32
2abc3972 6269 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 6270 (build-system python-build-system)
e31d7f44
CR
6271 (home-page
6272 "https://github.com/pyflakes/pyflakes")
6273 (synopsis "Passive checker of Python programs")
6274 (description
6275 "Pyflakes statically checks Python source code for common errors.")
6276 (license license:expat)))
a59e017c 6277
7261d9eb
CR
6278(define-public python2-pyflakes
6279 (package-with-python2 python-pyflakes))
6280
a59e017c
CR
6281(define-public python-mccabe
6282 (package
6283 (name "python-mccabe")
c6ebd40d 6284 (version "0.4.0")
a59e017c
CR
6285 (source
6286 (origin
6287 (method url-fetch)
c6ebd40d 6288 (uri (pypi-uri "mccabe" version))
a59e017c
CR
6289 (sha256
6290 (base32
c6ebd40d 6291 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 6292 (build-system python-build-system)
328bb95d 6293 (native-inputs
c6ebd40d 6294 `(("python-pytest" ,python-pytest)
f3b98f4f 6295 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
6296 (home-page "https://github.com/flintwork/mccabe")
6297 (synopsis "McCabe checker, plugin for flake8")
6298 (description
6299 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
6300complexity of Python source code.")
7362371d 6301 (license license:expat)))
a59e017c
CR
6302
6303(define-public python2-mccabe
6304 (package-with-python2 python-mccabe))
e8df8f47 6305
7477fbb1
CR
6306(define-public python-mccabe-0.2.1
6307 (package (inherit python-mccabe)
6308 (version "0.2.1")
6309 (source
6310 (origin
6311 (method url-fetch)
6312 (uri (pypi-uri "mccabe" version))
6313 (sha256
6314 (base32
f3b98f4f 6315 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
6316
6317(define-public python2-mccabe-0.2.1
6318 (package-with-python2 python-mccabe-0.2.1))
6319
e8df8f47
CR
6320;; Flake8 2.4.1 requires an older version of pep8.
6321;; This should be removed ASAP.
6322(define-public python-pep8-1.5.7
6323 (package (inherit python-pep8)
6324 (version "1.5.7")
6325 (source
6326 (origin
6327 (method url-fetch)
6328 (uri (string-append
6329 "https://pypi.python.org/packages/source/p/pep8/pep8-"
6330 version
6331 ".tar.gz"))
6332 (sha256
6333 (base32
73e3060d
MB
6334 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
6335 (arguments
6336 ;; XXX Tests not compatible with Python 3.5.
6337 '(#:tests? #f))))
e8df8f47
CR
6338
6339(define-public python2-pep8-1.5.7
6340 (package-with-python2 python-pep8-1.5.7))
6341
6342;; Flake8 2.4.1 requires an older version of pyflakes.
6343;; This should be removed ASAP.
6344(define-public python-pyflakes-0.8.1
6345 (package (inherit python-pyflakes)
6346 (version "0.8.1")
6347 (source
6348 (origin
6349 (method url-fetch)
6350 (uri (string-append
6351 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
6352 version
6353 ".tar.gz"))
6354 (sha256
6355 (base32
0d84e1ef
MB
6356 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
6357 (arguments
6358 ;; XXX Tests not compatible with Python 3.5.
6359 '(#:tests? #f))))
e8df8f47
CR
6360
6361(define-public python2-pyflakes-0.8.1
7261d9eb 6362 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
6363
6364(define-public python-flake8
6365 (package
6366 (name "python-flake8")
43789136 6367 (version "2.5.4")
e8df8f47
CR
6368 (source
6369 (origin
6370 (method url-fetch)
1b995533 6371 (uri (pypi-uri "flake8" version))
e8df8f47
CR
6372 (sha256
6373 (base32
011271c7
HG
6374 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
6375 (modules '((guix build utils)))
6376 (snippet
6377 '(begin
6378 ;; Remove pre-compiled .pyc files from source.
6379 (for-each delete-file-recursively
6380 (find-files "." "__pycache__" #:directories? #t))
6381 (for-each delete-file (find-files "." "\\.pyc$"))
6382 #t))))
e8df8f47 6383 (build-system python-build-system)
482d9591 6384 (propagated-inputs
f3b98f4f 6385 `(("python-pep8" ,python-pep8)
43789136 6386 ("python-pyflakes" ,python-pyflakes)
482d9591 6387 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
6388 (native-inputs
6389 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
6390 ("python-nose" ,python-nose)))
6391 (home-page "https://gitlab.com/pycqa/flake8")
6392 (synopsis
6393 "The modular source code checker: pep8, pyflakes and co")
6394 (description
6395 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
6396 (license license:expat)))
6397
6398(define-public python2-flake8
6399 (package-with-python2 python-flake8))
61b9ac53 6400
abf21efc
CR
6401;; This will only be needed by the python-hacking package and will not be
6402;; necessary once python-hacking > 0.10.2 is released.
6403(define-public python-flake8-2.2.4
6404 (package (inherit python-flake8)
482d9591 6405 (propagated-inputs
f3b98f4f 6406 `(("python-pep8" ,python-pep8-1.5.7)
abf21efc 6407 ("python-pyflakes" ,python-pyflakes-0.8.1)
482d9591 6408 ("python-mccabe" ,python-mccabe-0.2.1)))
328bb95d 6409 (native-inputs
482d9591 6410 `(("python-mock" ,python-mock)
abf21efc
CR
6411 ("python-nose" ,python-nose)))
6412 (version "2.2.4")
6413 (source
6414 (origin
6415 (method url-fetch)
6416 (uri (pypi-uri "flake8" version))
6417 (sha256
6418 (base32
b9c8ccce
HG
6419 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
6420 (modules '((guix build utils)))
6421 (snippet
6422 '(begin
6423 ;; Remove pre-compiled .pyc files from source.
6424 (for-each delete-file-recursively
6425 (find-files "." "__pycache__" #:directories? #t))
6426 (for-each delete-file (find-files "." "\\.pyc$"))
a717e8a6
MB
6427 #t))))
6428 (arguments
6429 ;; XXX Fails with Python 3.5.
6430 '(#:tests? #f))))
abf21efc
CR
6431
6432(define-public python2-flake8-2.2.4
6433 (package-with-python2 python-flake8-2.2.4))
6434
1f42d824
MFM
6435(define-public python-flake8-polyfill
6436 (package
6437 (name "python-flake8-polyfill")
6438 (version "1.0.1")
6439 (source
6440 (origin
6441 (method url-fetch)
6442 (uri (pypi-uri "flake8-polyfill" version))
6443 (sha256
6444 (base32
6445 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
6446 (build-system python-build-system)
2c1cad7a
MB
6447 (arguments
6448 '(#:phases
6449 (modify-phases %standard-phases
6450 (replace 'check
6451 (lambda _
6452 (setenv "PYTHONPATH"
6453 (string-append (getcwd) "/build/lib:"
6454 (getenv "PYTHONPATH")))
6455 (zero? (system* "py.test" "-v")))))))
6456 (native-inputs
6457 `(("python-flake8" ,python-flake8)
6458 ("python-mock" ,python-mock)
6459 ("python-pycodestyle" ,python-pycodestyle)
6460 ("python-pytest" ,python-pytest)))
1f42d824
MFM
6461 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
6462 (synopsis "Polyfill package for Flake8 plugins")
6463 (description
6464 "This package that provides some compatibility helpers for Flake8
6465plugins that intend to support Flake8 2.x and 3.x simultaneously.")
6466 (license license:expat)))
6467
6468(define-public python2-flake8-polyfill
6469 (package-with-python2 python-flake8-polyfill))
6470
61b9ac53
FB
6471(define-public python-mistune
6472 (package
6473 (name "python-mistune")
08b81336 6474 (version "0.7.3")
61b9ac53
FB
6475 (source
6476 (origin
6477 (method url-fetch)
eff8d773 6478 (uri (pypi-uri "mistune" version))
61b9ac53
FB
6479 (sha256
6480 (base32
08b81336 6481 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
61b9ac53 6482 (build-system python-build-system)
328bb95d 6483 (native-inputs
f3b98f4f 6484 `(("python-nose" ,python-nose)
61b9ac53
FB
6485 ("python-cython" ,python-cython)))
6486 (home-page "https://github.com/lepture/mistune")
6487 (synopsis "Markdown parser in pure Python")
6488 (description "This package provides a fast markdown parser in pure
6489Python.")
3f641af0 6490 (license license:bsd-3)))
61b9ac53
FB
6491
6492(define-public python2-mistune
6493 (package-with-python2 python-mistune))
6d992d07 6494
b9893908
EE
6495(define-public python-markdown
6496 (package
6497 (name "python-markdown")
791ac6a6 6498 (version "2.6.7")
b9893908
EE
6499 (source
6500 (origin
6501 (method url-fetch)
6502 (uri (pypi-uri "Markdown" version))
6503 (sha256
6504 (base32
791ac6a6 6505 "1h055llfd0ps0ig7qb3v1j9068xv90dc9s7xkhkgz9zg8r4g5sys"))))
b9893908
EE
6506 (build-system python-build-system)
6507 (arguments
6508 `(#:phases
6509 (modify-phases %standard-phases
6510 (replace 'check
6511 (lambda _
6512 (zero? (system* "python" "run-tests.py")))))))
6513 (native-inputs
6514 `(("python-nose" ,python-nose)
6515 ("python-pyyaml" ,python-pyyaml)))
6516 (home-page "https://pythonhosted.org/Markdown/")
6517 (synopsis "Python implementation of Markdown")
6518 (description
6519 "This package provides a Python implementation of John Gruber's
6520Markdown. The library features international input, various Markdown
6521extensions, and several HTML output formats. A command line wrapper
6522markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 6523 (license license:bsd-3)))
b9893908
EE
6524
6525(define-public python2-markdown
6526 (package-with-python2 python-markdown))
6527
6d992d07
FB
6528(define-public python-ptyprocess
6529 (package
6530 (name "python-ptyprocess")
6531 (version "0.5")
6532 (source
6533 (origin
6534 (method url-fetch)
6535 (uri (string-append
6536 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
6537 version ".tar.gz"))
6538 (sha256
6539 (base32
6540 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
6541 (build-system python-build-system)
328bb95d 6542 (native-inputs
f3b98f4f 6543 `(("python-nose" ,python-nose)))
6d992d07
FB
6544 (arguments
6545 `(#:phases
6546 (modify-phases %standard-phases
6547 (replace 'check
6548 (lambda _
6549 (zero? (system* "nosetests")))))))
6550 (home-page "https://github.com/pexpect/ptyprocess")
6551 (synopsis "Run a subprocess in a pseudo terminal")
6552 (description
6553 "This package provides a Python library used to launch a subprocess in a
6554pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 6555 (license license:isc)))
6d992d07
FB
6556
6557(define-public python2-ptyprocess
6558 (package-with-python2 python-ptyprocess))
4aadb1df 6559
df893a38
MB
6560(define-public python-cram
6561 (package
6562 (name "python-cram")
6563 (version "0.7")
6564 (home-page "https://bitheap.org/cram/")
6565 (source (origin
6566 (method url-fetch)
6567 (uri (list (string-append home-page "cram-"
6568 version ".tar.gz")
6569 (pypi-uri "cram" version)))
6570 (sha256
6571 (base32
6572 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
6573 (arguments
6574 '(#:phases
6575 (modify-phases %standard-phases
6576 (add-after 'unpack 'patch-source
6577 (lambda _
6578 (substitute* (find-files "cram" ".*\\.py$")
6579 ;; Replace default shell path.
6580 (("/bin/sh") (which "sh")))
6581 (substitute* (find-files "tests" ".*\\.t$")
6582 (("md5") "md5sum")
6583 (("/bin/bash") (which "bash"))
6584 (("/bin/sh") (which "sh")))
6585 (substitute* "cram/_test.py"
6586 ;; This hack works around a bug triggered by substituting
6587 ;; the /bin/sh paths. "tests/usage.t" compares the output of
6588 ;; "cram -h", which breaks the output at 80 characters. This
6589 ;; causes the line showing the default shell to break into two
6590 ;; lines, but the test expects a single line...
6591 (("env\\['COLUMNS'\\] = '80'")
6592 "env['COLUMNS'] = '160'"))
6593 #t))
6594 (delete 'check)
6595 (add-after 'install 'check
6596 ;; The test phase uses the built library and executable.
6597 ;; It's easier to run it after install since the build
6598 ;; directory contains version-specific PATH.
6599 (lambda* (#:key inputs outputs #:allow-other-keys)
6600 (add-installed-pythonpath inputs outputs)
6601 (setenv "PATH" (string-append (getenv "PATH") ":"
6602 (assoc-ref outputs "out") "/bin"))
6603 (zero? (system* "make" "test")))))))
6604 (build-system python-build-system)
6605 (native-inputs
6606 `(("python-coverage" ,python-coverage)
6607 ("which" ,which)))
6608 (synopsis "Simple testing framework for command line applications")
6609 (description
6610 "Cram is a functional testing framework for command line applications.
6611Cram tests look like snippets of interactive shell sessions. Cram runs each
6612command and compares the command output in the test with the command’s actual
6613output.")
6614 (license license:gpl2+)))
6615
6616(define-public python2-cram
6617 (package-with-python2 python-cram))
6618
4aadb1df
FB
6619(define-public python-terminado
6620 (package
6621 (name "python-terminado")
783fb0a3 6622 (version "0.6")
4aadb1df
FB
6623 (source
6624 (origin
6625 (method url-fetch)
783fb0a3 6626 (uri (pypi-uri "terminado" version))
4aadb1df
FB
6627 (sha256
6628 (base32
783fb0a3 6629 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
6630 (build-system python-build-system)
6631 (propagated-inputs
6632 `(("python-tornado" ,python-tornado)
6633 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
6634 (native-inputs
6635 `(("python-nose" ,python-nose)))
4aadb1df
FB
6636 (arguments
6637 `(#:phases
6638 (modify-phases %standard-phases
6639 (replace 'check
6640 (lambda _
6641 (zero? (system* "nosetests")))))))
6642 (home-page "https://github.com/takluyver/terminado")
6643 (synopsis "Terminals served to term.js using Tornado websockets")
6644 (description "This package provides a Tornado websocket backend for the
6645term.js Javascript terminal emulator library.")
3f641af0 6646 (license license:bsd-2)
783fb0a3 6647 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
6648
6649(define-public python2-terminado
783fb0a3 6650 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 6651 (package (inherit terminado)
783fb0a3
EF
6652 (propagated-inputs
6653 `(("python2-backport-ssl-match-hostname"
6654 ,python2-backport-ssl-match-hostname)
00e10c6e 6655 ,@(package-propagated-inputs terminado))))))
5faa5ce4 6656
789de5e2 6657(define-public python-straight-plugin
6658 (package
6659 (name "python-straight-plugin")
6660 (version "1.4.1")
6661 (source
6662 (origin
6663 (method url-fetch)
6664 (uri (pypi-uri "straight.plugin" version))
6665 (sha256
6666 (base32
6667 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6668 (build-system python-build-system)
6669 (home-page "https://github.com/ironfroggy/straight.plugin")
6670 (synopsis "Simple namespaced plugin facility")
6671 (description "Straight Plugin provides a type of plugin you can create from
6672almost any existing Python modules, and an easy way for outside developers to
6673add functionality and customization to your projects with their own plugins.")
6674 (license license:expat)))
6675
6676(define-public python2-straight-plugin
6677 (package-with-python2 python-straight-plugin))
6678
d582eaac
SB
6679(define-public python-fonttools
6680 (package
6681 (name "python-fonttools")
6682 (version "2.5")
6683 (source (origin
6684 (method url-fetch)
6685 (uri (string-append
6686 "https://pypi.python.org/packages/source/F/FontTools/"
6687 "fonttools-" version ".tar.gz"))
6688 (sha256
6689 (base32
6690 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
6691 (build-system python-build-system)
9e8c6a37
HG
6692 (arguments
6693 '(#:test-target "check"
6694 #:phases
6695 (modify-phases %standard-phases
6696 (add-after 'unpack 'patch-setuppy
6697 ;; Remove the undocumented "extra_path" argument, which adds an
6698 ;; intervening directories between site-packages and the package
6699 ;; directory.
6700 (lambda _
6701 (substitute* "setup.py"
6702 (("^[ \t]*extra_path *= *'FontTools',") ""))
6703 #t)))))
d582eaac
SB
6704 (home-page "http://github.com/behdad/fonttools")
6705 (synopsis "Tools to manipulate font files")
6706 (description
6707 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 6708supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
6709of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6710also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6711from an XML-based format.")
3f641af0
DC
6712 (license (license:non-copyleft
6713 "file://LICENSE.txt"
6714 "See LICENSE.txt in the distribution."))))
d582eaac
SB
6715
6716(define-public python2-fonttools
6717 (package-with-python2 python-fonttools))
75710da6 6718
5faa5ce4
RW
6719(define-public python-ly
6720 (package
6721 (name "python-ly")
5135354f 6722 (version "0.9.4")
5faa5ce4
RW
6723 (source
6724 (origin
6725 (method url-fetch)
5135354f
RW
6726 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6727 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6728 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
6729 (sha256
6730 (base32
5135354f 6731 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 6732 (build-system python-build-system)
972cf9be
MB
6733 (arguments
6734 ;; FIXME: Some tests need network access.
6735 '(#:tests? #f))
5faa5ce4
RW
6736 (synopsis "Tool and library for manipulating LilyPond files")
6737 (description "This package provides a Python library to parse, manipulate
6738or create documents in LilyPond format. A command line program ly is also
6739provided that can be used to do various manipulations with LilyPond files.")
6740 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 6741 (license license:gpl2+)))
7e7b27d9
CR
6742
6743(define-public python-appdirs
6744 (package
6745 (name "python-appdirs")
6746 (version "1.4.0")
6747 (source
6748 (origin
6749 (method url-fetch)
6750 (uri (string-append
6751 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
6752 version
6753 ".tar.gz"))
6754 (sha256
6755 (base32
6756 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
6757 (build-system python-build-system)
7e7b27d9
CR
6758 (home-page "http://github.com/ActiveState/appdirs")
6759 (synopsis
6760 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6761 (description
6762 "This module provides a portable way of finding out where user data
6763should be stored on various operating systems.")
6764 (license license:expat)))
6765
6766(define-public python2-appdirs
6767 (package-with-python2 python-appdirs))
89b2e0b0
LF
6768
6769(define-public python-llfuse
6770 (package
6771 (name "python-llfuse")
e36ace36 6772 (version "1.1.1")
89b2e0b0
LF
6773 (source (origin
6774 (method url-fetch)
6775 (uri (string-append
6776 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6777 "llfuse-" version ".tar.bz2"))
6778 (sha256
6779 (base32
e36ace36 6780 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6781 (build-system python-build-system)
6782 (inputs
6783 `(("fuse" ,fuse)
6784 ("attr" ,attr)))
6785 (native-inputs
f3b98f4f 6786 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
6787 (synopsis "Python bindings for FUSE")
6788 (description
6789 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6790 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6791 (license license:lgpl2.0+)
cd0569c4 6792 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6793
6794(define-public python2-llfuse
cd0569c4
LF
6795 (package (inherit (package-with-python2
6796 (strip-python2-variant python-llfuse)))
6797 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6798
6799;; For attic-0.16
6800(define-public python-llfuse-0.41
6801 (package (inherit python-llfuse)
229b3661 6802 (version "0.41.1")
cd0569c4
LF
6803 (source (origin
6804 (method url-fetch)
6805 (uri (string-append
6806 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6807 "llfuse-" version ".tar.bz2"))
6808 (sha256
6809 (base32
229b3661 6810 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6811 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6812 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6813 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6814
6815(define-public python-msgpack
6816 (package
6817 (name "python-msgpack")
aed625bd 6818 (version "0.4.8")
641c9871
LF
6819 (source (origin
6820 (method url-fetch)
ae831df4 6821 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6822 (sha256
6823 (base32
aed625bd 6824 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6825 (build-system python-build-system)
641c9871
LF
6826 (synopsis "MessagePack (de)serializer")
6827 (description "MessagePack is a fast, compact binary serialization format,
6828suitable for similar data to JSON. This package provides CPython bindings for
6829reading and writing MessagePack data.")
6830 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 6831 (license license:asl2.0)))
bd74be7b
LF
6832
6833(define-public python2-msgpack
f210e944 6834 (package-with-python2 python-msgpack))
641c9871 6835
6e5e39f4
CR
6836(define-public python-netaddr
6837 (package
6838 (name "python-netaddr")
6839 (version "0.7.18")
6840 (source
6841 (origin
6842 (method url-fetch)
6843 (uri (string-append
6844 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6845 version
6846 ".tar.gz"))
6847 (sha256
6848 (base32
6849 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6850 (build-system python-build-system)
6851 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
6852 (home-page "https://github.com/drkjam/netaddr/")
6853 (synopsis "Pythonic manipulation of network addresses")
6854 (description
6855 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6856and MAC network addresses.")
3f641af0 6857 (license license:bsd-3)))
6e5e39f4
CR
6858
6859(define-public python2-netaddr
6860 (package-with-python2 python-netaddr))
8c692a52
CR
6861
6862(define-public python-wrapt
6863 (package
6864 (name "python-wrapt")
6865 (version "1.10.5")
6866 (source
6867 (origin
6868 (method url-fetch)
6869 (uri (string-append
6870 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
6871 version
6872 ".tar.gz"))
6873 (sha256
6874 (base32
6875 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
6876 (build-system python-build-system)
6877 (arguments
6878 ;; Tests are not included in the tarball, they are only available in the
6879 ;; git repository.
6880 `(#:tests? #f))
8c692a52
CR
6881 (home-page "https://github.com/GrahamDumpleton/wrapt")
6882 (synopsis "Module for decorators, wrappers and monkey patching")
6883 (description
6884 "The aim of the wrapt module is to provide a transparent object proxy for
6885 Python, which can be used as the basis for the construction of function
6886 wrappers and decorator functions.")
3f641af0 6887 (license license:bsd-2)))
8c692a52
CR
6888
6889(define-public python2-wrapt
6890 (package-with-python2 python-wrapt))
b85c85be
CR
6891
6892(define-public python-iso8601
6893 (package
6894 (name "python-iso8601")
fe84bc9a 6895 (version "0.1.11")
b85c85be
CR
6896 (source
6897 (origin
6898 (method url-fetch)
fe84bc9a 6899 (uri (pypi-uri "iso8601" version))
b85c85be 6900 (sha256
fe84bc9a
EF
6901 (base32
6902 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 6903 (build-system python-build-system)
63b02364
MB
6904 (native-inputs
6905 `(("python-pytest" ,python-pytest)))
b85c85be
CR
6906 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6907 (synopsis "Module to parse ISO 8601 dates")
6908 (description
6909 "This module parses the most common forms of ISO 8601 date strings (e.g.
6910@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6911 (license license:expat)))
6912
6913(define-public python2-iso8601
6914 (package-with-python2 python-iso8601))
5e412b63
CR
6915
6916(define-public python-monotonic
6917 (package
6918 (name "python-monotonic")
6919 (version "0.3")
6920 (source
6921 (origin
6922 (method url-fetch)
6923 (uri (string-append
6924 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6925 version
6926 ".tar.gz"))
6927 (sha256
6928 (base32
6929 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6930 (build-system python-build-system)
5e412b63
CR
6931 (home-page "https://github.com/atdt/monotonic")
6932 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6933 (description
6934 "This module provides a monotonic() function which returns the value (in
6935fractional seconds) of a clock which never goes backwards.")
3f641af0 6936 (license license:asl2.0)))
5e412b63
CR
6937
6938(define-public python2-monotonic
6939 (package-with-python2 python-monotonic))
de34afac
CR
6940
6941(define-public python-webob
6942 (package
6943 (name "python-webob")
b8834c21 6944 (version "1.5.1")
de34afac
CR
6945 (source
6946 (origin
6947 (method url-fetch)
b8834c21 6948 (uri (pypi-uri "WebOb" version))
de34afac
CR
6949 (sha256
6950 (base32
b8834c21 6951 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 6952 (build-system python-build-system)
328bb95d 6953 (native-inputs
f3b98f4f 6954 `(("python-nose" ,python-nose)))
de34afac
CR
6955 (home-page "http://webob.org/")
6956 (synopsis "WSGI request and response object")
6957 (description
6958 "WebOb provides wrappers around the WSGI request environment, and an
6959object to help create WSGI responses.")
6960 (license license:expat)))
6961
6962(define-public python2-webob
6963 (package-with-python2 python-webob))
350ba0a3 6964
02a8a187
BW
6965(define-public python-xlrd
6966 (package
6967 (name "python-xlrd")
c2ad4d70 6968 (version "1.0.0")
02a8a187
BW
6969 (source (origin
6970 (method url-fetch)
e775f48e 6971 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6972 (sha256
6973 (base32
c2ad4d70 6974 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6975 (build-system python-build-system)
6976 (arguments
6977 `(#:phases
6978 (modify-phases %standard-phases
c2ad4d70 6979 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6980 ;; run tests instead for now.
6981 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 6982 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
6983 (home-page "http://www.python-excel.org/")
6984 (synopsis "Library for extracting data from Excel files")
6985 (description "This packages provides a library to extract data from
c598e35c 6986spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
6987@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
6988Unicode-aware. It is not intended as an end-user tool.")
3f641af0 6989 (license license:bsd-3)))
02a8a187
BW
6990
6991(define-public python2-xlrd
6992 (package-with-python2 python-xlrd))
6993
350ba0a3
CR
6994(define-public python-prettytable
6995 (package
6996 (name "python-prettytable")
6997 (version "0.7.2")
6998 (source
6999 (origin
7000 (method url-fetch)
7001 (uri (string-append
7002 "https://pypi.python.org/packages/source/P/PrettyTable/"
7003 "prettytable-" version ".tar.bz2"))
7004 (sha256
7005 (base32
7006 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7007 (build-system python-build-system)
350ba0a3
CR
7008 (home-page "http://code.google.com/p/prettytable/")
7009 (synopsis "Display tabular data in an ASCII table format")
7010 (description
7011 "A library designed to represent tabular data in visually appealing ASCII
7012tables. PrettyTable allows for selection of which columns are to be printed,
7013independent alignment of columns (left or right justified or centred) and
7014printing of sub-tables by specifying a row range.")
3f641af0 7015 (license license:bsd-3)))
350ba0a3
CR
7016
7017(define-public python2-prettytable
7018 (package-with-python2 python-prettytable))
7a8ac75a 7019
9f8ee3fe
RW
7020(define-public python-tables
7021 (package
7022 (name "python-tables")
7023 (version "3.2.2")
7024 (source
7025 (origin
7026 (method url-fetch)
7027 (uri (pypi-uri "tables" version))
7028 (sha256
7029 (base32
bac23672
HG
7030 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
7031 (modules '((guix build utils)))
7032 (snippet
7033 '(begin
7034 ;; Remove pre-compiled .pyc files from source.
7035 (for-each delete-file-recursively
7036 (find-files "." "__pycache__" #:directories? #t))
7037 (for-each delete-file (find-files "." "\\.pyc$"))
7038 #t))))
9f8ee3fe
RW
7039 (build-system python-build-system)
7040 (arguments
7041 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7042 ;; or "check", so we must override the build and check phases.
7043 #:phases
7044 (modify-phases %standard-phases
7045 (add-after 'unpack 'use-gcc
7046 (lambda _
7047 (substitute* "setup.py"
7048 (("compiler = new_compiler\\(\\)" line)
7049 (string-append line
7050 "\ncompiler.set_executables(compiler='gcc',"
7051 "compiler_so='gcc',"
7052 "linker_exe='gcc',"
7053 "linker_so='gcc -shared')")))
7054 #t))
7055 (replace 'build
7056 (lambda* (#:key inputs #:allow-other-keys)
7057 (zero? (system* "python" "setup.py" "build"
7058 (string-append "--hdf5="
7059 (assoc-ref inputs "hdf5"))))))
7060 (replace 'check
7061 (lambda* (#:key inputs #:allow-other-keys)
7062 (zero? (system* "python" "setup.py" "check"
7063 (string-append "--hdf5="
7064 (assoc-ref inputs "hdf5")))))))))
7065 (propagated-inputs
7066 `(("python-numexpr" ,python-numexpr)
7067 ("python-numpy" ,python-numpy)))
7068 (native-inputs
f3b98f4f 7069 `(("python-cython" ,python-cython)
9f8ee3fe
RW
7070 ("pkg-config" ,pkg-config)))
7071 (inputs
7072 `(("hdf5" ,hdf5)
7073 ("bzip2" ,bzip2)
7074 ("zlib" ,zlib)))
7075 (home-page "http://www.pytables.org/")
7076 (synopsis "Hierarchical datasets for Python")
7077 (description "PyTables is a package for managing hierarchical datasets and
7078designed to efficently cope with extremely large amounts of data.")
3f641af0 7079 (license license:bsd-3)))
9f8ee3fe
RW
7080
7081(define-public python2-tables
7082 (package-with-python2 python-tables))
7083
7a8ac75a
RW
7084(define-public python-pyasn1
7085 (package
7086 (name "python-pyasn1")
caa0edb3 7087 (version "0.1.9")
7a8ac75a
RW
7088 (source
7089 (origin
7090 (method url-fetch)
caa0edb3 7091 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
7092 (sha256
7093 (base32
caa0edb3 7094 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
7095 (build-system python-build-system)
7096 (home-page "http://pyasn1.sourceforge.net/")
7097 (synopsis "ASN.1 types and codecs")
7098 (description
7099 "This is an implementation of ASN.1 types and codecs in Python. It is
7100suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 7101 (license license:bsd-2)))
7a8ac75a
RW
7102
7103(define-public python2-pyasn1
7104 (package-with-python2 python-pyasn1))
9a49a535 7105
5988c299
EF
7106(define-public python-pyasn1-modules
7107 (package
7108 (name "python-pyasn1-modules")
7109 (version "0.0.8")
7110 (source
7111 (origin
7112 (method url-fetch)
7113 (uri (pypi-uri "pyasn1-modules" version))
7114 (sha256
7115 (base32
7116 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
7117 (build-system python-build-system)
5988c299
EF
7118 (propagated-inputs
7119 `(("python-pyasn1" ,python-pyasn1)))
3b3b60d0 7120 (home-page "https://sourceforge.net/projects/pyasn1/")
5988c299
EF
7121 (synopsis "ASN.1 codec implementations")
7122 (description
7123 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7124implementations of ASN.1-based codecs and protocols.")
3f641af0 7125 (license license:bsd-3)))
5988c299
EF
7126
7127(define-public python2-pyasn1-modules
7128 (package-with-python2 python-pyasn1-modules))
7129
520af157 7130(define-public python-ipaddress
9a49a535 7131 (package
520af157
DC
7132 (name "python-ipaddress")
7133 (version "1.0.16")
7134 (source (origin
7135 (method url-fetch)
7136 (uri (pypi-uri "ipaddress" version))
7137 (sha256
7138 (base32
7139 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 7140 (build-system python-build-system)
9a49a535
RW
7141 (home-page "https://github.com/phihag/ipaddress")
7142 (synopsis "IP address manipulation library")
7143 (description
520af157
DC
7144 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7145 in Python. This library is used to create, poke at, and manipulate IPv4 and
7146 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7147 module to older versions of Python.")
f210e944 7148 (license license:psfl)))
520af157
DC
7149
7150(define-public python2-ipaddress
f210e944 7151 (package-with-python2 python-ipaddress))
3f00e078 7152
4a238186
HG
7153(define-public python2-ipaddr
7154 (package
7155 (name "python2-ipaddr")
7156 (version "2.1.11")
7157 (source
7158 (origin
7159 (method url-fetch)
7160 (uri (pypi-uri "ipaddr" version))
7161 (sha256
7162 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7163 (build-system python-build-system)
7164 (arguments
7165 `(#:python ,python-2 ;version 2 only
7166 #:phases
7167 (modify-phases %standard-phases
7168 (replace 'check
7169 (lambda* _
7170 (zero? (system* "python" "ipaddr_test.py")))))))
7171 (home-page "https://github.com/google/ipaddr-py")
7172 (synopsis "IP address manipulation library")
7173 (description
7174 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7175IPv6 addresses and networks.
7176
7177For new implementations you may prefer to use the standard module
7178@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7179versions of Python.")
3f641af0 7180 (license license:asl2.0)))
4a238186 7181
3f00e078
RW
7182(define-public python-idna
7183 (package
7184 (name "python-idna")
7185 (version "2.0")
7186 (source
7187 (origin
7188 (method url-fetch)
7189 (uri (string-append "https://pypi.python.org/packages/source/i/"
7190 "idna/idna-" version ".tar.gz"))
7191 (sha256
7192 (base32
7193 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
7194 (build-system python-build-system)
3f00e078
RW
7195 (home-page "https://github.com/kjd/idna")
7196 (synopsis "Internationalized domain names in applications")
7197 (description
7198 "This is a library to support the Internationalised Domain Names in
7199Applications (IDNA) protocol as specified in RFC 5891. This version of the
7200protocol is often referred to as “IDNA2008” and can produce different results
7201from the earlier standard from 2003. The library is also intended to act as a
7202suitable drop-in replacement for the “encodings.idna” module that comes with
7203the Python standard library but currently only supports the older 2003
7204specification.")
3f641af0 7205 (license license:bsd-4)))
3f00e078
RW
7206
7207(define-public python2-idna
7208 (package-with-python2 python-idna))
36ebf972
RW
7209
7210(define-public python-pretend
7211 (package
7212 (name "python-pretend")
7213 (version "1.0.8")
7214 (source
7215 (origin
7216 (method url-fetch)
7217 (uri (string-append "https://pypi.python.org/packages/source/p/"
7218 "pretend/pretend-" version ".tar.gz"))
7219 (sha256
7220 (base32
7221 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
7222 (build-system python-build-system)
36ebf972
RW
7223 (home-page "https://github.com/alex/pretend")
7224 (synopsis "Library for stubbing in Python")
7225 (description
7226 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7227technique for writing tests. You may hear the term mixed up with mocks,
7228fakes, or doubles. Basically, a stub is an object that returns pre-canned
7229responses, rather than doing any computation.")
3f641af0 7230 (license license:bsd-3)))
36ebf972
RW
7231
7232(define-public python2-pretend
7233 (package-with-python2 python-pretend))
aa759a51
RW
7234
7235(define-public python-cryptography-vectors
7236 (package
7237 (name "python-cryptography-vectors")
27fab2bf 7238 (version "1.7.1")
aa759a51
RW
7239 (source
7240 (origin
7241 (method url-fetch)
9c509ca9 7242 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
7243 (sha256
7244 (base32
27fab2bf 7245 "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
aa759a51 7246 (build-system python-build-system)
aa759a51 7247 (home-page "https://github.com/pyca/cryptography")
66e07664 7248 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
7249 (description
7250 "This package contains test vectors for the cryptography package.")
7251 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7252 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
7253
7254(define-public python2-cryptography-vectors
7255 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
7256
7257(define-public python-cryptography
7258 (package
7259 (name "python-cryptography")
27fab2bf 7260 (version "1.7.1")
88b47cb0
RW
7261 (source
7262 (origin
7263 (method url-fetch)
9c509ca9 7264 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
7265 (sha256
7266 (base32
27fab2bf 7267 "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
88b47cb0
RW
7268 (build-system python-build-system)
7269 (inputs
7270 `(("openssl" ,openssl)))
7271 (propagated-inputs
7272 `(("python-cffi" ,python-cffi)
7273 ("python-six" ,python-six)
7274 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
7275 ("python-idna" ,python-idna)
7276 ("python-iso8601" ,python-iso8601)))
7277 (native-inputs
7278 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 7279 ("python-hypothesis" ,python-hypothesis)
88b47cb0 7280 ("python-pretend" ,python-pretend)
ce6c13ee
EF
7281 ("python-pyasn1" ,python-pyasn1)
7282 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad
MB
7283 ("python-pytz" ,python-pytz)
7284 ("python-pytest" ,python-pytest-2.9.2)))
88b47cb0
RW
7285 (home-page "https://github.com/pyca/cryptography")
7286 (synopsis "Cryptographic recipes and primitives for Python")
7287 (description
7288 "cryptography is a package which provides cryptographic recipes and
7289primitives to Python developers. It aims to be the “cryptographic standard
7290library” for Python. The package includes both high level recipes, and low
7291level interfaces to common cryptographic algorithms such as symmetric ciphers,
7292message digests and key derivation functions.")
7293 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7294 (license (list license:bsd-3 license:asl2.0))
519e2f4f 7295 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
7296
7297(define-public python2-cryptography
519e2f4f
LF
7298 (let ((crypto (package-with-python2
7299 (strip-python2-variant python-cryptography))))
88b47cb0
RW
7300 (package (inherit crypto)
7301 (propagated-inputs
7302 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
7303 ("python2-backport-ssl-match-hostname"
7304 ,python2-backport-ssl-match-hostname)
68f1cdec 7305 ("python2-enum34" ,python2-enum34)
88b47cb0 7306 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
7307
7308(define-public python-pyopenssl
7309 (package
7310 (name "python-pyopenssl")
61684de2 7311 (version "16.2.0")
5af999b8
RW
7312 (source
7313 (origin
7314 (method url-fetch)
eb68d268 7315 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
7316 (sha256
7317 (base32
7c6bf660
MB
7318 "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp"))
7319 (patches
7320 (search-patches "python-pyopenssl-skip-network-test.patch"))))
5af999b8 7321 (build-system python-build-system)
30e0229a 7322 (arguments
7c6bf660
MB
7323 '(#:phases
7324 (modify-phases %standard-phases
7325 (delete 'check)
7326 (add-after 'install 'check
7327 (lambda* (#:key inputs outputs #:allow-other-keys)
7328 (add-installed-pythonpath inputs outputs)
7329 (zero? (system* "py.test" "-v")))))))
5af999b8
RW
7330 (propagated-inputs
7331 `(("python-cryptography" ,python-cryptography)
7332 ("python-six" ,python-six)))
7333 (inputs
7334 `(("openssl" ,openssl)))
30e0229a
MB
7335 (native-inputs
7336 `(("python-pytest" ,python-pytest)))
5af999b8
RW
7337 (home-page "https://github.com/pyca/pyopenssl")
7338 (synopsis "Python wrapper module around the OpenSSL library")
7339 (description
7340 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
7341library.")
3f641af0 7342 (license license:asl2.0)))
5af999b8
RW
7343
7344(define-public python2-pyopenssl
519e2f4f 7345 (package-with-python2 python-pyopenssl))
643725a1
CR
7346
7347(define-public python-pip
7348 (package
7349 (name "python-pip")
392c26b0 7350 (version "9.0.1")
643725a1
CR
7351 (source
7352 (origin
7353 (method url-fetch)
6fb54e3b 7354 (uri (pypi-uri "pip" version))
643725a1
CR
7355 (sha256
7356 (base32
392c26b0 7357 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
643725a1 7358 (build-system python-build-system)
392c26b0
MC
7359 (arguments
7360 '(#:tests? #f)) ; there are no tests in the pypi archive.
643725a1 7361 (home-page "https://pip.pypa.io/")
392c26b0 7362 (synopsis "Package manager for Python software")
643725a1 7363 (description
392c26b0 7364 "Pip is a package manager for Python software, that finds packages on the
643725a1
CR
7365Python Package Index (PyPI).")
7366 (license license:expat)))
7367
7368(define-public python2-pip
7369 (package-with-python2 python-pip))
d8c4998f
LC
7370
7371(define-public python-tlsh
7372 (package
7373 (name "python-tlsh")
99b00dc7 7374 (version "3.4.4")
d8c4998f
LC
7375 (home-page "https://github.com/trendmicro/tlsh")
7376 (source (origin
99b00dc7
EF
7377 (method url-fetch)
7378 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
7379 version ".tar.gz"))
d8c4998f
LC
7380 (sha256
7381 (base32
99b00dc7
EF
7382 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
7383 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
7384 (build-system cmake-build-system)
7385 (arguments
7386 '(#:out-of-source? #f
7387 #:phases (modify-phases %standard-phases
7388 (replace
7389 'install
7390 (lambda* (#:key outputs #:allow-other-keys)
7391 ;; Build and install the Python bindings. The underlying
7392 ;; C++ library is apparently not meant to be installed.
7393 (let ((out (assoc-ref outputs "out")))
7394 (with-directory-excursion "py_ext"
7395 (and (system* "python" "setup.py" "build")
7396 (system* "python" "setup.py" "install"
7397 (string-append "--prefix=" out))))))))))
7398 (inputs `(("python" ,python-wrapper))) ;for the bindings
7399 (synopsis "Fuzzy matching library for Python")
7400 (description
7401 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
7402Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
7403value which can be used for similarity comparisons. Similar objects have
7404similar hash values, which allows for the detection of similar objects by
7405comparing their hash values. The byte stream should have a sufficient amount
7406of complexity; for example, a byte stream of identical bytes will not generate
7407a hash value.")
3f641af0 7408 (license license:asl2.0)))
d8c4998f
LC
7409
7410(define-public python2-tlsh
7411 (package
7412 (inherit python-tlsh)
7413 (name "python2-tlsh")
7414 (inputs `(("python" ,python-2)))))
d96034ed 7415
67f66812
BW
7416(define-public python-termcolor
7417 (package
7418 (name "python-termcolor")
7419 (version "1.1.0")
7420 (source
7421 (origin
7422 (method url-fetch)
7423 (uri (pypi-uri "python-termcolor" version))
7424 (sha256
7425 (base32
7426 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
7427 (build-system python-build-system)
7428 (arguments
7429 ;; There are no tests.
7430 `(#:tests? #f))
7431 (home-page "http://pypi.python.org/pypi/termcolor")
7432 (synopsis "ANSII Color formatting for terminal output")
7433 (description
7434 "This package provides ANSII Color formatting for output in terminals.")
7435 (license license:expat)))
7436
7437(define-public python2-termcolor
7438 (package-with-python2 python-termcolor))
7439
d96034ed
LC
7440(define-public python-libarchive-c
7441 (package
7442 (name "python-libarchive-c")
03fd001c 7443 (version "2.2")
d96034ed
LC
7444 (source (origin
7445 (method url-fetch)
03fd001c 7446 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
7447 (sha256
7448 (base32
03fd001c 7449 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
7450 (build-system python-build-system)
7451 (arguments
7452 '(#:phases (modify-phases %standard-phases
7453 (add-before
7454 'build 'reference-libarchive
7455 (lambda* (#:key inputs #:allow-other-keys)
7456 ;; Retain the absolute file name of libarchive.so.
7457 (let ((libarchive (assoc-ref inputs "libarchive")))
7458 (substitute* "libarchive/ffi.py"
7459 (("find_library\\('archive'\\)")
7460 (string-append "'" libarchive
b41a05ce 7461 "/lib/libarchive.so'")))))))))
d96034ed 7462 (inputs
f3b98f4f 7463 `(("libarchive" ,libarchive)))
d96034ed
LC
7464 (home-page "https://github.com/Changaco/python-libarchive-c")
7465 (synopsis "Python interface to libarchive")
7466 (description
7467 "This package provides Python bindings to libarchive, a C library to
7468access possibly compressed archives in many different formats. It uses
7469Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 7470 (license license:lgpl2.0+)))
d96034ed
LC
7471
7472(define-public python2-libarchive-c
7473 (package-with-python2 python-libarchive-c))
5e1c9367
LC
7474
7475(define-public python-file
7476 (package
7477 (inherit file)
7478 (name "python-file")
7ffa5d4a
LF
7479 (source (origin
7480 (inherit (package-source file))
7481 ;; This patch should not be applied to python2-file.
7482 (patches (search-patches "python-file-double-encoding-bug.patch"))))
5e1c9367
LC
7483 (build-system python-build-system)
7484 (arguments
7485 '(#:tests? #f ;no tests
00bf74be 7486 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
7487 #:phases (modify-phases %standard-phases
7488 (add-before 'build 'change-directory
7489 (lambda _
7490 (chdir "python")
7491 #t))
7492 (add-before 'build 'set-library-file-name
7493 (lambda* (#:key inputs #:allow-other-keys)
7494 (let ((file (assoc-ref inputs "file")))
7495 (substitute* "magic.py"
7496 (("find_library\\('magic'\\)")
7497 (string-append "'" file "/lib/libmagic.so'")))
7498 #t))))))
7499 (inputs `(("file" ,file)))
7500 (self-native-input? #f)
daeeea71
CM
7501 (synopsis "Python bindings to the libmagic file type guesser. Note that
7502this module and the python-magic module both provide a \"magic.py\" file;
7503these two modules, which are different and were developed separately, both
f210e944 7504serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
7505
7506(define-public python2-file
f210e944 7507 (package-with-python2 python-file))
85d4aeac
LC
7508
7509(define-public python-debian
7510 (package
7511 (name "python-debian")
02d7f337 7512 (version "0.1.28")
85d4aeac
LC
7513 (source
7514 (origin
7515 (method url-fetch)
5e217a8b 7516 (uri (pypi-uri name version))
85d4aeac
LC
7517 (sha256
7518 (base32
02d7f337 7519 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
85d4aeac 7520 (build-system python-build-system)
f22efa01 7521 (propagated-inputs
85d4aeac 7522 `(("python-six" ,python-six)))
85d4aeac
LC
7523 (home-page "http://packages.debian.org/sid/python-debian")
7524 (synopsis "Debian package related modules")
7525 (description
5c7bdc9a
LC
7526 ;; XXX: Use @enumerate instead of @itemize to work around
7527 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
7528 "This package provides Python modules that abstract many formats of
7529Debian-related files, such as:
7530
5c7bdc9a 7531@enumerate
85d4aeac
LC
7532@item Debtags information;
7533@item @file{debian/changelog} files;
7534@item packages files, pdiffs;
7535@item control files of single or multiple RFC822-style paragraphs---e.g.
7536 @file{debian/control}, @file{.changes}, @file{.dsc};
7537@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
7538 contained files and meta-information.
5c7bdc9a 7539@end enumerate\n")
85d4aeac
LC
7540
7541 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 7542 (license license:gpl3+)))
85d4aeac
LC
7543
7544(define-public python2-debian
7545 (package-with-python2 python-debian))
816a6538 7546
2d321bb2
RW
7547(define-public python-nbformat
7548 (package
7549 (name "python-nbformat")
7550 (version "4.1.0")
7551 (source
7552 (origin
7553 (method url-fetch)
7554 (uri (pypi-uri "nbformat" version))
7555 (sha256
7556 (base32
7557 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
7558 (build-system python-build-system)
7559 (arguments `(#:tests? #f)) ; no test target
7560 (propagated-inputs
7561 `(("python-ipython-genutils" ,python-ipython-genutils)
7562 ("python-jsonschema" ,python-jsonschema)
7563 ("python-jupyter-core" ,python-jupyter-core)
7564 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
7565 (home-page "http://jupyter.org")
7566 (synopsis "Jupyter Notebook format")
7567 (description "This package provides the reference implementation of the
7568Jupyter Notebook format and Python APIs for working with notebooks.")
7569 (license license:bsd-3)))
7570
7571(define-public python2-nbformat
7572 (package-with-python2 python-nbformat))
7573
55436048
RW
7574(define-public python-bleach
7575 (package
7576 (name "python-bleach")
7577 (version "1.4.3")
7578 (source
7579 (origin
7580 (method url-fetch)
7581 (uri (pypi-uri "bleach" version))
7582 (sha256
7583 (base32
7584 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7585 (build-system python-build-system)
7586 (propagated-inputs
7587 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
7588 ("python-six" ,python-six)))
7589 (native-inputs
7590 `(("python-nose" ,python-nose)))
7591 (home-page "http://github.com/jsocol/bleach")
7592 (synopsis "Whitelist-based HTML-sanitizing tool")
7593 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7594 (license license:asl2.0)))
7595
7596(define-public python2-bleach
7597 (package-with-python2 python-bleach))
7598
60590a3a
RW
7599(define-public python-entrypoints
7600 (package
7601 (name "python-entrypoints")
7602 (version "0.2.2")
7603 (source
7604 (origin
7605 (method url-fetch)
7606 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
7607 version ".tar.gz"))
7608 (file-name (string-append name "-" version ".tar.gz"))
7609 (sha256
7610 (base32
7611 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
7612 (build-system python-build-system)
7613 ;; The package does not come with a setup.py file, so we have to generate
7614 ;; one ourselves.
7615 (arguments
7616 `(#:tests? #f
7617 #:phases
7618 (modify-phases %standard-phases
7619 (add-after 'unpack 'create-setup.py
7620 (lambda _
7621 (call-with-output-file "setup.py"
7622 (lambda (port)
7623 (format port "\
7624from setuptools import setup
7625setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7626" ,version))))))))
7627 (home-page "https://github.com/takluyver/entrypoints")
7628 (synopsis "Discover and load entry points from installed Python packages")
7629 (description "Entry points are a way for Python packages to advertise
7630objects with some common interface. The most common examples are
7631@code{console_scripts} entry points, which define shell commands by
7632identifying a Python function to run. The @code{entrypoints} module contains
7633functions to find and load entry points.")
7634 (license license:expat)))
7635
7636(define-public python2-entrypoints
7637 (package-with-python2 python-entrypoints))
7638
c60898a8
RW
7639(define-public python-nbconvert
7640 (package
7641 (name "python-nbconvert")
7642 (version "5.0.0b1")
7643 (source
7644 (origin
7645 (method url-fetch)
7646 (uri (pypi-uri "nbconvert" version))
7647 (sha256
7648 (base32
7649 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7650 (build-system python-build-system)
497355dc
MB
7651 (arguments
7652 `(;; The "bdist_egg" target is disabled by default, causing the installation
7653 ;; to fail.
7654 #:configure-flags (list "bdist_egg")
7655 ;; FIXME: 5 failures, 40 errors.
7656 #:tests? #f))
7657 ;; #:phases
7658 ;; (modify-phases %standard-phases
7659 ;; (replace 'check
7660 ;; (lambda _
7661 ;; (zero? (system* "py.test" "-v")))))
7662 (native-inputs
7663 `(("python-pytest" ,python-pytest)))
c60898a8
RW
7664 (propagated-inputs
7665 `(("python-bleach" ,python-bleach)
7666 ("python-entrypoints" ,python-entrypoints)
7667 ("python-jinja2" ,python-jinja2)
7668 ("python-jupyter-core" ,python-jupyter-core)
7669 ("python-mistune" ,python-mistune)
7670 ("python-nbformat" ,python-nbformat)
7671 ("python-pygments" ,python-pygments)
c60898a8
RW
7672 ("python-traitlets" ,python-traitlets)))
7673 (home-page "http://jupyter.org")
7674 (synopsis "Converting Jupyter Notebooks")
7675 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7676notebooks to various other formats via Jinja templates. It allows you to
7677convert an @code{.ipynb} notebook file into various static formats including:
7678
7679@enumerate
7680@item HTML
7681@item LaTeX
7682@item PDF
7683@item Reveal JS
7684@item Markdown (md)
7685@item ReStructured Text (rst)
7686@item executable script
7687@end enumerate\n")
7688 (license license:bsd-3)))
7689
7690(define-public python2-nbconvert
7691 (package-with-python2 python-nbconvert))
7692
a0d62280
RW
7693(define-public python-notebook
7694 (package
7695 (name "python-notebook")
7696 (version "4.2.3")
7697 (source (origin
7698 (method url-fetch)
7699 (uri (pypi-uri "notebook" version))
7700 (sha256
7701 (base32
7702 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7703 (build-system python-build-system)
7704 (arguments
7705 `(#:phases
7706 (modify-phases %standard-phases
7707 (replace 'check
7708 (lambda _
7709 ;; HOME must be set for tests
7710 (setenv "HOME" "/tmp")
7711 (zero? (system* "nosetests")))))))
7712 (propagated-inputs
7713 `(("python-jupyter-core" ,python-jupyter-core)
7714 ("python-nbformat" ,python-nbformat)
7715 ("python-nbconvert" ,python-nbconvert)
7716 ("python-ipython" ,python-ipython)))
7717 (native-inputs
7718 `(("python-nose" ,python-nose)
7719 ("python-sphinx" ,python-sphinx)
7720 ("python-requests" ,python-requests)))
7721 (home-page "http://jupyter.org/")
7722 (synopsis "Web-based notebook environment for interactive computing")
7723 (description
7724 "The Jupyter HTML notebook is a web-based notebook environment for
7725interactive computing.")
3a735ecf 7726 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
7727 (license license:bsd-3)))
7728
7729(define-public python2-notebook
3a735ecf
HG
7730 (let ((base (package-with-python2
7731 (strip-python2-variant python-notebook))))
7732 (package (inherit base)
7733 (native-inputs
7734 `(("python2-mock" ,python2-mock)
7735 ,@(package-native-inputs base)))
7736 (arguments
7737 (substitute-keyword-arguments (package-arguments base)
7738 ((#:phases phases)
7739 `(modify-phases ,phases
7740 (add-before 'check 'disable-test-case
7741 ;; The test requires network access to localhost. Curiously it
7742 ;; fails with Python 2 only. Simply make the test-case return
7743 ;; immediately.
7744 (lambda _
7745 (substitute*
7746 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7747 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 7748
d55724ed
RW
7749(define-public python-widgetsnbextension
7750 (package
7751 (name "python-widgetsnbextension")
7752 (version "1.2.6")
7753 (source
7754 (origin
7755 (method url-fetch)
7756 (uri (pypi-uri "widgetsnbextension" version))
7757 (sha256
7758 (base32
7759 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7760 (build-system python-build-system)
7761 (propagated-inputs
7762 `(("python-notebook" ,python-notebook)))
7763 (native-inputs
58f5fae7
MB
7764 `(("python-certifi" ,python-certifi)
7765 ("python-nose" ,python-nose)))
d55724ed
RW
7766 (home-page "http://ipython.org")
7767 (synopsis "IPython HTML widgets for Jupyter")
7768 (description "This package provides interactive HTML widgets for Jupyter
7769notebooks.")
7770 (license license:bsd-3)))
7771
7772(define-public python2-widgetsnbextension
7773 (package-with-python2 python-widgetsnbextension))
7774
4fe2e344
RW
7775(define-public python-ipywidgets
7776 (package
7777 (name "python-ipywidgets")
7778 (version "5.2.2")
7779 (source
7780 (origin
7781 (method url-fetch)
7782 (uri (pypi-uri "ipywidgets" version))
7783 (sha256
7784 (base32
7785 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7786 (build-system python-build-system)
7787 ;; FIXME: it's not clear how to run the tests.
7788 (arguments `(#:tests? #f))
7789 (propagated-inputs
7790 `(("python-ipykernel" ,python-ipykernel)
7791 ("python-ipython" ,python-ipython)
4fe2e344
RW
7792 ("python-traitlets" ,python-traitlets)
7793 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7794 (home-page "http://ipython.org")
7795 (synopsis "IPython HTML widgets for Jupyter")
7796 (description "Ipywidgets are interactive HTML widgets for Jupyter
7797notebooks and the IPython kernel. Notebooks come alive when interactive
7798widgets are used. Users gain control of their data and can visualize changes
7799in the data.")
7800 (license license:bsd-3)))
7801
7802(define-public python2-ipywidgets
7803 (package-with-python2 python-ipywidgets))
7804
8ceebf8f
RW
7805(define-public python-jupyter-console
7806 (package
7807 (name "python-jupyter-console")
7808 (version "5.0.0")
7809 (source
7810 (origin
7811 (method url-fetch)
7812 (uri (pypi-uri "jupyter_console" version))
7813 (sha256
7814 (base32
7815 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7816 (build-system python-build-system)
7817 ;; FIXME: it's not clear how to run the tests.
7818 (arguments `(#:tests? #f))
7819 (propagated-inputs
7820 `(("python-ipykernel" ,python-ipykernel)
7821 ("python-ipython" ,python-ipython)
7822 ("python-jupyter-client" ,python-jupyter-client)
7823 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 7824 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
7825 (home-page "https://jupyter.org")
7826 (synopsis "Jupyter terminal console")
7827 (description "This package provides a terminal-based console frontend for
7828Jupyter kernels. It also allows for console-based interaction with non-Python
7829Jupyter kernels such as IJulia and IRKernel.")
7830 (license license:bsd-3)))
7831
7832(define-public python2-jupyter-console
7833 (package-with-python2 python-jupyter-console))
7834
c27ae827
RW
7835(define-public jupyter
7836 (package
7837 (name "jupyter")
7838 (version "1.0.0")
7839 (source
7840 (origin
7841 (method url-fetch)
7842 (uri (pypi-uri "jupyter" version))
7843 (sha256
7844 (base32
7845 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7846 (build-system python-build-system)
7847 ;; FIXME: it's not clear how to run the tests.
7848 (arguments `(#:tests? #f))
7849 (propagated-inputs
7850 `(("python-ipykernel" ,python-ipykernel)
7851 ("python-ipywidgets" ,python-ipywidgets)
7852 ("python-jupyter-console" ,python-jupyter-console)
7853 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 7854 ("python-notebook" ,python-notebook)))
c27ae827
RW
7855 (home-page "http://jupyter.org")
7856 (synopsis "Web application for interactive documents")
7857 (description
7858 "The Jupyter Notebook is a web application that allows you to create and
7859share documents that contain live code, equations, visualizations and
7860explanatory text. Uses include: data cleaning and transformation, numerical
7861simulation, statistical modeling, machine learning and much more.")
7862 (license license:bsd-3)))
7863
816a6538
LC
7864(define-public python-chardet
7865 (package
7866 (name "python-chardet")
7867 (version "2.3.0")
7868 (source
7869 (origin
7870 (method url-fetch)
7871 (uri (string-append
7872 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7873 version
7874 ".tar.gz"))
7875 (sha256
7876 (base32
7877 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7878 (build-system python-build-system)
816a6538
LC
7879 (home-page "https://github.com/chardet/chardet")
7880 (synopsis "Universal encoding detector for Python 2 and 3")
7881 (description
7882 "This package provides @code{chardet}, a Python module that can
7883automatically detect a wide range of file encodings.")
3f641af0 7884 (license license:lgpl2.1+)))
816a6538
LC
7885
7886(define-public python2-chardet
7887 (package-with-python2 python-chardet))
2fc5f186 7888
1872f1bb
KM
7889(define-public python-docopt
7890 (package
7891 (name "python-docopt")
7892 (version "0.6.2")
7893 (source
7894 (origin
7895 (method url-fetch)
7896 ;; The release on PyPI does not include tests.
7897 (uri (string-append
7898 "https://github.com/docopt/docopt/archive/"
7899 version ".tar.gz"))
7900 (file-name (string-append name "-" version ".tar.gz"))
7901 (sha256
7902 (base32
7903 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7904 (build-system python-build-system)
7905 (native-inputs
f3b98f4f 7906 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
7907 (arguments
7908 `(#:phases (alist-replace
7909 'check
7910 (lambda _ (zero? (system* "py.test")))
7911 %standard-phases)))
7912 (home-page "http://docopt.org")
7913 (synopsis "Command-line interface description language for Python")
7914 (description "This library allows the user to define a command-line
7915interface from a program's help message rather than specifying it
7916programatically with command-line parsers like @code{getopt} and
7917@code{argparse}.")
7918 (license license:expat)))
7919
7920(define-public python2-docopt
7921 (package-with-python2 python-docopt))
7922
2fc5f186
LF
7923(define-public python-zope-event
7924 (package
7925 (name "python-zope-event")
7926 (version "4.1.0")
7927 (source
7928 (origin
7929 (method url-fetch)
7930 (uri (string-append "https://pypi.python.org/packages/source/z"
7931 "/zope.event/zope.event-" version ".tar.gz"))
7932 (sha256
7933 (base32
7934 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7935 (build-system python-build-system)
2fc5f186
LF
7936 (home-page "http://pypi.python.org/pypi/zope.event")
7937 (synopsis "Event publishing system for Python")
7938 (description "Zope.event provides an event publishing API, intended for
7939use by applications which are unaware of any subscribers to their events. It
7940is a simple event-dispatching system on which more sophisticated event
7941dispatching systems can be built.")
3f641af0 7942 (license license:zpl2.1)))
2fc5f186
LF
7943
7944(define-public python2-zope-event
7945 (package-with-python2 python-zope-event))
97abe268
LF
7946
7947(define-public python-zope-interface
7948 (package
7949 (name "python-zope-interface")
7950 (version "4.1.3")
7951 (source
7952 (origin
7953 (method url-fetch)
7954 (uri (string-append "https://pypi.python.org/packages/source/z"
7955 "/zope.interface/zope.interface-" version ".tar.gz"))
7956 (sha256
7957 (base32
7958 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7959 (build-system python-build-system)
38d480a8 7960 (native-inputs
97abe268
LF
7961 `(("python-zope-event" ,python-zope-event)))
7962 (home-page "https://github.com/zopefoundation/zope.interface")
7963 (synopsis "Python implementation of the \"design by contract\"
7964methodology")
7965 (description "Zope.interface provides an implementation of \"object
7966interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7967conforming to a given API or contract.")
3f641af0 7968 (license license:zpl2.1)))
97abe268
LF
7969
7970(define-public python2-zope-interface
7971 (package-with-python2 python-zope-interface))
81f2373c
LF
7972
7973(define-public python-zope-exceptions
7974 (package
7975 (name "python-zope-exceptions")
7976 (version "4.0.8")
7977 (source
7978 (origin
7979 (method url-fetch)
7980 (uri (string-append "https://pypi.python.org/packages/source/z"
7981 "/zope.exceptions/zope.exceptions-"
7982 version ".tar.gz"))
7983 (sha256
7984 (base32
7985 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
7986 (build-system python-build-system)
7987 (arguments
7988 '(#:tests? #f)) ; circular dependency with zope.testrunner
7989 (propagated-inputs
7990 `(("python-zope-interface" ,python-zope-interface)))
7991 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
7992 (synopsis "Zope exceptions")
7993 (description "Zope.exceptions provides general-purpose exception types
7994that have uses outside of the Zope framework.")
3f641af0 7995 (license license:zpl2.1)))
81f2373c
LF
7996
7997(define-public python2-zope-exceptions
7998 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
7999
8000(define-public python-zope-testing
8001 (package
8002 (name "python-zope-testing")
8003 (version "4.5.0")
8004 (source
8005 (origin
8006 (method url-fetch)
8007 (uri (string-append "https://pypi.python.org/packages/source/z"
8008 "/zope.testing/zope.testing-" version ".tar.gz"))
8009 (sha256
8010 (base32
b02f7a21
HG
8011 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
8012 (modules '((guix build utils)))
8013 (snippet
8014 '(begin
8015 ;; Remove pre-compiled .pyc files backup files from source.
8016 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
8017 #t))))
900e3c0e
LF
8018 (build-system python-build-system)
8019 (native-inputs
8020 `(("python-zope-exceptions" ,python-zope-exceptions)))
8021 (propagated-inputs
8022 `(("python-zope-interface" ,python-zope-interface)))
8023 (home-page "http://pypi.python.org/pypi/zope.testing")
8024 (synopsis "Zope testing helpers")
8025 (description "Zope.testing provides a number of testing utilities for HTML
8026forms, HTTP servers, regular expressions, and more.")
3f641af0 8027 (license license:zpl2.1)))
900e3c0e
LF
8028
8029(define-public python2-zope-testing
8030 (package-with-python2 python-zope-testing))
01614c4f
LF
8031
8032(define-public python-zope-testrunner
8033 (package
8034 (name "python-zope-testrunner")
8035 (version "4.4.9")
8036 (source
8037 (origin
8038 (method url-fetch)
8039 (uri (string-append "https://pypi.python.org/packages/source/z"
8040 "/zope.testrunner/zope.testrunner-"
8041 version ".zip"))
8042 (sha256
8043 (base32
8044 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
8045 (build-system python-build-system)
385871e5
MB
8046 (arguments
8047 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
01614c4f
LF
8048 (native-inputs
8049 `(("python-six" ,python-six)
e408ffc3 8050 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
8051 ("python-zope-exceptions" ,python-zope-exceptions)
8052 ("python-zope-testing" ,python-zope-testing)
8053 ("unzip" ,unzip)))
8054 (propagated-inputs
8055 `(("python-zope-interface" ,python-zope-interface)))
8056 (home-page "http://pypi.python.org/pypi/zope.testrunner")
8057 (synopsis "Zope testrunner script")
8058 (description "Zope.testrunner provides a script for running Python
8059tests.")
3f641af0 8060 (license license:zpl2.1)))
01614c4f
LF
8061
8062(define-public python2-zope-testrunner
8063 (let ((base (package-with-python2 python-zope-testrunner)))
8064 (package
8065 (inherit base)
8066 (native-inputs
8067 (append (package-native-inputs base)
8068 `(("python2-subunit" ,python2-subunit)
8069 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
8070
8071(define-public python-zope-i18nmessageid
8072 (package
8073 (name "python-zope-i18nmessageid")
8074 (version "4.0.3")
8075 (source
8076 (origin
8077 (method url-fetch)
8078 (uri (string-append
8079 "https://pypi.python.org/packages/source/z"
8080 "/zope.i18nmessageid/zope.i18nmessageid-"
8081 version ".tar.gz"))
8082 (sha256
8083 (base32
8084 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
8085 (build-system python-build-system)
6a5c710c
LF
8086 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
8087 (synopsis "Message identifiers for internationalization")
8088 (description "Zope.i18nmessageid provides facilities for declaring
8089internationalized messages within program source text.")
3f641af0 8090 (license license:zpl2.1)))
6a5c710c
LF
8091
8092(define-public python2-zope-i18nmessageid
8093 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
8094
8095(define-public python-zope-schema
8096 (package
8097 (name "python-zope-schema")
8098 (version "4.4.2")
8099 (source
8100 (origin
8101 (method url-fetch)
8102 (uri (string-append "https://pypi.python.org/packages/source/z"
8103 "/zope.schema/zope.schema-" version ".tar.gz"))
8104 (sha256
8105 (base32
8106 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
8107 (build-system python-build-system)
22dba2ef
MB
8108 (arguments
8109 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
71fb09f3
LF
8110 (propagated-inputs
8111 `(("python-zope-event" ,python-zope-event)
2b9e4bea 8112 ("python-zope-exceptions", python-zope-exceptions)
71fb09f3
LF
8113 ("python-zope-interface" ,python-zope-interface)))
8114 (native-inputs
47f77210
HG
8115 `(("python-zope-testing" ,python-zope-testing)
8116 ("python-coverage" ,python-coverage)
8117 ("python-nose" ,python-nose)))
71fb09f3
LF
8118 (home-page "http://pypi.python.org/pypi/zope.schema")
8119 (synopsis "Zope data schemas")
8120 (description "Zope.scheme provides extensions to zope.interface for
8121defining data schemas.")
3f641af0 8122 (license license:zpl2.1)))
71fb09f3
LF
8123
8124(define-public python2-zope-schema
8125 (package-with-python2 python-zope-schema))
fbac9b17
LF
8126
8127(define-public python-zope-configuration
8128 (package
8129 (name "python-zope-configuration")
8130 (version "4.0.3")
8131 (source (origin
8132 (method url-fetch)
8133 (uri (string-append "https://pypi.python.org/packages/source/z"
8134 "/zope.configuration/zope.configuration-"
8135 version ".tar.gz"))
8136 (sha256
8137 (base32
8138 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
8139 (build-system python-build-system)
7e8b1bfa
MB
8140 (arguments
8141 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
fbac9b17
LF
8142 (propagated-inputs
8143 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8144 ("python-zope-schema" ,python-zope-schema)))
8145 (home-page "http://pypi.python.org/pypi/zope.configuration")
8146 (synopsis "Zope Configuration Markup Language")
8147 (description "Zope.configuration implements ZCML, the Zope Configuration
8148Markup Language.")
3f641af0 8149 (license license:zpl2.1)))
fbac9b17
LF
8150
8151(define-public python2-zope-configuration
8152 (package-with-python2 python-zope-configuration))
2ad52086
LF
8153
8154(define-public python-zope-proxy
8155 (package
8156 (name "python-zope-proxy")
8157 (version "4.1.6")
8158 (source
8159 (origin
8160 (method url-fetch)
8161 (uri (string-append "https://pypi.python.org/packages/source/z"
8162 "/zope.proxy/zope.proxy-" version ".tar.gz"))
8163 (sha256
8164 (base32
8165 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
8166 (build-system python-build-system)
66b3aadb
MB
8167 (arguments
8168 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
2ad52086
LF
8169 (propagated-inputs
8170 `(("python-zope-interface" ,python-zope-interface)))
8171 (home-page "http://pypi.python.org/pypi/zope.proxy")
8172 (synopsis "Generic, transparent proxies")
8173 (description "Zope.proxy provides generic, transparent proxies for Python.
8174Proxies are special objects which serve as mostly-transparent wrappers around
8175another object, intervening in the apparent behavior of the wrapped object
8176only when necessary to apply the policy (e.g., access checking, location
8177brokering, etc.) for which the proxy is responsible.")
3f641af0 8178 (license license:zpl2.1)))
2ad52086
LF
8179
8180(define-public python2-zope-proxy
8181 (package-with-python2 python-zope-proxy))
f404b5ea
LF
8182
8183(define-public python-zope-location
8184 (package
8185 (name "python-zope-location")
8186 (version "4.0.3")
8187 (source
8188 (origin
8189 (method url-fetch)
8190 (uri (string-append "https://pypi.python.org/packages/source/z"
8191 "/zope.location/zope.location-" version ".tar.gz"))
8192 (sha256
8193 (base32
8194 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
8195 (build-system python-build-system)
40bb8e07
MB
8196 (arguments
8197 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
d27f176a 8198 (propagated-inputs
f404b5ea
LF
8199 `(("python-zope-proxy" ,python-zope-proxy)
8200 ("python-zope-schema" ,python-zope-schema)))
8201 (home-page "http://pypi.python.org/pypi/zope.location/")
8202 (synopsis "Zope location library")
8203 (description "Zope.location implements the concept of \"locations\" in
8204Zope3, which are are special objects that have a structural location.")
3f641af0 8205 (license license:zpl2.1)))
f404b5ea
LF
8206
8207(define-public python2-zope-location
8208 (package-with-python2 python-zope-location))
d4b77f36
LF
8209
8210(define-public python-zope-security
8211 (package
8212 (name "python-zope-security")
8213 (version "4.0.3")
8214 (source
8215 (origin
8216 (method url-fetch)
8217 (uri (string-append "https://pypi.python.org/packages/source/z"
8218 "/zope.security/zope.security-" version ".tar.gz"))
8219 (sha256
8220 (base32
8221 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
8222 (build-system python-build-system)
a74f9b12
MB
8223 (arguments
8224 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
d4b77f36
LF
8225 (propagated-inputs
8226 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 8227 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7 8228 ("python-zope-schema" ,python-zope-schema)))
a74f9b12
MB
8229 (native-inputs
8230 `(("python-six" ,python-six)
8231 ("python-zope-component" ,python-zope-component)
fd8e23b7
HG
8232 ("python-zope-configuration" ,python-zope-configuration)
8233 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
8234 ("python-zope-testrunner" ,python-zope-testrunner)
8235 ("python-zope-testing" ,python-zope-testing)))
8236 (home-page "http://pypi.python.org/pypi/zope.security")
8237 (synopsis "Zope security framework")
8238 (description "Zope.security provides a generic mechanism to implement
8239security policies on Python objects.")
3f641af0 8240 (license license:zpl2.1)))
d4b77f36
LF
8241
8242(define-public python2-zope-security
04417662
EF
8243 (let ((zope-security (package-with-python2 python-zope-security)))
8244 (package (inherit zope-security)
8245 (propagated-inputs
8246 `(("python2-zope-testrunner" ,python2-zope-testrunner)
8247 ,@(alist-delete
8248 "python-zope-testrunner"
8249 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
8250
8251(define-public python-zope-component
8252 (package
8253 (name "python-zope-component")
8254 (version "4.2.2")
8255 (source
8256 (origin
8257 (method url-fetch)
8258 (uri (string-append "https://pypi.python.org/packages/source/z"
8259 "/zope.component/zope.component-" version ".tar.gz"))
8260 (sha256
8261 (base32
8262 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
8263 (build-system python-build-system)
8264 (arguments
8265 ;; Skip tests due to circular dependency with python-zope-security.
8266 '(#:tests? #f))
8267 (native-inputs
8268 `(("python-zope-testing" ,python-zope-testing)))
8269 (propagated-inputs
8270 `(("python-zope-event" ,python-zope-event)
8271 ("python-zope-interface" ,python-zope-interface)
8272 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8273 ("python-zope-configuration" ,python-zope-configuration)))
8274 (home-page "https://github.com/zopefoundation/zope.component")
8275 (synopsis "Zope Component Architecture")
8276 (description "Zope.component represents the core of the Zope Component
8277Architecture. Together with the zope.interface package, it provides
8278facilities for defining, registering and looking up components.")
3f641af0 8279 (license license:zpl2.1)))
a6b61b27
LF
8280
8281(define-public python2-zope-component
8282 (package-with-python2 python-zope-component))
3859ac12 8283
1ae44b80 8284(define-public python-pythondialog
b5f218be 8285 (package
1ae44b80 8286 (name "python-pythondialog")
42c4b246 8287 (version "3.4.0")
b5f218be
LF
8288 (source
8289 (origin
8290 (method url-fetch)
1ae44b80 8291 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
8292 (sha256
8293 (base32
1ae44b80 8294 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
8295 (build-system python-build-system)
8296 (arguments
8297 `(#:phases
8298 (modify-phases %standard-phases
8299 (add-after 'unpack 'patch-path
8300 (lambda* (#:key inputs #:allow-other-keys)
8301 (let* ((dialog (assoc-ref inputs "dialog")))
8302 ;; Since this library really wants to grovel the search path, we
8303 ;; must hardcode dialog's store path into it.
8304 (substitute* "dialog.py"
8305 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8306 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8307 #t))))
b5f218be
LF
8308 #:tests? #f)) ; no test suite
8309 (propagated-inputs
8310 `(("dialog" ,dialog)))
8311 (home-page "http://pythondialog.sourceforge.net/")
8312 (synopsis "Python interface to the UNIX dialog utility")
8313 (description "A Python wrapper for the dialog utility. Its purpose is to
8314provide an easy to use, pythonic and comprehensive Python interface to dialog.
8315This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 8316 (license license:lgpl2.1)
1ae44b80
LF
8317 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8318
8319(define-public python2-pythondialog
8320 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8321 (package
8322 (inherit base)
8323 (version (package-version python-pythondialog))
8324 (source (origin
8325 (method url-fetch)
8326 (uri (pypi-uri "python2-pythondialog" version))
8327 (sha256
8328 (base32
8329 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 8330
3859ac12
LF
8331(define-public python-pyrfc3339
8332 (package
8333 (name "python-pyrfc3339")
d9aa097b 8334 (version "1.0")
3859ac12
LF
8335 (source
8336 (origin
8337 (method url-fetch)
d9aa097b 8338 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
8339 (sha256
8340 (base32
d9aa097b 8341 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
8342 (build-system python-build-system)
8343 (propagated-inputs
8344 `(("python-pytz" ,python-pytz)))
8345 (native-inputs
f3b98f4f 8346 `(("python-nose" ,python-nose)))
3859ac12
LF
8347 (home-page "https://github.com/kurtraschke/pyRFC3339")
8348 (synopsis "Python timestamp library")
8349 (description "Python library for generating and parsing RFC 3339-compliant
8350timestamps.")
8351 (license license:expat)))
8352
8353(define-public python2-pyrfc3339
8354 (package-with-python2 python-pyrfc3339))
5eea2005
LF
8355
8356(define-public python-werkzeug
8357 (package
8358 (name "python-werkzeug")
bbb99d6b 8359 (version "0.11.15")
5eea2005
LF
8360 (source
8361 (origin
8362 (method url-fetch)
4b47cbfa 8363 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
8364 (sha256
8365 (base32
bbb99d6b 8366 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
5eea2005
LF
8367 (build-system python-build-system)
8368 (native-inputs
8369 `(("python-pytest" ,python-pytest)))
8370 (home-page "http://werkzeug.pocoo.org/")
8371 (synopsis "Utilities for WSGI applications")
8372 (description "One of the most advanced WSGI utility modules. It includes a
8373powerful debugger, full-featured request and response objects, HTTP utilities to
8374handle entity tags, cache control headers, HTTP dates, cookie handling, file
8375uploads, a powerful URL routing system and a bunch of community-contributed
8376addon modules.")
3f641af0 8377 (license license:x11)))
5eea2005
LF
8378
8379(define-public python2-werkzeug
8380 (package-with-python2 python-werkzeug))
99fffa8a
LF
8381
8382(define-public python-configobj
8383 (package
8384 (name "python-configobj")
8385 (version "5.0.6")
8386 (source (origin
8387 (method url-fetch)
8388 (uri (string-append
8389 "https://pypi.python.org/packages/source/c/configobj/"
8390 "configobj-" version ".tar.gz"))
8391 (sha256
8392 (base32
8393 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
8394 ;; Patch setup.py so it looks for python-setuptools, which is
8395 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 8396 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 8397 (build-system python-build-system)
861f70c9 8398 (propagated-inputs
f3b98f4f 8399 `(("python-six" ,python-six)))
99fffa8a
LF
8400 (synopsis "Config file reading, writing and validation")
8401 (description "ConfigObj is a simple but powerful config file reader and
8402writer: an ini file round tripper. Its main feature is that it is very easy to
8403use, with a straightforward programmer’s interface and a simple syntax for
8404config files.")
8405 (home-page "https://github.com/DiffSK/configobj")
3f641af0 8406 (license license:bsd-3)))
99fffa8a
LF
8407
8408(define-public python2-configobj
8409 (package-with-python2 python-configobj))
79e8a291
LF
8410
8411(define-public python-configargparse
8412 (package
8413 (name "python-configargparse")
8414 (version "0.10.0")
8415 (source (origin
8416 (method url-fetch)
8417 (uri (string-append
8418 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
8419 "ConfigArgParse-" version ".tar.gz"))
8420 (sha256
8421 (base32
8422 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
8423 (build-system python-build-system)
8424 (arguments
8425 ;; FIXME: Bug in test suite filed upstream:
8426 ;; https://github.com/bw2/ConfigArgParse/issues/32
8427 '(#:tests? #f))
8428 (synopsis "Replacement for argparse")
8429 (description "A drop-in replacement for argparse that allows options to also
8430be set via config files and/or environment variables.")
8431 (home-page "https://github.com/bw2/ConfigArgParse")
8432 (license license:expat)))
8433
8434(define-public python2-configargparse
8435 (package-with-python2 python-configargparse))
ab41f979
LF
8436
8437(define-public python-ndg-httpsclient
8438 (package
8439 (name "python-ndg-httpsclient")
ae476d01 8440 (version "0.4.2")
ab41f979
LF
8441 (source (origin
8442 (method url-fetch)
7be13d00 8443 (uri (pypi-uri "ndg_httpsclient" version))
ab41f979
LF
8444 (sha256
8445 (base32
ae476d01 8446 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
ab41f979 8447 (build-system python-build-system)
a39cc016
LF
8448 (arguments
8449 '(;; The tests appear to require networking.
8450 #:tests? #f))
ab41f979
LF
8451 (propagated-inputs
8452 `(("python-pyopenssl" ,python-pyopenssl)))
8453 (synopsis "HTTPS support for Python's httplib and urllib2")
8454 (description "This is a HTTPS client implementation for httplib and urllib2
8455based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
8456over the default provided with Python and importantly enables full verification
8457of the SSL peer.")
8458 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 8459 (license license:bsd-3)))
ab41f979
LF
8460
8461;; python2-openssl requires special care, so package-with-python2 is
8462;; insufficient.
8463(define-public python2-ndg-httpsclient
8464 (package (inherit python-ndg-httpsclient)
8465 (name "python2-ndg-httpsclient")
8466 (arguments `(#:python ,python-2))
8467 (propagated-inputs
8468 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
8469
8470(define-public python-contextlib2
8471 (package
8472 (name "python-contextlib2")
8473 (version "0.4.0")
8474 (source
8475 (origin
8476 (method url-fetch)
8477 (uri (pypi-uri "contextlib2" version))
8478 (sha256
8479 (base32
8480 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
8481 (build-system python-build-system)
8482 (arguments
8483 `(#:phases
8484 (modify-phases %standard-phases
8485 (replace 'check
8486 (lambda _ (zero?
8487 (system*
b3546174 8488 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
8489 (home-page "http://contextlib2.readthedocs.org/")
8490 (synopsis "Tools for decorators and context managers")
8491 (description "This module is primarily a backport of the Python
84923.2 contextlib to earlier Python versions. Like contextlib, it
8493provides utilities for common tasks involving decorators and context
8494managers. It also contains additional features that are not part of
8495the standard library.")
3f641af0 8496 (license license:psfl)))
03f964a5
CM
8497
8498(define-public python2-contextlib2
8499 (package-with-python2 python-contextlib2))
210bf497
DT
8500
8501(define-public python-texttable
8502 (package
8503 (name "python-texttable")
8504 (version "0.8.4")
8505 (source
8506 (origin
8507 (method url-fetch)
8508 (uri (pypi-uri "texttable" version))
8509 (sha256
8510 (base32
8511 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
8512 (build-system python-build-system)
8513 (arguments '(#:tests? #f)) ; no tests
8514 (home-page "https://github.com/foutaise/texttable/")
8515 (synopsis "Python module for creating simple ASCII tables")
8516 (description "Texttable is a Python module for creating simple ASCII
8517tables.")
3f641af0 8518 (license license:lgpl2.1+)))
210bf497
DT
8519
8520(define-public python2-texttable
8521 (package-with-python2 python-texttable))
67c52bb3
DT
8522
8523(define-public python-websocket-client
8524 (package
8525 (name "python-websocket-client")
6b810897 8526 (version "0.37.0")
67c52bb3
DT
8527 (source
8528 (origin
8529 (method url-fetch)
6b810897 8530 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
8531 (sha256
8532 (base32
6b810897 8533 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 8534 (build-system python-build-system)
a5333f7c
HG
8535 (propagated-inputs
8536 `(("python-six" ,python-six)))
67c52bb3
DT
8537 (home-page "https://github.com/liris/websocket-client")
8538 (synopsis "WebSocket client for Python")
8539 (description "The Websocket-client module provides the low level APIs for
8540WebSocket usage in Python programs.")
3f641af0 8541 (license license:lgpl2.1+)))
67c52bb3
DT
8542
8543(define-public python2-websocket-client
8544 (package-with-python2 python-websocket-client))
5c6eea2a
LF
8545
8546(define-public python-atomicwrites
8547 (package
8548 (name "python-atomicwrites")
4e92d76a 8549 (version "1.1.0")
5c6eea2a
LF
8550 (source (origin
8551 (method url-fetch)
8552 (uri (pypi-uri "atomicwrites" version))
8553 (sha256
8554 (base32
4e92d76a 8555 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
8556 (build-system python-build-system)
8557 (synopsis "Atomic file writes in Python")
8558 (description "Library for atomic file writes using platform dependent tools
8f65585b 8559for atomic file system operations.")
5c6eea2a 8560 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 8561 (license license:expat)))
9bb6d184
LF
8562
8563(define-public python2-atomicwrites
f210e944 8564 (package-with-python2 python-atomicwrites))
561bb3cb
LF
8565
8566(define-public python-requests-toolbelt
8567 (package
8568 (name "python-requests-toolbelt")
c02af1c8 8569 (version "0.6.2")
561bb3cb
LF
8570 (source (origin
8571 (method url-fetch)
c02af1c8
LF
8572 (uri (string-append
8573 "https://pypi.python.org/packages/"
8574 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
8575 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
8576 (sha256
8577 (base32
c02af1c8 8578 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 8579 (build-system python-build-system)
759aadd4
LF
8580 (native-inputs
8581 `(("python-betamax" ,python-betamax)
8582 ("python-mock" ,python-mock)
8583 ("python-pytest" ,python-pytest)))
561bb3cb
LF
8584 (propagated-inputs
8585 `(("python-requests" ,python-requests)))
8586 (synopsis "Extensions to python-requests")
8587 (description "This is a toolbelt of useful classes and functions to be used
8588with python-requests.")
8589 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 8590 (license license:asl2.0)))
d1deb90b
LF
8591
8592(define-public python-click-threading
8593 (package
8594 (name "python-click-threading")
3d2e0dbc 8595 (version "0.2.0")
d1deb90b
LF
8596 (source (origin
8597 (method url-fetch)
3d2e0dbc
LF
8598 (uri (string-append
8599 "https://pypi.python.org/packages/"
8600 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
8601 "click-threading-" version ".tar.gz"))
d1deb90b
LF
8602 (sha256
8603 (base32
3d2e0dbc 8604 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
8605 (build-system python-build-system)
8606 (propagated-inputs
8607 `(("python-click" ,python-click)))
8608 (synopsis "Utilities for multithreading in Click")
8609 (description "This package provides utilities for multithreading in Click
8610applications.")
8611 (home-page "https://github.com/click-contrib/click-threading")
8612 (license license:expat)))
7b17cab9
LF
8613
8614(define-public python-click-log
8615 (package
8616 (name "python-click-log")
42734b9a 8617 (version "0.1.8")
7b17cab9
LF
8618 (source (origin
8619 (method url-fetch)
8620 (uri (pypi-uri "click-log" version))
8621 (sha256
8622 (base32
42734b9a 8623 "14ikfjfgnzf21mjniq9lfk2igzykgzfvwwrk85nw2b9fq44109sp"))))
7b17cab9
LF
8624 (build-system python-build-system)
8625 (propagated-inputs
8626 `(("python-click" ,python-click)))
8627 (synopsis "Logging for click applications")
8628 (description "This package provides a Python library for logging Click
8629applications.")
8630 (home-page "https://github.com/click-contrib/click-log")
8631 (license license:expat)))
7b3a4ee4
LF
8632
8633(define-public python-apipkg
8634 (package
8635 (name "python-apipkg")
8636 (version "1.4")
8637 (source (origin
8638 (method url-fetch)
8639 (uri (pypi-uri "apipkg" version))
8640 (sha256
8641 (base32
8642 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8643 (build-system python-build-system)
328bb95d 8644 (native-inputs
7b3a4ee4
LF
8645 `(("python-pytest" ,python-pytest)))
8646 (synopsis "Namespace control and lazy-import mechanism")
8647 (description "With apipkg you can control the exported namespace of a Python
8648package and greatly reduce the number of imports for your users. It is a small
8649pure Python module that works on virtually all Python versions.")
8650 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 8651 (license license:expat)))
e08739c3
CAW
8652
8653(define-public python2-apipkg
f210e944 8654 (package-with-python2 python-apipkg))
848964fe
LF
8655
8656(define-public python-execnet
8657 (package
8658 (name "python-execnet")
8659 (version "1.4.1")
8660 (source (origin
8661 (method url-fetch)
8662 (uri (pypi-uri "execnet" version))
8663 (sha256
8664 (base32
8665 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8666 (build-system python-build-system)
ca0eee9d
LF
8667 (arguments
8668 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8669 ;; The two test failures are caused by the lack of an `ssh` executable.
8670 ;; The test suite can be run with pytest after the 'install' phase.
8671 #:tests? #f))
848964fe 8672 (native-inputs
ca0eee9d
LF
8673 `(("python-pytest" ,python-pytest)
8674 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 8675 (propagated-inputs
848964fe
LF
8676 `(("python-apipkg" ,python-apipkg)))
8677 (synopsis "Rapid multi-Python deployment")
8678 (description "Execnet provides a share-nothing model with
8679channel-send/receive communication for distributing execution across many
8680Python interpreters across version, platform and network barriers. It has a
8681minimal and fast API targetting the following uses:
8682@enumerate
8683@item distribute tasks to (many) local or remote CPUs
8684@item write and deploy hybrid multi-process applications
8685@item write scripts to administer multiple environments
8686@end enumerate")
8687 (home-page "http://codespeak.net/execnet/")
f210e944 8688 (license license:expat)))
16c84f90
CAW
8689
8690(define-public python2-execnet
f210e944 8691 (package-with-python2 python-execnet))
6720dbb4 8692
d5bbf806 8693(define-public python-trollius-redis
8694 (package
8695 (name "python-trollius-redis")
8696 (version "0.1.4")
8697 (source
8698 (origin
8699 (method url-fetch)
8700 (uri (pypi-uri "trollius_redis" version))
8701 (sha256
8702 (base32
8703 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
8704 (build-system python-build-system)
97b62eb0
MB
8705 ;; TODO: Tests require packaging 'hiredis'.
8706 (arguments '(#:tests? #f))
d5bbf806 8707 (home-page "https://github.com/benjolitz/trollius-redis")
8708 (synopsis "Port of asyncio-redis to trollius")
8709 (description "@code{trollius-redis} is a Redis client for Python
8710 trollius. It is an asynchronious IO (PEP 3156) implementation of the
8711 Redis protocol.")
8712 (license license:bsd-2)))
8713
8714(define-public python2-trollius-redis
8715 (package-with-python2 python-trollius-redis))
8716
6720dbb4
LF
8717;;; The software provided by this package was integrated into pytest 2.8.
8718(define-public python-pytest-cache
8719 (package
8720 (name "python-pytest-cache")
8721 (version "1.0")
8722 (source (origin
8723 (method url-fetch)
8724 (uri (pypi-uri "pytest-cache" version))
8725 (sha256
8726 (base32
8727 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8728 (build-system python-build-system)
f22efa01 8729 (propagated-inputs
630d938f
EF
8730 `(("python-apipkg" ,python-apipkg)
8731 ("python-execnet" ,python-execnet)
8732 ("python-py" ,python-py)
8733 ("python-pytest" ,python-pytest)))
6720dbb4
LF
8734 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8735 (description "The pytest-cache plugin provides tools to rerun failures from
8736the last py.test invocation.")
8737 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 8738 (license license:expat)))
0adc21c2
EF
8739
8740(define-public python2-pytest-cache
f210e944 8741 (package-with-python2 python-pytest-cache))
d7e729fe
LF
8742
8743(define-public python-pytest-localserver
8744 (package
8745 (name "python-pytest-localserver")
29f20168 8746 (version "0.3.5")
d7e729fe
LF
8747 (source (origin
8748 (method url-fetch)
29f20168 8749 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
8750 (sha256
8751 (base32
29f20168 8752 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
8753 (build-system python-build-system)
8754 (arguments
8755 `(#:phases (modify-phases %standard-phases
8756 (replace 'check
8757 (lambda _
8758 (zero? (system* "py.test" "--genscript=runtests.py"))
8759 (zero? (system* "py.test")))))))
8760 (native-inputs
d7e729fe
LF
8761 `(("python-pytest" ,python-pytest)
8762 ("python-requests" ,python-requests)
9ba40f05 8763 ("python-six" ,python-six)))
f22efa01 8764 (propagated-inputs
9ba40f05 8765 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
8766 (synopsis "Py.test plugin to test server connections locally")
8767 (description "Pytest-localserver is a plugin for the pytest testing
8768framework which enables you to test server connections locally.")
8769 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8770 (license license:expat)))
28cecbb7
LF
8771
8772(define-public python-wsgi-intercept
8773 (package
8774 (name "python-wsgi-intercept")
909fbd2b 8775 (version "1.2.2")
28cecbb7
LF
8776 (source (origin
8777 (method url-fetch)
909fbd2b
LF
8778 (uri (string-append
8779 "https://pypi.python.org/packages/"
8780 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8781 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
8782 (sha256
8783 (base32
909fbd2b 8784 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 8785 (build-system python-build-system)
b9fc496f
HG
8786 (propagated-inputs
8787 `(("python-six" ,python-six)))
28cecbb7 8788 (native-inputs
9d813ec1 8789 `(("python-pytest" ,python-pytest)
b9fc496f
HG
8790 ("python-httplib2" ,python-httplib2)
8791 ("python-requests" ,python-requests)
8757f050 8792 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
8793 (synopsis "Puts a WSGI application in place of a real URI for testing")
8794 (description "Wsgi_intercept installs a WSGI application in place of a real
8795URI for testing. Testing a WSGI application normally involves starting a
8796server at a local host and port, then pointing your test code to that address.
8797Instead, this library lets you intercept calls to any specific host/port
8798combination and redirect them into a WSGI application importable by your test
8799program. Thus, you can avoid spawning multiple processes or threads to test
8800your Web app.")
8801 (home-page "https://github.com/cdent/wsgi-intercept")
8802 (license license:expat)))
89b8a551
LF
8803
8804(define-public python-pytest-xprocess
8805 (package
8806 (name "python-pytest-xprocess")
8807 (version "0.9.1")
8808 (source (origin
8809 (method url-fetch)
8810 (uri (pypi-uri "pytest-xprocess" version))
8811 (sha256
8812 (base32
8813 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8814 (build-system python-build-system)
8815 (propagated-inputs
8816 `(("python-pytest" ,python-pytest)
8817 ("python-pytest-cache" ,python-pytest-cache)
8818 ("python-psutil" ,python-psutil)))
8819 (synopsis "Pytest plugin to manage external processes across test runs")
8820 (description "Pytest-xprocess is an experimental py.test plugin for managing
8821processes across test runs.")
8822 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8823 (license license:expat)))
5c299bf0
LF
8824
8825(define-public python-icalendar
8826 (package
8827 (name "python-icalendar")
b611d018 8828 (version "3.11.3")
5c299bf0
LF
8829 (source (origin
8830 (method url-fetch)
8831 (uri (pypi-uri "icalendar" version))
8832 (sha256
8833 (base32
b611d018 8834 "086jslw8cg2hni79j267p1dy6d27m7q5hi39ni2clh9waqbdf5v3"))))
5c299bf0
LF
8835 (build-system python-build-system)
8836 (propagated-inputs
22d7360b 8837 `(("python-dateutil" ,python-dateutil)
5c299bf0
LF
8838 ("python-pytz" ,python-pytz)))
8839 (synopsis "Python library for parsing iCalendar files")
8840 (description "The icalendar package is a parser/generator of iCalendar
8841files for use with Python.")
8842 (home-page "https://github.com/collective/icalendar")
3f641af0 8843 (license license:bsd-2)))
6bbbb53e
LF
8844
8845(define-public python-sphinxcontrib-newsfeed
8846 (package
8847 (name "python-sphinxcontrib-newsfeed")
8848 (version "0.1.4")
8849 (source (origin
8850 (method url-fetch)
8851 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8852 (sha256
8853 (base32
8854 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
3d2a544c 8855 (arguments '(#:tests? #f)) ; No tests.
6bbbb53e
LF
8856 (build-system python-build-system)
8857 (propagated-inputs
251ed7f2 8858 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
8859 (synopsis "News Feed extension for Sphinx")
8860 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8861Blog, News or Announcements section to a Sphinx website.")
8862 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8863 (license license:bsd-2)))
2216e15c
SB
8864
8865(define-public python-args
8866 (package
8867 (name "python-args")
8868 (version "0.1.0")
8869 (source (origin
8870 (method url-fetch)
8871 (uri (pypi-uri "args" version))
8872 (sha256
8873 (base32
8874 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8875 (build-system python-build-system)
2216e15c
SB
8876 (home-page "https://github.com/kennethreitz/args")
8877 (synopsis "Command-line argument parser")
8878 (description
8879 "This library provides a Python module to parse command-line arguments.")
3f641af0 8880 (license license:bsd-3)))
2216e15c
SB
8881
8882(define-public python2-args
8883 (package-with-python2 python-args))
c06a3de9
SB
8884
8885(define-public python-clint
8886 (package
8887 (name "python-clint")
8888 (version "0.5.1")
8889 (source (origin
8890 (method url-fetch)
8891 (uri (pypi-uri "clint" version))
8892 (sha256
8893 (base32
8894 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8895 (build-system python-build-system)
6145b604
MB
8896 (arguments
8897 '(#:phases
8898 (modify-phases %standard-phases
8899 (replace 'check
8900 (lambda _
8901 (zero? (system* "py.test" "-v")))))))
8902 (native-inputs
8903 `(("python-pytest" ,python-pytest)))
f22efa01 8904 (propagated-inputs
f3b98f4f 8905 `(("python-args" ,python-args)))
c06a3de9
SB
8906 (home-page "https://github.com/kennethreitz/clint")
8907 (synopsis "Command-line interface tools")
8908 (description
8909 "Clint is a Python module filled with a set of tools for developing
8910command-line applications, including tools for colored and indented
8911output, progress bar display, and pipes.")
3f641af0 8912 (license license:isc)))
c06a3de9
SB
8913
8914(define-public python2-clint
8915 (package-with-python2 python-clint))
4ecdeef8
SB
8916
8917(define-public python-astor
8918 (package
8919 (name "python-astor")
8920 (version "0.5")
8921 (source (origin
8922 (method url-fetch)
8923 (uri (pypi-uri "astor" version))
8924 (sha256
8925 (base32
8926 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8927 (build-system python-build-system)
4ecdeef8
SB
8928 (home-page "https://github.com/berkerpeksag/astor")
8929 (synopsis "Read and write Python ASTs")
8930 (description
8931 "Astor is designed to allow easy manipulation of Python source via the
8932Abstract Syntax Tree.")
3f641af0 8933 (license license:bsd-3)))
4ecdeef8
SB
8934
8935(define-public python2-astor
8936 (package-with-python2 python-astor))
e224b7d0
SB
8937
8938(define-public python-rply
8939 (package
8940 (name "python-rply")
8941 (version "0.7.4")
8942 (source (origin
8943 (method url-fetch)
8944 (uri (pypi-uri "rply" version))
8945 (sha256
8946 (base32
8947 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8948 (build-system python-build-system)
f22efa01 8949 (propagated-inputs
f3b98f4f 8950 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
8951 (home-page "https://github.com/alex/rply")
8952 (synopsis "Parser generator for Python")
8953 (description
8954 "This package provides a pure Python based parser generator, that also
8955works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8956with a new public API, and RPython support.")
3f641af0 8957 (license license:bsd-3)))
e224b7d0
SB
8958
8959(define-public python2-rply
8960 (package-with-python2 python-rply))
c3e919d7
SB
8961
8962(define-public python-hy
8963 (package
8964 (name "python-hy")
8965 (version "0.11.1")
8966 (source (origin
8967 (method url-fetch)
8968 (uri (pypi-uri "hy" version))
8969 (sha256
8970 (base32
8971 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8972 (build-system python-build-system)
15c37077
MB
8973 (arguments
8974 '(#:phases
8975 (modify-phases %standard-phases
8976 (replace 'check
8977 (lambda _
8978 ;; Tests require write access to HOME.
8979 (setenv "HOME" "/tmp")
8980 (zero? (system* "nosetests")))))))
8981 (native-inputs
8982 `(("python-coverage" ,python-coverage)
8983 ("python-nose" ,python-nose)))
f22efa01 8984 (propagated-inputs
c3e919d7
SB
8985 `(("python-astor" ,python-astor)
8986 ("python-clint" ,python-clint)
f3b98f4f 8987 ("python-rply" ,python-rply)))
c3e919d7
SB
8988 (home-page "http://hylang.org/")
8989 (synopsis "Lisp frontend to Python")
8990 (description
8991 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8992its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8993Python at your fingertips, in Lisp form.")
8994 (license license:expat)))
8995
8996(define-public python2-hy
8997 (package-with-python2 python-hy))
7a5b944e 8998
81f7f297
EF
8999(define-public python-rauth
9000 (package
9001 (name "python-rauth")
9002 (version "0.7.2")
9003 (source
9004 (origin
9005 (method url-fetch)
9006 (uri (pypi-uri "rauth" version))
9007 (sha256
9008 (base32
9009 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
9010 (build-system python-build-system)
9011 (arguments
9012 `(#:test-target "check"))
f22efa01 9013 (propagated-inputs
81f7f297
EF
9014 `(("python-requests" ,python-requests)))
9015 (home-page "https://github.com/litl/rauth")
9016 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
9017 (description
9018 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
9019provides service wrappers for convenient connection initialization and
9020authenticated session objects providing things like keep-alive.")
0848d8d3
EF
9021 (license license:expat)
9022 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
9023
9024(define-public python2-rauth
0848d8d3
EF
9025 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9026 (package
9027 (inherit base)
00e10c6e 9028 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 9029 ,@(package-native-inputs base))))))
81f7f297 9030
1abe448d
EF
9031(define-public python2-functools32
9032 (package
9033 (name "python2-functools32")
9034 (version "3.2.3-2")
9035 (source
9036 (origin
9037 (method url-fetch)
9038 (uri (pypi-uri "functools32" version))
9039 (sha256
9040 (base32
9041 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
9042 (build-system python-build-system)
9043 (arguments
9044 `(#:python ,python-2
9045 #:tests? #f)) ; no test target
1abe448d
EF
9046 (home-page "https://github.com/MiCHiLU/python-functools32")
9047 (synopsis
9048 "Backport of the functools module from Python 3.2.3")
9049 (description
9050 "This package is a backport of the @code{functools} module from Python
90513.2.3 for use with older versions of Python and PyPy.")
9052 (license license:expat)))
9053
550bd98b
MB
9054(define-public python2-subprocess32
9055 (package
9056 (name "python2-subprocess32")
9057 (version "3.2.7")
9058 (source (origin
9059 (method url-fetch)
9060 (uri (pypi-uri "subprocess32" version))
9061 (sha256
9062 (base32
9063 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
9064 (patches
9065 (search-patches "python2-subprocess32-disable-input-test.patch"))))
9066 (build-system python-build-system)
9067 (arguments
9068 `(#:python ,python-2
9069 #:phases
9070 (modify-phases %standard-phases
9071 (add-after 'unpack 'patch-/bin/sh
9072 (lambda _
9073 (substitute* '("subprocess32.py"
9074 "test_subprocess32.py")
9075 (("/bin/sh") (which "sh")))
9076 #t))
9077 (delete 'check)
9078 (add-after 'install 'check
9079 (lambda* (#:key inputs outputs #:allow-other-keys)
9080 ;; For some reason this package fails to import
9081 ;; _posixsubprocess.so when PYTHONPATH is set to the build
9082 ;; directory. Running tests after install is easier.
9083 (add-installed-pythonpath inputs outputs)
9084 (zero? (system* "python" "test_subprocess32.py")))))))
9085 (home-page "https://github.com/google/python-subprocess32")
9086 (synopsis "Backport of the subprocess module from Python 3.2")
9087 (description
9088 "This is a backport of the @code{subprocess} standard library module
9089from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
9090new features. On POSIX systems it is guaranteed to be reliable when used
9091in threaded applications. It includes timeout support from Python 3.3 but
9092otherwise matches 3.2’s API.")
9093 (license license:psfl)))
9094
877889f3 9095(define-public python2-futures
7a5b944e 9096 (package
877889f3 9097 (name "python2-futures")
7a5b944e
EF
9098 (version "3.0.3")
9099 (source
9100 (origin
9101 (method url-fetch)
9102 (uri (pypi-uri "futures" version))
9103 (sha256
9104 (base32
9105 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
9106 (build-system python-build-system)
877889f3 9107 (arguments `(#:python ,python-2))
7a5b944e
EF
9108 (home-page "https://github.com/agronholm/pythonfutures")
9109 (synopsis
9110 "Backport of the concurrent.futures package from Python 3.2")
9111 (description
9112 "The concurrent.futures module provides a high-level interface for
9113asynchronously executing callables. This package backports the
9114concurrent.futures package from Python 3.2")
3f641af0 9115 (license license:bsd-3)))
7a5b944e 9116
5cb2fe44
EF
9117(define-public python-promise
9118 (package
9119 (name "python-promise")
9120 (version "0.4.2")
9121 (source
9122 (origin
9123 (method url-fetch)
9124 (uri (pypi-uri "promise" version))
9125 (sha256
9126 (base32
9127 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
9128 (build-system python-build-system)
9129 ;; Tests wants python-futures, which is a python2 only program, and
9130 ;; can't be found by python-promise at test time.
9131 (arguments `(#:tests? #f))
9132 (home-page "https://github.com/syrusakbary/promise")
9133 (synopsis "Promises/A+ implementation for Python")
9134 (description
9135 "Promises/A+ implementation for Python")
9136 (properties `((python2-variant . ,(delay python2-promise))))
9137 (license license:expat)))
9138
9139(define-public python2-promise
9140 (let ((promise (package-with-python2
9141 (strip-python2-variant python-promise))))
9142 (package (inherit promise)
9143 (arguments (substitute-keyword-arguments (package-arguments promise)
9144 ((#:tests? _) #t)))
9145 (native-inputs
9146 `(("python2-futures" ,python2-futures)
9147 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
9148 ,@(package-native-inputs promise))))))
9149
c18f6368
EF
9150(define-public python-urllib3
9151 (package
9152 (name "python-urllib3")
6178274d 9153 (version "1.18.1")
c18f6368
EF
9154 (source
9155 (origin
9156 (method url-fetch)
9157 (uri (pypi-uri "urllib3" version))
9158 (sha256
9159 (base32
6178274d 9160 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
9161 (build-system python-build-system)
9162 (arguments `(#:tests? #f))
9163 (native-inputs
f3b98f4f 9164 `(;; some packages for tests
c18f6368
EF
9165 ("python-nose" ,python-nose)
9166 ("python-mock" ,python-mock)
9167 ("python-tornado" ,python-tornado)))
9168 (propagated-inputs
8322749a 9169 `(;; extra packages for https security
c18f6368
EF
9170 ("python-certifi" ,python-certifi)
9171 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9172 ("python-pyasn1" ,python-pyasn1)
9173 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 9174 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
9175 (synopsis "HTTP library with thread-safe connection pooling")
9176 (description
9177 "Urllib3 supports features left out of urllib and urllib2 libraries. It
9178can reuse the same socket connection for multiple requests, it can POST files,
9179supports url redirection and retries, and also gzip and deflate decoding.")
9180 (license license:expat)))
9181
9182(define-public python2-urllib3
9183 (package-with-python2 python-urllib3))
2b2f2fc1
DT
9184
9185(define-public python-colorama
9186 (package
9187 (name "python-colorama")
f92576f9 9188 (version "0.3.7")
2b2f2fc1
DT
9189 (source
9190 (origin
9191 (method url-fetch)
9192 (uri (pypi-uri "colorama" version))
9193 (sha256
9194 (base32
f92576f9 9195 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
2b2f2fc1 9196 (build-system python-build-system)
46e110cc 9197 (synopsis "Colored terminal text rendering for Python")
2b2f2fc1
DT
9198 (description "Colorama is a Python library for rendering colored terminal
9199text.")
9200 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 9201 (license license:bsd-3)))
2b2f2fc1
DT
9202
9203(define-public python2-colorama
9204 (package-with-python2 python-colorama))
f5bcec6e
DT
9205
9206(define-public python-rsa
9207 (package
9208 (name "python-rsa")
ecd68c53 9209 (version "3.4.2")
f5bcec6e
DT
9210 (source
9211 (origin
9212 (method url-fetch)
9213 (uri (pypi-uri "rsa" version))
9214 (sha256
9215 (base32
ecd68c53 9216 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 9217 (build-system python-build-system)
f22efa01 9218 (propagated-inputs
f3b98f4f 9219 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
9220 (synopsis "Pure-Python RSA implementation")
9221 (description "Python-RSA is a pure-Python RSA implementation. It supports
9222encryption and decryption, signing and verifying signatures, and key
9223generation according to PKCS#1 version 1.5. It can be used as a Python
9224library as well as on the command line.")
9225 (home-page "http://stuvel.eu/rsa")
3f641af0 9226 (license license:asl2.0)))
f5bcec6e
DT
9227
9228(define-public python2-rsa
9229 (package-with-python2 python-rsa))
c0aacfa5
DT
9230
9231(define-public python-pluggy
9232 (package
9233 (name "python-pluggy")
9234 (version "0.3.1")
9235 (source
9236 (origin
9237 (method url-fetch)
9238 (uri (pypi-uri "pluggy" version))
9239 (sha256
9240 (base32
9241 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
9242 (build-system python-build-system)
c0aacfa5
DT
9243 (synopsis "Plugin and hook calling mechanism for Python")
9244 (description "Pluggy is an extraction of the plugin manager as used by
9245Pytest but stripped of Pytest specific details.")
9246 (home-page "https://pypi.python.org/pypi/pluggy")
9247 (license license:expat)))
9248
9249(define-public python2-pluggy
9250 (package-with-python2 python-pluggy))
a4af21ca
DT
9251
9252(define-public python-tox
9253 (package
9254 (name "python-tox")
9255 (version "2.3.1")
9256 (source
9257 (origin
9258 (method url-fetch)
9259 (uri (pypi-uri "tox" version))
9260 (sha256
9261 (base32
9262 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
9263 (build-system python-build-system)
9264 (arguments
7ba07edf
HG
9265 ;; FIXME: Tests require pytest-timeout, which itself requires
9266 ;; pytest>=2.8.0 for installation.
a4af21ca 9267 '(#:tests? #f))
482d9591
HG
9268 (propagated-inputs
9269 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 9270 ("python-py" ,python-py)
482d9591 9271 ("python-virtualenv" ,python-virtualenv)))
328bb95d 9272 (native-inputs
7ba07edf
HG
9273 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
9274 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
9275 (home-page "http://tox.testrun.org/")
9276 (synopsis "Virtualenv-based automation of test activities")
9277 (description "Tox is a generic virtualenv management and test command line
9278tool. It can be used to check that a package installs correctly with
9279different Python versions and interpreters, or run tests in each type of
9280supported environment, or act as a frontend to continuous integration
9281servers.")
9282 (license license:expat)))
9283
9284(define-public python2-tox
9285 (package-with-python2 python-tox))
ba9da248
DT
9286
9287(define-public python-jmespath
9288 (package
9289 (name "python-jmespath")
9290 (version "0.9.0")
9291 (source
9292 (origin
9293 (method url-fetch)
9294 (uri (pypi-uri "jmespath" version))
9295 (sha256
9296 (base32
9297 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
9298 (build-system python-build-system)
52a75a83
MB
9299 (native-inputs
9300 `(("python-nose" ,python-nose)))
ba9da248
DT
9301 (synopsis "JSON Matching Expressions")
9302 (description "JMESPath (pronounced “james path”) is a Python library that
9303allows one to declaratively specify how to extract elements from a JSON
9304document.")
9305 (home-page "https://github.com/jmespath/jmespath.py")
9306 (license license:expat)))
9307
9308(define-public python2-jmespath
9309 (package-with-python2 python-jmespath))
935fcd5c
DT
9310
9311(define-public python-botocore
9312 (package
9313 (name "python-botocore")
0a7d96f8 9314 (version "1.5.10")
935fcd5c
DT
9315 (source
9316 (origin
9317 (method url-fetch)
9318 (uri (pypi-uri "botocore" version))
9319 (sha256
9320 (base32
0a7d96f8 9321 "1hqvqwhgfcch4knm1l02ynx7qd1igxk3pj34c1x2b0r79jca524n"))))
935fcd5c 9322 (build-system python-build-system)
877fdac9
MB
9323 (arguments
9324 ;; FIXME: Many tests are failing.
9325 '(#:tests? #f))
482d9591 9326 (propagated-inputs
22d7360b 9327 `(("python-dateutil" ,python-dateutil)
935fcd5c 9328 ("python-docutils" ,python-docutils)
482d9591 9329 ("python-jmespath" ,python-jmespath)))
8fa6890b 9330 (native-inputs
482d9591 9331 `(("python-mock" ,python-mock)
935fcd5c 9332 ("python-nose" ,python-nose)
482d9591 9333 ("behave" ,behave)
935fcd5c 9334 ("python-tox" ,python-tox)
482d9591 9335 ("python-wheel" ,python-wheel)))
935fcd5c
DT
9336 (home-page "https://github.com/boto/botocore")
9337 (synopsis "Low-level interface to AWS")
9338 (description "Botocore is a Python library that provides a low-level
9339interface to the Amazon Web Services (AWS) API.")
3f641af0 9340 (license license:asl2.0)))
935fcd5c
DT
9341
9342(define-public python2-botocore
9343 (package-with-python2 python-botocore))
f861b8b8
DT
9344
9345(define-public awscli
9346 (package
9347 (name "awscli")
a9c15e8b 9348 (version "1.11.47")
f861b8b8
DT
9349 (source
9350 (origin
9351 (method url-fetch)
d5ccf71e 9352 (uri (pypi-uri name version))
f861b8b8
DT
9353 (sha256
9354 (base32
a9c15e8b 9355 "0p0pila0k99fm87q1gb24wyd34ags0vkh37h1fa6hklq4mi69i1w"))))
f861b8b8 9356 (build-system python-build-system)
482d9591 9357 (propagated-inputs
f861b8b8 9358 `(("python-colorama" ,python-colorama)
482d9591
HG
9359 ("python-botocore" ,python-botocore)
9360 ("python-s3transfer" ,python-s3transfer)
f861b8b8 9361 ("python-docutils" ,python-docutils)
482d9591 9362 ("python-rsa" ,python-rsa)))
619bfd81
MB
9363 (arguments
9364 ;; FIXME: The 'pypi' release does not contain tests.
9365 '(#:tests? #f))
60a8be3a 9366 (home-page "https://aws.amazon.com/cli/")
f861b8b8
DT
9367 (synopsis "Command line client for AWS")
9368 (description "AWS CLI provides a unified command line interface to the
9369Amazon Web Services (AWS) API.")
3f641af0 9370 (license license:asl2.0)))
6a44697d
LF
9371
9372(define-public python-hypothesis
9373 (package
9374 (name "python-hypothesis")
bea6d94d 9375 (version "3.1.0")
6a44697d
LF
9376 (source (origin
9377 (method url-fetch)
9378 (uri (pypi-uri "hypothesis" version))
9379 (sha256
9380 (base32
bea6d94d 9381 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 9382 (build-system python-build-system)
bd100c71 9383 (native-inputs
6a44697d
LF
9384 `(("python-flake8" ,python-flake8)
9385 ("python-pytest" ,python-pytest)))
9386 (synopsis "Library for property based testing")
9387 (description "Hypothesis is a library for testing your Python code against a
9388much larger range of examples than you would ever want to write by hand. It’s
9389based on the Haskell library, Quickcheck, and is designed to integrate
9390seamlessly into your existing Python unit testing work flow.")
9391 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 9392 (license license:mpl2.0)
6f068e08 9393 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
9394
9395(define-public python2-hypothesis
6f068e08
EF
9396 (let ((hypothesis (package-with-python2
9397 (strip-python2-variant python-hypothesis))))
9398 (package (inherit hypothesis)
9399 (native-inputs
bd100c71
MB
9400 `(("python2-enum34" ,python2-enum34)
9401 ,@(package-native-inputs hypothesis))))))
7517e73c
LF
9402
9403(define-public python-pytest-subtesthack
9404 (package
9405 (name "python-pytest-subtesthack")
9406 (version "0.1.1")
9407 (source (origin
9408 (method url-fetch)
9409 (uri (pypi-uri "pytest-subtesthack" version))
9410 (sha256
9411 (base32
9412 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
9413 (build-system python-build-system)
7517e73c
LF
9414 (propagated-inputs
9415 `(("python-pytest" ,python-pytest)))
9416 (synopsis "Set-up and tear-down fixtures for unit tests")
9417 (description "This plugin allows you to set up and tear down fixtures within
9418unit test functions that use @code{py.test}. This is useful for using
9419@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
9420function multiple times, without setting up or tearing down fixture state as is
9421normally the case.")
9422 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 9423 (license license:unlicense)))
7517e73c
LF
9424
9425(define-public python2-pytest-subtesthack
9426 (package-with-python2 python-pytest-subtesthack))
0bdc1671 9427
7637de23 9428(define-public python-xdo
0bdc1671 9429 (package
7637de23 9430 (name "python-xdo")
e871c332 9431 (version "0.3")
0bdc1671
CAW
9432 (source (origin
9433 (method url-fetch)
9434 (uri (string-append
9435 "http://http.debian.net/debian/pool/main/p/python-xdo/"
9436 "python-xdo_" version ".orig.tar.gz"))
9437 (sha256
9438 (base32
e871c332 9439 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
0bdc1671
CAW
9440 (build-system python-build-system)
9441 (arguments
736cfc10
SB
9442 '(#:phases
9443 (modify-phases %standard-phases
9444 (add-before 'install 'patch-libxdo-path
9445 ;; Hardcode the path of dynamically loaded libxdo library.
9446 (lambda* (#:key inputs #:allow-other-keys)
9447 (let ((libxdo (string-append
9448 (assoc-ref inputs "xdotool")
9449 "/lib/libxdo.so")))
9450 (substitute* "xdo/_xdo.py"
9451 (("find_library\\(\"xdo\"\\)")
9452 (simple-format #f "\"~a\"" libxdo)))
9453 #t))))
9454 #:tests? #f)) ; no tests provided
0b5e0863
SB
9455 (propagated-inputs
9456 `(("python-six" ,python-six)))
0bdc1671
CAW
9457 (inputs
9458 `(("xdotool" ,xdotool)
9459 ("libX11" ,libx11)))
9460 (home-page "https://tracker.debian.org/pkg/python-xdo")
9461 (synopsis "Python library for simulating X11 keyboard/mouse input")
9462 (description "Provides bindings to libxdo for manipulating X11 via simulated
9463input. (Note that this is mostly a legacy library; you may wish to look at
9464python-xdo for newer bindings.)")
3f641af0 9465 (license license:bsd-3)))
0bdc1671 9466
7637de23
LF
9467(define-public python2-xdo
9468 (package-with-python2 python-xdo))
9469
cb34dc6c
CAW
9470(define-public python-wtforms
9471 (package
9472 (name "python-wtforms")
9473 (version "2.1")
9474 (source
9475 (origin
9476 (method url-fetch)
9477 (uri (pypi-uri "WTForms" version ".zip"))
9478 (sha256
9479 (base32
9480 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
9481 (build-system python-build-system)
13c4d874
EF
9482 (arguments
9483 '(#:phases
9484 (modify-phases %standard-phases
9485 (add-after 'unpack 'remove-django-test
9486 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
9487 (lambda _
9488 (substitute*
9489 "tests/runtests.py"
9490 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
9491 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
9492 #t)))))
cb34dc6c
CAW
9493 (native-inputs
9494 `(("unzip" ,unzip)))
9495 (home-page "http://wtforms.simplecodes.com/")
9496 (synopsis
9497 "Form validation and rendering library for Python web development")
9498 (description
9499 "WTForms is a flexible forms validation and rendering library
9500for Python web development. It is very similar to the web form API
9501available in Django, but is a standalone package.")
f210e944 9502 (license license:bsd-3)))
cb34dc6c
CAW
9503
9504(define-public python2-wtforms
f210e944 9505 (package-with-python2 python-wtforms))
50aaec25
DT
9506
9507(define-public python-mako
9508 (package
9509 (name "python-mako")
3753f2e6 9510 (version "1.0.6")
50aaec25
DT
9511 (source
9512 (origin
9513 (method url-fetch)
9514 (uri (pypi-uri "Mako" version))
9515 (sha256
9516 (base32
3753f2e6 9517 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
50aaec25 9518 (build-system python-build-system)
482d9591
HG
9519 (propagated-inputs
9520 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 9521 (native-inputs
482d9591 9522 `(("python-mock" ,python-mock)
e435af5c
MB
9523 ("python-nose" ,python-nose)
9524 ("python-pytest" ,python-pytest)))
50aaec25
DT
9525 (home-page "http://www.makotemplates.org/")
9526 (synopsis "Templating language for Python")
9527 (description "Mako is a templating language for Python that compiles
9528templates into Python modules.")
f210e944 9529 (license license:expat)))
50aaec25
DT
9530
9531(define-public python2-mako
f210e944 9532 (package-with-python2 python-mako))
ae00a41f
CAW
9533
9534(define-public python-waitress
9535 (package
9536 (name "python-waitress")
9537 (version "0.8.10")
9538 (source
9539 (origin
9540 (method url-fetch)
9541 (uri (pypi-uri "waitress" version))
9542 (sha256
9543 (base32
9544 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
9545 (build-system python-build-system)
9546 (home-page "https://github.com/Pylons/waitress")
9547 (synopsis "Waitress WSGI server")
9548 (description "Waitress is meant to be a production-quality pure-Python WSGI
9549server with very acceptable performance.")
f210e944 9550 (license license:zpl2.1)))
ae00a41f
CAW
9551
9552(define-public python2-waitress
f210e944 9553 (package-with-python2 python-waitress))
778a284b
CAW
9554
9555(define-public python-wsgiproxy2
9556 (package
9557 (name "python-wsgiproxy2")
9558 (version "0.4.2")
9559 (source
9560 (origin
9561 (method url-fetch)
9562 (uri (pypi-uri "WSGIProxy2" version ".zip"))
9563 (sha256
9564 (base32
9565 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
9566 (build-system python-build-system)
e359b31a
LF
9567 (arguments
9568 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
9569 ;; support Python 3:
9570 ;; https://github.com/benoitc/restkit/issues/140
9571 #:tests? #f))
778a284b
CAW
9572 (native-inputs
9573 `(("unzip" ,unzip)
9574 ("python-nose" ,python-nose)
9575 ("python-coverage" ,python-coverage)))
9576 (propagated-inputs
9577 `(("python-six" ,python-six)
9578 ("python-webob" ,python-webob)))
9579 (home-page
9580 "https://github.com/gawel/WSGIProxy2/")
9581 (synopsis "WSGI Proxy with various http client backends")
9582 (description "WSGI turns HTTP requests into WSGI function calls.
9583WSGIProxy turns WSGI function calls into HTTP requests.
9584It also includes code to sign requests and pass private data,
9585and to spawn subprocesses to handle requests.")
f210e944 9586 (license license:expat)))
778a284b
CAW
9587
9588(define-public python2-wsgiproxy2
f210e944 9589 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
9590
9591(define-public python-pastedeploy
9592 (package
9593 (name "python-pastedeploy")
9594 (version "1.5.2")
9595 (source
9596 (origin
9597 (method url-fetch)
9598 (uri (pypi-uri "PasteDeploy" version))
9599 (sha256
9600 (base32
9601 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
9602 (build-system python-build-system)
9603 (native-inputs
9604 `(("python-nose" ,python-nose)))
bb7518b1
CAW
9605 (home-page "http://pythonpaste.org/deploy/")
9606 (synopsis
9607 "Load, configure, and compose WSGI applications and servers")
9608 (description
9609 "This tool provides code to load WSGI applications and servers from URIs;
9610these URIs can refer to Python Eggs for INI-style configuration files. Paste
9611Script provides commands to serve applications based on this configuration
9612file.")
9613 (license license:expat)))
9614
9615(define-public python2-pastedeploy
9616 (package-with-python2 python-pastedeploy))
1cf53652 9617
c4a7904c
CAW
9618(define-public python-paste
9619 (package
9620 (name "python-paste")
ba1731da 9621 (version "2.0.3")
c4a7904c
CAW
9622 (source
9623 (origin
9624 (method url-fetch)
9625 (uri (pypi-uri "Paste" version))
9626 (sha256
9627 (base32
ba1731da 9628 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
fc1adab1
AK
9629 (patches (search-patches "python-paste-remove-website-test.patch"
9630 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
9631 (build-system python-build-system)
9632 (native-inputs
9633 `(("python-nose" ,python-nose)))
9634 (propagated-inputs
f3b98f4f 9635 `(("python-six" ,python-six)))
c4a7904c
CAW
9636 (home-page "http://pythonpaste.org")
9637 (synopsis
9638 "Python web development tools, focusing on WSGI")
9639 (description
9640 "Paste provides a variety of web development tools and middleware which
9641can be nested together to build web applications. Paste's design closely
9642follows ideas flowing from WSGI (Web Standard Gateway Interface).")
ba1731da 9643 (license license:expat)))
c4a7904c
CAW
9644
9645(define-public python2-paste
ba1731da 9646 (package-with-python2 python-paste))
c4a7904c 9647
a8f20f63
CAW
9648(define-public python-pastescript
9649 (package
9650 (name "python-pastescript")
9651 (version "2.0.2")
9652 (source
9653 (origin
9654 (method url-fetch)
9655 (uri (pypi-uri "PasteScript" version))
9656 (sha256
9657 (base32
9658 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
9659 (build-system python-build-system)
9660 (native-inputs
9661 `(("python-nose" ,python-nose)))
9662 (propagated-inputs
f3b98f4f 9663 `(("python-paste" ,python-paste)
a8f20f63
CAW
9664 ("python-pastedeploy" ,python-pastedeploy)))
9665 (home-page "http://pythonpaste.org/script/")
9666 (arguments
9667 '(;; Unfortunately, this requires the latest unittest2,
9668 ;; but that requires traceback2 which requires linecache2 which requires
9669 ;; unittest2. So we're skipping tests for now.
9670 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
9671 ;; so in theory we could get around this situation somehow.)
9672 #:tests? #f))
9673 (synopsis
9674 "Pluggable command line tool for serving web applications and more")
9675 (description
9676 "PasteScript is a plugin-friendly command line tool which provides a
9677variety of features, from launching web applications to bootstrapping project
9678layouts.")
9679 (license license:expat)))
9680
9681(define-public python2-pastescript
9682 (package-with-python2 python-pastescript))
9683
1cf53652
CAW
9684(define-public python-pyquery
9685 (package
9686 (name "python-pyquery")
ab0c3429 9687 (version "1.2.17")
1cf53652
CAW
9688 (source
9689 (origin
9690 (method url-fetch)
9691 (uri (pypi-uri "pyquery" version))
9692 (sha256
9693 (base32
ab0c3429 9694 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
1cf53652 9695 (build-system python-build-system)
2ddbfa8c
LF
9696 (native-inputs
9697 `(("python-webob" ,python-webob)
9698 ("python-webtest" ,python-webtest)))
1cf53652
CAW
9699 (propagated-inputs
9700 `(("python-lxml" ,python-lxml)
9701 ("python-cssselect" ,python-cssselect)))
9702 (home-page "https://github.com/gawel/pyquery")
9703 (synopsis "Make jQuery-like queries on xml documents")
9704 (description "pyquery allows you to make jQuery queries on xml documents.
9705The API is as much as possible the similar to jQuery. pyquery uses lxml for
9706fast xml and html manipulation.")
f210e944 9707 (license license:bsd-3)))
1cf53652
CAW
9708
9709(define-public python2-pyquery
f210e944 9710 (package-with-python2 python-pyquery))
aa6313d6
CAW
9711
9712(define-public python-webtest
9713 (package
9714 (name "python-webtest")
9715 (version "2.0.20")
9716 (source
9717 (origin
9718 (method url-fetch)
9719 (uri (pypi-uri "WebTest" version))
9720 (sha256
9721 (base32
9722 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
9723 (build-system python-build-system)
9724 (arguments
9725 `(;; Unfortunately we have to disable tests!
9726 ;; This release of WebTest is pinned to python-nose < 1.3,
9727 ;; but older versions of python-nose are plagued with the following
9728 ;; bug(s), which rears its ugly head during test execution:
9729 ;; https://github.com/nose-devs/nose/issues/759
9730 ;; https://github.com/nose-devs/nose/pull/811
9731 #:tests? #f))
9732 ;; Commented out code is no good, but in this case, once tests
9733 ;; are ready to be enabled again, we should put the following
9734 ;; in place:
9735 ;; (native-inputs
9736 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9737 ;; ; but see above comment
9738 ;; ("python-coverage" ,python-coverage)
9739 ;; ("python-mock" ,python-mock)
9740 ;; ("python-pastedeploy" ,python-pastedeploy)
9741 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9742 ;; ("python-pyquery" ,python-pyquery)))
9743 (propagated-inputs
9744 `(("python-waitress" ,python-waitress)
9745 ("python-webob" ,python-webob)
9746 ("python-six" ,python-six)
9747 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9748 (home-page "http://webtest.pythonpaste.org/")
9749 (synopsis "Helper to test WSGI applications")
9750 (description "Webtest allows you to test your Python web applications
9751without starting an HTTP server. It supports anything that supports the
9752minimum of WSGI.")
f210e944 9753 (license license:expat)))
aa6313d6
CAW
9754
9755(define-public python2-webtest
f210e944 9756 (package-with-python2 python-webtest))
4cb122cd
CAW
9757
9758(define-public python-anyjson
9759 (package
9760 (name "python-anyjson")
9761 (version "0.3.3")
9762 (source
9763 (origin
9764 (method url-fetch)
9765 (uri (pypi-uri "anyjson" version))
9766 (sha256
9767 (base32
9768 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9769 (build-system python-build-system)
9770 (arguments
9771 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9772 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9773 ;; whatever) so this transformation needs to be done before the tests
9774 ;; can be run. Maybe we could add a build step to transform beforehand
9775 ;; but it could be annoying/difficult.
9776 ;; We can enable tests for the Python 2 version, though, and do below.
9777 #:tests? #f))
9778 (home-page "http://bitbucket.org/runeh/anyjson/")
9779 (synopsis
9780 "Wraps best available JSON implementation in a common interface")
9781 (description
9782 "Anyjson loads whichever is the fastest JSON module installed
9783and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 9784 (license license:bsd-3)
4cb122cd
CAW
9785 (properties `((python2-variant . ,(delay python2-anyjson))))))
9786
9787(define-public python2-anyjson
9788 (let ((anyjson (package-with-python2
9789 (strip-python2-variant python-anyjson))))
9790 (package
9791 (inherit anyjson)
9792 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9793 #:tests? #t
9794 ,@(package-arguments anyjson)))
00e10c6e 9795 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
9796
9797(define-public python-amqp
9798 (package
9799 (name "python-amqp")
9800 (version "1.4.9")
9801 (source
9802 (origin
9803 (method url-fetch)
9804 (uri (pypi-uri "amqp" version))
9805 (sha256
9806 (base32
9807 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9808 (build-system python-build-system)
9809 (native-inputs
9810 `(("python-nose" ,python-nose)
9811 ("python-mock" ,python-mock)))
9812 (home-page "http://github.com/celery/py-amqp")
9813 (synopsis
9814 "Low-level AMQP client for Python (fork of amqplib)")
9815 (description
9816 "This is a fork of amqplib which was originally written by Barry Pederson.
9817It is maintained by the Celery project, and used by kombu as a pure python
9818alternative when librabbitmq is not available.")
3f641af0 9819 (license license:lgpl2.1+)
8dfceab7
CAW
9820 (properties `((python2-variant . ,(delay python2-amqp))))))
9821
9822(define-public python2-amqp
9823 (let ((amqp (package-with-python2
9824 (strip-python2-variant python-amqp))))
9825 (package
9826 (inherit amqp)
9827 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9828 ;; unmaintained. Weirdly, does not do this on the python 3
9829 ;; version?
9830 #:tests? #f
00e10c6e 9831 ,@(package-arguments amqp))))))
7d387305
CAW
9832
9833(define-public python-kombu
9834 (package
9835 (name "python-kombu")
0cb59822 9836 (version "3.0.37")
7d387305
CAW
9837 (source
9838 (origin
9839 (method url-fetch)
9840 (uri (pypi-uri "kombu" version))
9841 (sha256
9842 (base32
0cb59822 9843 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
9844 (build-system python-build-system)
9845 (native-inputs
9846 `(("python-mock" ,python-mock)
9847 ("python-nose" ,python-nose)))
9848 (propagated-inputs
9849 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
9850 ("python-amqp" ,python-amqp)
9851 ("python-redis" ,python-redis)))
7d387305
CAW
9852 (home-page "http://kombu.readthedocs.org")
9853 (synopsis "Message passing library for Python")
9854 (description "The aim of Kombu is to make messaging in Python as easy as
9855possible by providing an idiomatic high-level interface for the AMQ protocol,
9856and also provide proven and tested solutions to common messaging problems.
9857AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9858message orientation, queuing, routing, reliability and security, for which the
9859RabbitMQ messaging server is the most popular implementation.")
3f641af0 9860 (license license:bsd-3)
7d387305
CAW
9861 (properties `((python2-variant . ,(delay python2-kombu))))))
9862
9863(define-public python2-kombu
9864 (let ((kombu (package-with-python2
9865 (strip-python2-variant python-kombu))))
9866 (package
9867 (inherit kombu)
752eb9e0
MB
9868 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
9869 ;; It works fine on the python3 variant.
9870 #:tests? #f
9871 ,@(package-arguments kombu)))
328bb95d
HG
9872 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9873 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
9874
9875(define-public python-billiard
9876 (package
9877 (name "python-billiard")
a6bb9e44 9878 (version "3.3.0.23")
b6f0b9fb
CAW
9879 (source
9880 (origin
9881 (method url-fetch)
9882 (uri (pypi-uri "billiard" version))
9883 (sha256
9884 (base32
a6bb9e44 9885 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
9886 (build-system python-build-system)
9887 (native-inputs
9888 `(("python-nose" ,python-nose)))
9889 (home-page "http://github.com/celery/billiard")
9890 (synopsis
9891 "Python multiprocessing fork with improvements and bugfixes")
9892 (description
9893 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9894multiprocessing package itself is a renamed and updated version of R Oudkerk's
9895pyprocessing package. This standalone variant is intended to be compatible with
9896Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9897 (license license:bsd-3)
b6f0b9fb
CAW
9898 (properties `((python2-variant . ,(delay python2-billiard))))))
9899
9900(define-public python2-billiard
9901 (let ((billiard (package-with-python2
9902 (strip-python2-variant python-billiard))))
9903 (package
9904 (inherit billiard)
00e10c6e 9905 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
9906 ("python2-mock" ,python2-mock)
9907 ,@(package-native-inputs billiard))))))
22df6419
CAW
9908
9909(define-public python-celery
9910 (package
9911 (name "python-celery")
9ebe87fe 9912 (version "3.1.24")
22df6419
CAW
9913 (source
9914 (origin
9915 (method url-fetch)
9916 (uri (pypi-uri "celery" version))
9917 (sha256
9918 (base32
9ebe87fe 9919 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 9920 (build-system python-build-system)
9ebe87fe
LF
9921 (arguments
9922 `(#:phases
9923 (modify-phases %standard-phases
9924 ;; These tests break with Python 3.5:
9925 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9926 (replace 'check
9927 (lambda _
9928 (zero?
9929 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
9930 (native-inputs
9931 `(("python-nose" ,python-nose)))
f22efa01 9932 (propagated-inputs
22df6419
CAW
9933 `(("python-pytz" ,python-pytz)
9934 ("python-billiard" ,python-billiard)
9935 ("python-kombu" ,python-kombu)))
9936 (home-page "http://celeryproject.org")
9937 (synopsis "Distributed Task Queue")
9938 (description "Celery is an asynchronous task queue/job queue based on
9939distributed message passing. It is focused on real-time operation, but
9940supports scheduling as well. The execution units, called tasks, are executed
9941concurrently on a single or more worker servers using multiprocessing,
9942Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9943synchronously (wait until ready).")
3f641af0 9944 (license license:bsd-3)
22df6419
CAW
9945 (properties `((python2-variant . ,(delay python2-celery))))))
9946
9947(define-public python2-celery
9948 (let ((celery (package-with-python2
9949 (strip-python2-variant python-celery))))
9950 (package
9951 (inherit celery)
00e10c6e 9952 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
9953 ("python2-mock" ,python2-mock)
9954 ,@(package-native-inputs celery))))))
97e32948
CAW
9955
9956(define-public python-translitcodec
9957 (package
9958 (name "python-translitcodec")
9959 (version "0.4.0")
9960 (source
9961 (origin
9962 (method url-fetch)
9963 (uri (pypi-uri "translitcodec" version))
9964 (sha256
9965 (base32
9966 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9967 (build-system python-build-system)
9968 (arguments
9969 `(#:tests? #f)) ; no tests provided
9970 (home-page
9971 "https://github.com/claudep/translitcodec")
9972 (synopsis
9973 "Unicode to 8-bit charset transliteration codec")
9974 (description
9975 "This package contains codecs for transliterating ISO 10646 texts into
9976best-effort representations using smaller coded character sets (ASCII,
9977ISO 8859, etc.).")
f210e944 9978 (license license:expat)))
97e32948
CAW
9979
9980(define-public python2-translitcodec
f210e944 9981 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
9982
9983(define-public python-editor
9984 (package
9985 (name "python-editor")
9986 (version "0.5")
9987 (source
9988 (origin
9989 (method url-fetch)
9990 (uri (pypi-uri "python-editor" version))
9991 (sha256
9992 (base32
9993 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9994 (build-system python-build-system)
9995 (home-page
9996 "https://github.com/fmoo/python-editor")
9997 (synopsis
9998 "Programmatically open an editor, capture the result")
9999 (description
10000 "python-editor is a library that provides the editor module for
10001programmatically interfacing with your system's $EDITOR.")
f210e944 10002 (license license:asl2.0)))
0c3b90d4
CAW
10003
10004(define-public python2-editor
f210e944 10005 (package-with-python2 python-editor))
3276517c
LF
10006
10007(define-public python-sphinxcontrib-programoutput
10008 (package
10009 (name "python-sphinxcontrib-programoutput")
10010 (version "0.8")
10011 (source (origin
10012 (method url-fetch)
10013 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10014 (sha256
10015 (base32
10016 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
10017 (build-system python-build-system)
e2cb140e
MB
10018 (arguments
10019 ;; FIXME: Many tests are failing and the upstream is gone.
10020 '(#:tests? #f))
3276517c 10021 (propagated-inputs
a0a09859 10022 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
10023 (synopsis "Sphinx extension to include program output")
10024 (description "A Sphinx extension to literally insert the output of arbitrary
10025commands into documents, helping you to keep your command examples up to date.")
10026 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 10027 (license license:bsd-2)))
3276517c
LF
10028
10029(define-public python2-sphinxcontrib-programoutput
f210e944 10030 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
10031
10032(define-public python-sphinx-repoze-autointerface
10033 (package
10034 (name "python-sphinx-repoze-autointerface")
328ae341 10035 (version "0.8")
548d7165
LF
10036 (source (origin
10037 (method url-fetch)
10038 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10039 (sha256
10040 (base32
328ae341 10041 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165 10042 (build-system python-build-system)
5b3c3d4b 10043 (arguments '(#:tests? #f)) ; No tests.
548d7165 10044 (propagated-inputs
47c7dc4a 10045 `(("python-sphinx" ,python-sphinx)
548d7165
LF
10046 ("python-zope-interface" ,python-zope-interface)))
10047 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
10048 (description "This package defines an extension for the Sphinx documentation
10049system. The extension allows generation of API documentation by
10050introspection of @code{zope.interface} instances in code.")
10051 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 10052 (license license:repoze)))
548d7165
LF
10053
10054(define-public python2-sphinx-repoze-autointerface
10055 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
10056
10057(define-public python-psycopg2
10058 (package
10059 (name "python-psycopg2")
10060 (version "2.6.1")
10061 (source
10062 (origin
10063 (method url-fetch)
10064 (uri (pypi-uri "psycopg2" version))
10065 (sha256
10066 (base32
10067 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
10068 (build-system python-build-system)
10069 (arguments
10070 ;; Tests would require a postgresql database "psycopg2_test"
10071 ;; and a running postgresql database management service.
10072 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
10073 (inputs
10074 `(("postgresql" ,postgresql))) ; libpq
10075 (home-page "http://initd.org/psycopg/")
10076 (synopsis "Python PostgreSQL adapter")
10077 (description
10078 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 10079 (license license:lgpl3+)))
b31fbea5
DM
10080
10081(define-public python2-psycopg2
f210e944 10082 (package-with-python2 python-psycopg2))
eed1a61f
LF
10083
10084(define-public python-vobject
10085 (package
10086 (name "python-vobject")
9bed9b15 10087 (version "0.9.2")
eed1a61f
LF
10088 (source (origin
10089 (method url-fetch)
10090 (uri (pypi-uri "vobject" version))
10091 (sha256
10092 (base32
9bed9b15 10093 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f 10094 (build-system python-build-system)
a9871b7b
LF
10095 (arguments
10096 '(;; The test suite relies on some non-portable Windows interfaces.
10097 #:tests? #f))
f22efa01 10098 (propagated-inputs
22d7360b 10099 `(("python-dateutil" ,python-dateutil)
eed1a61f
LF
10100 ("python-pyicu" ,python-pyicu)))
10101 (synopsis "Parse and generate vCard and vCalendar files")
10102 (description "Vobject is intended to be a full featured Python package for
10103parsing and generating vCard and vCalendar files. Currently, iCalendar files
10104are supported and well tested. vCard 3.0 files are supported, and all data
10105should be imported, but only a few components are understood in a sophisticated
10106way.")
10107 (home-page "http://eventable.github.io/vobject/")
f210e944 10108 (license license:asl2.0)))
eed1a61f
LF
10109
10110(define-public python2-vobject
f210e944 10111 (package-with-python2 python-vobject))
cedac813
LF
10112
10113(define-public python-munkres
10114 (package
10115 (name "python-munkres")
38e81a2c 10116 (version "1.0.8")
cedac813
LF
10117 (source (origin
10118 (method url-fetch)
10119 (uri (pypi-uri "munkres" version))
10120 (sha256
10121 (base32
38e81a2c 10122 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
10123 (build-system python-build-system)
10124 (arguments
10125 '(#:tests? #f)) ; no test suite
10126 (home-page "http://software.clapper.org/munkres/")
10127 (synopsis "Implementation of the Munkres algorithm")
10128 (description "The Munkres module provides an implementation of the Munkres
10129algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
10130useful for solving the Assignment Problem.")
3f641af0 10131 (license license:bsd-3)))
cedac813
LF
10132
10133(define-public python2-munkres
10134 (package-with-python2 python-munkres))
f3b3d78f
LF
10135
10136(define-public python-flask
10137 (package
10138 (name "python-flask")
c6c80104 10139 (version "0.11.1")
f3b3d78f
LF
10140 (source (origin
10141 (method url-fetch)
10142 (uri (pypi-uri "Flask" version))
10143 (sha256
10144 (base32
c6c80104 10145 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
10146 (build-system python-build-system)
10147 (propagated-inputs
10148 `(("python-itsdangerous" ,python-itsdangerous)
10149 ("python-jinja2" ,python-jinja2)
8f35c030 10150 ("python-click" ,python-click)
f3b3d78f
LF
10151 ("python-werkzeug" ,python-werkzeug)))
10152 (home-page "https://github.com/mitsuhiko/flask/")
10153 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
10154 (description "Flask is a micro web framework based on the Werkzeug toolkit
10155and Jinja2 template engine. It is called a micro framework because it does not
10156presume or force a developer to use a particular tool or library.")
f210e944 10157 (license license:bsd-3)))
f3b3d78f
LF
10158
10159(define-public python2-flask
f210e944 10160 (package-with-python2 python-flask))
603d665b 10161
a7ad802b 10162(define-public python-flask-wtf
10163 (package
10164 (name "python-flask-wtf")
10165 (version "0.13.1")
10166 (source
10167 (origin
10168 (method url-fetch)
10169 (uri (pypi-uri "Flask-WTF" version))
10170 (sha256
10171 (base32
10172 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
10173 (build-system python-build-system)
d296d300
MB
10174 (arguments
10175 '(#:phases
10176 (modify-phases %standard-phases
10177 (add-before 'check 'drop-failing-test
10178 (lambda _
10179 ;; FIXME: This file tries resolving an external server, which
10180 ;; fails. Try to patch out the offending section instead of
10181 ;; deleting the whole thing.
10182 (delete-file "tests/test_recaptcha.py")
10183 #t)))))
a7ad802b 10184 (propagated-inputs
10185 `(("python-flask-babel" ,python-flask-babel)
10186 ("python-babel" ,python-babel)
10187 ("python-wtforms" ,python-wtforms)))
10188 (native-inputs
10189 `(("python-nose" ,python-nose)))
10190 (home-page "https://github.com/lepture/flask-wtf")
10191 (synopsis "Simple integration of Flask and WTForms")
10192 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
10193upload, and reCAPTCHA.")
10194 (license license:bsd-3)))
10195
10196(define-public python2-flask-wtf
10197 (package-with-python2 python-flask-wtf))
10198
a2c7d88e 10199(define-public python-flask-multistatic
10200 (package
10201 (name "python-flask-multistatic")
10202 (version "1.0")
10203 (source
10204 (origin
10205 (method url-fetch)
10206 (uri (pypi-uri "flask-multistatic" version))
10207 (sha256
10208 (base32
10209 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
10210 (build-system python-build-system)
10211 (propagated-inputs
10212 `(("python-flask" ,python-flask)))
10213 (home-page "https://pagure.io/flask-multistatic")
10214 (synopsis "Flask plugin to allow overriding static files")
10215 (description "@code{flask-multistatic} is a flask plugin that adds support
10216for overriding static files.")
10217 (license license:gpl3+)))
10218
10219(define-public python2-flask-multistatic
10220 (package-with-python2 python-flask-multistatic))
10221
603d665b
LF
10222(define-public python-cookies
10223 (package
10224 (name "python-cookies")
10225 (version "2.2.1")
10226 (source (origin
10227 (method url-fetch)
10228 (uri (pypi-uri "cookies" version))
10229 (sha256
10230 (base32
10231 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
10232 (build-system python-build-system)
10233 (arguments
10234 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
10235 #:tests? #f))
10236 (native-inputs
10237 `(("python-pytest" ,python2-pytest)))
10238 (synopsis "HTTP cookie parser and renderer")
10239 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
10240Python.")
10241 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 10242 (license license:expat)))
603d665b
LF
10243
10244(define-public python2-cookies
f210e944 10245 (package-with-python2 python-cookies))
0efde7d6
LF
10246
10247(define-public python-responses
10248 (package
10249 (name "python-responses")
10250 (version "0.5.1")
10251 (source (origin
10252 (method url-fetch)
10253 (uri (pypi-uri "responses" version))
10254 (sha256
10255 (base32
10256 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
10257 (build-system python-build-system)
10258 (arguments
10259 `(;; Test suite is not distributed:
10260 ;; https://github.com/getsentry/responses/issues/38
10261 #:tests? #f))
10262 (native-inputs
d8ea5f2f 10263 `(("python-mock" ,python-mock)))
0efde7d6
LF
10264 (propagated-inputs
10265 `(("python-requests" ,python-requests)
d8ea5f2f 10266 ("python-cookies" ,python-cookies)
0efde7d6
LF
10267 ("python-six" ,python-six)))
10268 (home-page "https://github.com/getsentry/responses")
10269 (synopsis "Utility for mocking out the `requests` Python library")
10270 (description "A utility library for mocking out the `requests` Python
10271library.")
f210e944 10272 (license license:asl2.0)))
0efde7d6
LF
10273
10274(define-public python2-responses
f210e944 10275 (package-with-python2 python-responses))
76b94885 10276
b7afd018
RW
10277(define-public python-whoosh
10278 (package
10279 (name "python-whoosh")
10280 (version "2.7.4")
10281 (source
10282 (origin
10283 (method url-fetch)
10284 (uri (pypi-uri "Whoosh" version))
10285 (sha256
10286 (base32
10287 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
10288 (build-system python-build-system)
10289 (native-inputs
f3b98f4f 10290 `(("python-pytest" ,python-pytest)))
b7afd018
RW
10291 (home-page "http://bitbucket.org/mchaput/whoosh")
10292 (synopsis "Full text indexing, search, and spell checking library")
10293 (description
10294 "Whoosh is a fast, pure-Python full text indexing, search, and spell
10295checking library.")
10296 (license license:bsd-2)))
10297
10298(define-public python2-whoosh
10299 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
10300 (package (inherit whoosh)
10301 (propagated-inputs
10302 `(("python2-backport-ssl-match-hostname"
10303 ,python2-backport-ssl-match-hostname)
10304 ,@(package-propagated-inputs whoosh))))))
10305
76b94885
LF
10306(define-public python-pathlib
10307 (package
10308 (name "python-pathlib")
10309 (version "1.0.1")
10310 (source (origin
10311 (method url-fetch)
10312 (uri (pypi-uri "pathlib" version))
10313 (sha256
10314 (base32
10315 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
10316 (build-system python-build-system)
92a312dc
RW
10317 ;; The tests depend on the internal "test" module, which does not provide
10318 ;; a stable interface.
10319 (arguments `(#:tests? #f))
76b94885 10320 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
10321 (synopsis "Object-oriented file system paths")
10322 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
10323It offers the following advantages over using string objects:
10324
10325@enumerate
10326@item No more cumbersome use of os and os.path functions. Everything can
10327be done easily through operators, attribute accesses, and method calls.
10328@item Embodies the semantics of different path types. For example,
10329comparing Windows paths ignores casing.
10330@item Well-defined semantics, eliminating any inconsistencies or
10331ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
10332@end enumerate
10333
10334Note: In Python 3.4, pathlib is now part of the standard library. For other
10335Python versions please consider python-pathlib2 instead, which tracks the
10336standard library module. This module (python-pathlib) isn't maintained
10337anymore.")
76b94885
LF
10338 (license license:expat)))
10339
10340(define-public python2-pathlib
10341 (package-with-python2 python-pathlib))
25a7db0a 10342
b7703c81
HG
10343(define-public python2-pathlib2
10344 (package
10345 (name "python2-pathlib2")
10346 (version "2.1.0")
10347 (source (origin
10348 (method url-fetch)
10349 (uri (pypi-uri "pathlib2" version))
10350 (sha256
10351 (base32
10352 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
10353 (build-system python-build-system)
49a531f5
HG
10354 ;; We only need the the Python 2 variant, since for Python 3 our minimum
10355 ;; version is 3.4 which already includes this package as part of the
10356 ;; standard library.
b7703c81
HG
10357 (arguments
10358 `(#:python ,python-2))
10359 (native-inputs
f3b98f4f 10360 `(("python2-six" ,python2-six)))
b7703c81
HG
10361 (home-page "http://pypi.python.org/pypi/pathlib2/")
10362 (synopsis "Object-oriented file system paths - backport of standard
10363pathlib module")
10364 (description "The goal of pathlib2 is to provide a backport of standard
10365pathlib module which tracks the standard library module, so all the newest
10366features of the standard pathlib can be used also on older Python versions.
10367
10368Pathlib offers a set of classes to handle file system paths. It offers the
10369following advantages over using string objects:
10370
10371@enumerate
10372@item No more cumbersome use of os and os.path functions. Everything can
10373be done easily through operators, attribute accesses, and method calls.
10374@item Embodies the semantics of different path types. For example,
10375comparing Windows paths ignores casing.
10376@item Well-defined semantics, eliminating any inconsistencies or
10377ambiguities (forward vs. backward slashes, etc.).
10378@end enumerate")
10379 (license license:expat)))
10380
25a7db0a
LF
10381(define-public python-jellyfish
10382 (package
10383 (name "python-jellyfish")
8c4964dd 10384 (version "0.5.6")
25a7db0a
LF
10385 (source (origin
10386 (method url-fetch)
10387 (uri (pypi-uri "jellyfish" version))
10388 (sha256
10389 (base32
8c4964dd 10390 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
10391 (build-system python-build-system)
10392 (native-inputs
10393 `(("python-pytest" ,python-pytest)))
10394 (home-page "https://github.com/jamesturk/jellyfish")
10395 (synopsis "Approximate and phonetic matching of strings")
10396 (description "Jellyfish uses a variety of string comparison and phonetic
10397encoding algorithms to do fuzzy string matching.")
3f641af0 10398 (license license:bsd-2)
25a7db0a
LF
10399 (properties `((python2-variant . ,(delay python2-jellyfish))))))
10400
10401(define-public python2-jellyfish
10402 (let ((jellyfish (package-with-python2
10403 (strip-python2-variant python-jellyfish))))
10404 (package (inherit jellyfish)
00e10c6e 10405 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 10406 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
10407
10408(define-public python2-unicodecsv
10409 (package
10410 (name "python2-unicodecsv")
10411 (version "0.14.1")
10412 (source (origin
10413 (method url-fetch)
10414 ;; The test suite is not included in the PyPi release.
10415 ;; https://github.com/jdunck/python-unicodecsv/issues/19
10416 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
10417 "archive/" version ".tar.gz"))
10418 (file-name (string-append name "-" version ".tar.gz"))
10419 (sha256
10420 (base32
10421 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
10422 (build-system python-build-system)
10423 (arguments
10424 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
10425 #:python ,python-2))
10426 (native-inputs
f3b98f4f 10427 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
10428 (home-page "https://github.com/jdunck/python-unicodecsv")
10429 (synopsis "Unicode CSV module for Python 2")
10430 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
10431module, adding support for Unicode strings.")
3f641af0 10432 (license license:bsd-2)))
064503aa
LF
10433
10434(define-public python-rarfile
10435 (package
10436 (name "python-rarfile")
67824447 10437 (version "2.8")
064503aa
LF
10438 (source (origin
10439 (method url-fetch)
10440 (uri (pypi-uri "rarfile" version))
10441 (sha256
10442 (base32
67824447 10443 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
10444 (build-system python-build-system)
10445 (arguments
10446 '(#:phases
10447 (modify-phases %standard-phases
10448 (replace 'check
10449 ;; Many tests fail, but the installation proceeds.
10450 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
10451 (native-inputs
10452 `(("which" ,which))) ; required for tests
10453 (propagated-inputs
10454 `(("libarchive" ,libarchive)))
10455 (home-page "https://github.com/markokr/rarfile")
10456 (synopsis "RAR archive reader for Python")
10457 (description "This is Python module for RAR archive reading. The interface
10458is made as zipfile like as possible.")
3f641af0 10459 (license license:isc)))
064503aa
LF
10460
10461(define-public python2-rarfile
10462 (package-with-python2 python-rarfile))
daeeea71
CM
10463
10464(define-public python-magic
10465 (package
10466 (name "python-magic")
10467 (version "0.4.3")
10468 (source
10469 (origin
10470 (method url-fetch)
10471 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
10472 version ".tar.gz"))
10473 (sha256
10474 (base32
10475 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
10476 (file-name (string-append name "-" version "-checkout"))))
10477 (build-system python-build-system)
10478 (arguments
10479 ;; The tests are unreliable, so don't run them. The tests fail
10480 ;; under Python3 because they were written for Python2 and
10481 ;; contain import statements that do not work in Python3. One of
10482 ;; the tests fails under Python2 because its assertions are
10483 ;; overly stringent; it relies on comparing output strings which
10484 ;; are brittle and can change depending on the version of
10485 ;; libmagic being used and the system on which the test is
10486 ;; running. In my case, under GuixSD 0.10.0, only one test
10487 ;; failed, and it seems to have failed only because the version
10488 ;; of libmagic that is packaged in Guix outputs a slightly
10489 ;; different (but not wrong) string than the one that the test
10490 ;; expected.
10491 '(#:tests? #f
10492 #:phases (modify-phases %standard-phases
10493 ;; Replace a specific method call with a hard-coded
10494 ;; path to the necessary libmagic.so file in the
10495 ;; store. If we don't do this, then the method call
10496 ;; will fail to find the libmagic.so file, which in
10497 ;; turn will cause any application using
10498 ;; python-magic to fail.
10499 (add-before 'build 'hard-code-path-to-libmagic
10500 (lambda* (#:key inputs #:allow-other-keys)
10501 (let ((file (assoc-ref inputs "file")))
10502 (substitute* "magic.py"
10503 (("ctypes.util.find_library\\('magic'\\)")
10504 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
10505 #t)))
10506 (add-before 'install 'disable-egg-compression
10507 (lambda _
10508 (let ((port (open-file "setup.cfg" "a")))
10509 (display "\n[easy_install]\nzip_ok = 0\n"
10510 port)
10511 (close-port port)
10512 #t))))))
daeeea71
CM
10513 (inputs
10514 ;; python-magic needs to be able to find libmagic.so.
10515 `(("file" ,file)))
10516 (home-page "https://github.com/ahupp/python-magic")
10517 (synopsis "File type identification using libmagic")
10518 (description
10519 "This module uses ctypes to access the libmagic file type
10520identification library. It makes use of the local magic database and
10521supports both textual and MIME-type output. Note that this module and
10522the python-file module both provide a \"magic.py\" file; these two
10523modules, which are different and were developed separately, both serve
10524the same purpose: to provide Python bindings for libmagic.")
10525 (license license:expat)))
10526
10527(define-public python2-magic
10528 (package-with-python2 python-magic))
12af303f
CM
10529
10530(define-public python2-s3cmd
10531 (package
10532 (name "python2-s3cmd")
10533 (version "1.6.1")
10534 (source
10535 (origin
10536 (method url-fetch)
de67e922 10537 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
10538 "s3cmd-" version ".tar.gz"))
10539 (sha256
10540 (base32
10541 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
10542 (build-system python-build-system)
10543 (arguments
10544 ;; s3cmd is written for python2 only and contains no tests.
10545 `(#:python ,python-2
10546 #:tests? #f))
f22efa01 10547 (propagated-inputs
12af303f
CM
10548 `(("python2-dateutil" ,python2-dateutil)
10549 ;; The python-file package also provides a magic.py module.
10550 ;; This is an unfortunate state of affairs; however, s3cmd
10551 ;; fails to install if it cannot find specifically the
10552 ;; python-magic package. Thus we include it, instead of using
10553 ;; python-file. Ironically, s3cmd sometimes works better
10554 ;; without libmagic bindings at all:
10555 ;; https://github.com/s3tools/s3cmd/issues/198
10556 ("python2-magic" ,python2-magic)))
10557 (home-page "http://s3tools.org/s3cmd")
10558 (synopsis "Command line tool for S3-compatible storage services")
10559 (description
10560 "S3cmd is a command line tool for uploading, retrieving and managing data
10561in storage services that are compatible with the Amazon Simple Storage
10562Service (S3) protocol, including S3 itself. It supports rsync-like backup,
10563GnuPG encryption, and more. It also supports management of Amazon's
10564CloudFront content delivery network.")
3f641af0 10565 (license license:gpl2+)))
4323a5f0
AE
10566
10567(define-public python-pkgconfig
10568 (package
10569 (name "python-pkgconfig")
10570 (version "1.1.0")
10571 (source
10572 (origin
10573 (method url-fetch)
10574 (uri (pypi-uri "pkgconfig" version))
10575 (sha256
10576 (base32
10577 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
10578 (build-system python-build-system)
10579 (native-inputs
f3b98f4f 10580 `(("python-nose" ,python-nose)))
4323a5f0
AE
10581 (inputs
10582 `(("pkg-config" ,pkg-config)))
10583 (arguments
10584 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
10585 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
10586 #:tests? #f
4323a5f0
AE
10587 ;; Hard-code the path to pkg-config.
10588 #:phases
10589 (modify-phases %standard-phases
10590 (add-before
10591 'build 'patch
10592 (lambda _
10593 (substitute* "pkgconfig/pkgconfig.py"
10594 (("cmd = 'pkg-config")
10595 (string-append "cmd = '" (which "pkg-config"))))
10596 #t)))))
10597 (home-page "http://github.com/matze/pkgconfig")
10598 (synopsis "Python interface for pkg-config")
10599 (description "This module provides a Python interface to pkg-config. It
10600can be used to find all pkg-config packages, check if a package exists,
10601check if a package meets certain version requirements, query CFLAGS and
10602LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 10603 (license license:expat)))
4323a5f0
AE
10604
10605(define-public python2-pkgconfig
10606 (package-with-python2 python-pkgconfig))
10607
2e697322
BW
10608(define-public python-bz2file
10609 (package
10610 (name "python-bz2file")
10611 (version "0.98")
10612 (source
10613 (origin
10614 (method url-fetch)
10615 (uri (pypi-uri "bz2file" version))
10616 (sha256
10617 (base32
10618 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
10619 (build-system python-build-system)
10620 (arguments
124df723 10621 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
10622 (home-page "https://github.com/nvawda/bz2file")
10623 (synopsis "Read and write bzip2-compressed files")
10624 (description
10625 "Bz2file is a Python library for reading and writing bzip2-compressed
10626files. It contains a drop-in replacement for the I/O interface in the
10627standard library's @code{bz2} module, including features from the latest
10628development version of CPython that are not available in older releases.")
3f641af0 10629 (license license:asl2.0)
2e697322
BW
10630 (properties `((python2-variant . ,(delay python2-bz2file))))))
10631
10632(define-public python2-bz2file
10633 (let ((base (package-with-python2
10634 (strip-python2-variant python-bz2file))))
10635 (package
10636 (inherit base)
124df723 10637 (arguments
752bb447
BW
10638 `(#:python ,python-2
10639 #:phases
124df723
BW
10640 (modify-phases %standard-phases
10641 ;; 'python setup.py test' does not work as of 0.98.
10642 ;; There is only the one test file, so we run it directly.
10643 (replace 'check
10644 (lambda _ (zero? (system* "python"
10645 "test_bz2file.py"))))))))))
2e697322 10646
da4ac1aa
BW
10647(define-public python-future
10648 (package
10649 (name "python-future")
10650 (version "0.15.2")
10651 (source
10652 (origin
10653 (method url-fetch)
10654 (uri (pypi-uri "future" version))
10655 (sha256
10656 (base32
10657 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
10658 (build-system python-build-system)
10659 ;; Many tests connect to the network or are otherwise flawed.
10660 ;; https://github.com/PythonCharmers/python-future/issues/210
10661 (arguments
10662 `(#:tests? #f))
10663 (home-page "http://python-future.org")
10664 (synopsis "Single-source support for Python 3 and 2")
10665 (description
10666 "@code{python-future} is the missing compatibility layer between Python 2 and
10667Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
10668to support both Python 2 and Python 3 with minimal overhead.")
f210e944 10669 (license license:expat)))
da4ac1aa
BW
10670
10671(define-public python2-future
f210e944 10672 (package-with-python2 python-future))
da4ac1aa 10673
8e451885
AE
10674(define-public python-cysignals
10675 (package
10676 (name "python-cysignals")
10677 (version "1.1.0")
10678 (source
10679 (origin
10680 (method url-fetch)
10681 (uri (pypi-uri "cysignals" version ".tar.bz2"))
10682 (sha256
10683 (base32
10684 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
10685 (build-system python-build-system)
10686 (native-inputs
10687 `(("python-cython" ,python-cython)
8e451885
AE
10688 ("python-sphinx" ,python-sphinx)))
10689 (inputs
10690 `(("pari-gp" ,pari-gp)))
10691 (arguments
10692 `(#:modules ((guix build python-build-system)
10693 ((guix build gnu-build-system) #:prefix gnu:)
10694 (guix build utils))
10695 ;; FIXME: Tests are executed after installation and currently fail
10696 ;; when not installing into standard locations; the author is working
10697 ;; on a fix.
10698 #:tests? #f
10699 #:phases
10700 (modify-phases %standard-phases
10701 (add-before
10702 'build 'configure
10703 (assoc-ref gnu:%standard-phases 'configure)))))
10704 (home-page
10705 "https://github.com/sagemath/cysignals")
10706 (synopsis
10707 "Handling of interrupts and signals for Cython")
10708 (description
10709 "The cysignals package provides mechanisms to handle interrupts (and
10710other signals and errors) in Cython code, using two related approaches,
10711for mixed Cython/Python code or external C libraries and pure Cython code,
10712respectively.")
3f641af0 10713 (license license:lgpl3+)))
8e451885
AE
10714
10715(define-public python2-cysignals
10716 (package-with-python2 python-cysignals))
10717
63bcec71
DM
10718(define-public python2-shedskin
10719 (package
10720 (name "python2-shedskin")
10721 (version "0.9.4")
10722 (source
10723 (origin
10724 (method url-fetch)
10725 (uri (string-append "https://github.com/shedskin/shedskin/"
10726 "releases/download/v" version
10727 "/shedskin-" version ".tgz"))
10728 (sha256
10729 (base32
10730 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
10731 (build-system python-build-system)
10732 (arguments
10733 `(#:python ,python-2
10734 #:phases (modify-phases %standard-phases
10735 (add-after 'unpack 'fix-resulting-include-libs
10736 (lambda* (#:key inputs #:allow-other-keys)
10737 (let ((libgc (assoc-ref inputs "libgc"))
10738 (pcre (assoc-ref inputs "pcre")))
10739 (substitute* "shedskin/makefile.py"
10740 (("variable == 'CCFLAGS':[ ]*")
10741 (string-append "variable == 'CCFLAGS':\n"
10742 " line += ' -I " pcre "/include"
10743 " -I " libgc "/include'"))
10744 (("variable == 'LFLAGS':[ ]*")
10745 (string-append "variable == 'LFLAGS':\n"
10746 " line += ' -L" pcre "/lib"
10747 " -L " libgc "/lib'")))
10748 #t))))))
63bcec71
DM
10749 (inputs `(("pcre" ,pcre)
10750 ("libgc" ,libgc)))
10751 (home-page "https://shedskin.github.io/")
10752 (synopsis "Experimental Python-2 to C++ Compiler")
10753 (description (string-append "This is an experimental compiler for a subset of
10754Python. It generates C++ code and a Makefile."))
3f641af0 10755 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
10756
10757(define-public python2-rope
10758 (package
10759 (name "python2-rope")
10760 (version "0.10.3")
10761 (source
10762 (origin
10763 (method url-fetch)
10764 (uri (pypi-uri "rope" version))
10765 (sha256
10766 (base32
10767 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10768 (arguments
10769 ;; Rope is currently python-2 only.
10770 ;; https://github.com/python-rope/rope/issues/57
10771 `(#:python ,python-2))
10772 (build-system python-build-system)
10773 (native-inputs
f3b98f4f 10774 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
10775 (home-page "https://github.com/python-rope/rope")
10776 (synopsis "Refactoring library for Python")
10777 (description "Rope is a refactoring library for Python. It facilitates
10778the renaming, moving and extracting of attributes, functions, modules, fields
10779and parameters in Python 2 source code. These refactorings can also be applied
10780to occurences in strings and comments.")
3f641af0 10781 (license license:gpl2)))
6ba8ca17
10782
10783(define-public python-py3status
10784 (package
10785 (name "python-py3status")
d2262d70 10786 (version "3.1")
6ba8ca17
10787 (source
10788 (origin
10789 (method url-fetch)
10790 (uri (pypi-uri "py3status" version))
10791 (sha256
10792 (base32
d2262d70 10793 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 10794 (build-system python-build-system)
8653c1d5
MB
10795 (arguments
10796 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
6ba8ca17
10797 (home-page "https://github.com/ultrabug/py3status")
10798 (synopsis "Extensible i3status wrapper written in Python")
10799 (description "py3status is an i3status wrapper which extends i3status
10800functionality in a modular way, allowing you to extend your panel with your
10801own code, responding to click events and updating clock every second.")
3f641af0 10802 (license license:bsd-3)))
b8fdbca3
HG
10803
10804(define-public python-tblib
10805 (package
10806 (name "python-tblib")
10807 (version "1.3.0")
10808 (source (origin
10809 (method url-fetch)
10810 (uri (pypi-uri "tblib" version))
10811 (sha256 (base32
10812 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10813 (build-system python-build-system)
10814 (arguments
10815 `(#:phases
10816 (modify-phases %standard-phases
10817 (replace 'check
10818 (lambda _
10819 ;; Upstream runs tests after installation and the package itself
10820 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10821 ;; found.
10822 (setenv "PYTHONPATH"
10823 (string-append (getcwd) "/build/lib:"
10824 (getenv "PYTHONPATH")))
10825 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10826 (native-inputs
10827 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
10828 ("python-six" ,python-six)))
10829 (home-page "https://github.com/ionelmc/python-tblib")
10830 (synopsis "Traceback serialization library")
10831 (description
10832 "Traceback serialization allows you to:
10833
10834@enumerate
10835@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10836different processes. This allows better error handling when running code over
10837multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10838
10839@item Parse traceback strings and raise with the parsed tracebacks.
9657aeb1 10840@end enumerate\n")
3f641af0 10841 (license license:bsd-3)))
b8fdbca3
HG
10842
10843(define-public python2-tblib
10844 (package-with-python2 python-tblib))
1a024de4
HG
10845
10846(define-public python-sqlparse
10847 (package
10848 (name "python-sqlparse")
10849 (version "0.1.19")
10850 (source (origin
10851 (method url-fetch)
10852 (uri (pypi-uri "sqlparse" version))
10853 (sha256
10854 (base32
10855 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10856 (build-system python-build-system)
10857 (arguments
10858 `(#:phases
10859 (modify-phases %standard-phases
10860 (replace 'check
10861 (lambda* _
10862 ;; setup.py-integrated 2to3 only affects the build files, but
10863 ;; py.test is using the source files. So we need to convert them
10864 ;; manually.
10865 (when (zero? (system* "python3"))
10866 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10867 (zero? (system* "py.test")))))))
10868 (native-inputs
f3b98f4f 10869 `(("python-pytest" ,python-pytest)))
1a024de4
HG
10870 (home-page "https://github.com/andialbrecht/sqlparse")
10871 (synopsis "Non-validating SQL parser")
10872 (description "Sqlparse is a non-validating SQL parser for Python. It
10873provides support for parsing, splitting and formatting SQL statements.")
3f641af0 10874 (license license:bsd-3)))
1a024de4
HG
10875
10876(define-public python2-sqlparse
10877 (package-with-python2 python-sqlparse))
68b9d242
SB
10878
10879(define-public python-greenlet
10880 (package
10881 (name "python-greenlet")
1f89fb16 10882 (version "0.4.11")
68b9d242
SB
10883 (source (origin
10884 (method url-fetch)
10885 (uri (pypi-uri "greenlet" version))
10886 (sha256
10887 (base32
1f89fb16 10888 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
68b9d242 10889 (build-system python-build-system)
68b9d242
SB
10890 (home-page "https://greenlet.readthedocs.io/")
10891 (synopsis "Lightweight in-process concurrent programming")
10892 (description
10893 "Greenlet package is a spin-off of Stackless, a version of CPython
10894that supports micro-threads called \"tasklets\". Tasklets run
10895pseudo-concurrently (typically in a single or a few OS-level threads) and
10896are synchronized with data exchanges on \"channels\".")
3f641af0 10897 (license (list license:psfl license:expat))))
68b9d242
SB
10898
10899(define-public python2-greenlet
10900 (package-with-python2 python-greenlet))
d79a343b
SB
10901
10902(define-public python-gevent
10903 (package
10904 (name "python-gevent")
10905 (version "1.1.1")
10906 (source (origin
10907 (method url-fetch)
10908 (uri (pypi-uri "gevent" version))
10909 (sha256
10910 (base32
10911 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10912 (modules '((guix build utils)))
10913 (snippet
10914 '(begin
10915 ;; unbunding libev and c-ares
10916 (for-each delete-file-recursively '("libev" "c-ares"))
10917 ;; fixing testsuite
10918 (call-with-output-file "greentest/__init__.py" noop)
10919 (substitute* "greentest/testrunner.py"
10920 (("import util") "from . import util")
10921 (("from util import log") "from .util import log"))))))
10922 (build-system python-build-system)
10923 (propagated-inputs
10924 `(("python-greenlet" ,python-greenlet)))
10925 (native-inputs
f3b98f4f 10926 `(("python-six" ,python-six)))
d79a343b
SB
10927 (inputs
10928 `(("c-ares" ,c-ares)
10929 ("libev" ,libev)))
10930 (home-page "http://www.gevent.org/")
10931 (synopsis "Coroutine-based network library")
10932 (description
10933 "gevent is a coroutine-based Python networking library that uses greenlet
10934to provide a high-level synchronous API on top of the libev event loop.")
10935 (license license:expat)))
10936
10937(define-public python2-gevent
10938 (package-with-python2 python-gevent))
da3aeeb6 10939
c9a18125
MB
10940(define-public python-geventhttpclient
10941 (package
10942 (name "python-geventhttpclient")
10943 (version "1.3.1")
10944 (source (origin
10945 (method url-fetch)
10946 (uri (pypi-uri "geventhttpclient" version))
10947 (sha256
10948 (base32
10949 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
10950 (modules '((guix build utils)))
10951 (snippet
10952 '(begin
10953 ;; Delete pre-compiled files.
10954 (for-each delete-file (find-files "src/geventhttpclient"
10955 ".*\\.pyc"))
10956 #t))))
10957 (build-system python-build-system)
10958 (arguments
10959 '(#:phases
10960 (modify-phases %standard-phases
10961 (add-after 'unpack 'delete-network-tests
10962 (lambda _
10963 (delete-file "src/geventhttpclient/tests/test_client.py")
10964 #t))
10965 (delete 'check)
10966 (add-after 'install 'check
10967 (lambda* (#:key inputs outputs #:allow-other-keys)
10968 (add-installed-pythonpath inputs outputs)
10969 (zero? (system* "py.test" "src/geventhttpclient/tests" "-v")))))))
10970 (native-inputs
10971 `(("python-pytest" ,python-pytest)))
10972 (propagated-inputs
10973 `(("python-certifi" ,python-certifi)
10974 ("python-gevent" ,python-gevent)
10975 ("python-six" ,python-six)))
10976 (home-page "https://github.com/gwik/geventhttpclient")
10977 (synopsis "HTTP client library for gevent")
10978 (description "@code{python-geventhttpclient} is a high performance,
10979concurrent HTTP client library for python using @code{gevent}.")
10980 (license license:expat)))
10981
10982(define-public python2-geventhttpclient
10983 (package-with-python2 python-geventhttpclient))
10984
b585e361
DM
10985(define-public python-fastimport
10986 (package
10987 (name "python-fastimport")
10988 (version "0.9.6")
10989 (source
10990 (origin
10991 (method url-fetch)
10992 (uri (pypi-uri "fastimport" version))
10993 (sha256
10994 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
10995 (build-system python-build-system)
10996 (home-page "https://github.com/jelmer/python-fastimport")
10997 (synopsis "VCS fastimport parser and generator in Python")
10998 (description "This package provides a parser for and generator of the Git
10999@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
11000format.")
11001 (license license:gpl2+)))
11002
11003(define-public python2-fastimport
11004 (package-with-python2 python-fastimport))
11005
da3aeeb6
SB
11006(define-public python-twisted
11007 (package
11008 (name "python-twisted")
11009 (version "16.2.0")
11010 (source (origin
11011 (method url-fetch)
8ea8e8d3 11012 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
11013 (sha256
11014 (base32
11015 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11016 (build-system python-build-system)
a960e73f
MB
11017 (arguments
11018 '(#:tests? #f)) ; FIXME: Some tests are failing.
11019 ;; #:phases
11020 ;; (modify-phases %standard-phases
11021 ;; (replace 'check
11022 ;; (lambda _
11023 ;; (zero? (system* "./bin/trial" "twisted")))))
45912170
SB
11024 (propagated-inputs
11025 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
11026 (home-page "https://twistedmatrix.com/")
11027 (synopsis "Asynchronous networking framework written in Python")
11028 (description
11029 "Twisted is an extensible framework for Python programming, with special
11030focus on event-based network programming and multiprotocol integration.")
11031 (license license:expat)))
11032
11033(define-public python2-twisted
11034 (package-with-python2 python-twisted))
d0b6fed6 11035
4d3fa5a4
EF
11036(define-public python-pika
11037 (package
11038 (name "python-pika")
11039 (version "0.10.0")
11040 (source
11041 (origin
11042 (method url-fetch)
11043 (uri (pypi-uri "pika" version))
11044 (sha256
11045 (base32
11046 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
11047 (build-system python-build-system)
11048 (native-inputs
269d9172
LF
11049 `(("python-pyev" ,python-pyev)
11050 ("python-tornado" ,python-tornado)
11051 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
11052 (home-page "https://pika.readthedocs.org")
11053 (synopsis "Pure Python AMQP Client Library")
11054 (description
11055 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
11056Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
11057network support library.")
11058 (license license:bsd-3)))
11059
11060(define-public python2-pika
11061 (package-with-python2 python-pika))
11062
d0b6fed6
DM
11063(define-public python-ply
11064 (package
11065 (name "python-ply")
234ade2d 11066 (version "3.9")
d0b6fed6
DM
11067 (source
11068 (origin
11069 (method url-fetch)
234ade2d 11070 (uri (pypi-uri "ply" version))
d0b6fed6
DM
11071 (sha256
11072 (base32
234ade2d 11073 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
d0b6fed6
DM
11074 (build-system python-build-system)
11075 (home-page "http://www.dabeaz.com/ply/")
11076 (synopsis "Python Lex & Yacc")
11077 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
11078It uses LR parsing and does extensive error checking.")
f210e944 11079 (license license:bsd-3)))
d0b6fed6
DM
11080
11081(define-public python2-ply
f210e944 11082 (package-with-python2 python-ply))
d951bd54
SB
11083
11084(define-public python-tabulate
11085 (package
11086 (name "python-tabulate")
e6ace98d 11087 (version "0.7.7")
d951bd54
SB
11088 (source (origin
11089 (method url-fetch)
11090 (uri (pypi-uri "tabulate" version))
11091 (sha256
11092 (base32
fe2ba3a8 11093 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
d951bd54 11094 (build-system python-build-system)
fe2ba3a8
MB
11095 (arguments
11096 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
11097 ;; and the latest release is not tagged in the upstream repository.
11098 '(#:tests? #f))
d951bd54
SB
11099 (home-page "https://bitbucket.org/astanin/python-tabulate")
11100 (synopsis "Pretty-print tabular data")
11101 (description
11102 "Tabulate is a library and command-line utility to pretty-print tabular
11103data in Python.")
11104 (license license:expat)))
11105
11106(define-public python2-tabulate
11107 (package-with-python2 python-tabulate))
1c4c8a33
SB
11108
11109(define-public python-kazoo
11110 (package
11111 (name "python-kazoo")
11112 (version "2.2.1")
11113 (source
11114 (origin
11115 (method url-fetch)
11116 (uri (pypi-uri "kazoo" version))
11117 (sha256
11118 (base32
11119 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
11120 (build-system python-build-system)
11121 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
11122 (propagated-inputs
11123 `(("python-six" ,python-six)))
1c4c8a33
SB
11124 (home-page "https://kazoo.readthedocs.org")
11125 (synopsis "High-level Zookeeper client library")
11126 (description
11127 "Kazoo is a Python client library for the Apache Zookeeper distributed
11128application service. It is designed to be easy to use and to avoid common
11129programming errors.")
3f641af0 11130 (license license:asl2.0)))
1c4c8a33
SB
11131
11132(define-public python2-kazoo
11133 (package-with-python2 python-kazoo))
45dda35e
SB
11134
11135(define-public python-pykafka
11136 (package
11137 (name "python-pykafka")
11138 (version "2.4.0")
11139 (source (origin
11140 (method url-fetch)
c6bccf71
EF
11141 (uri (string-append
11142 "https://pypi.python.org/packages/8b/3e/"
11143 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11144 "pykafka-" version ".tar.gz"))
45dda35e
SB
11145 (sha256
11146 (base32
11147 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11148 (build-system python-build-system)
11149 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 11150 (propagated-inputs
45dda35e
SB
11151 `(("python-gevent" ,python-gevent)
11152 ("python-kazoo" ,python-kazoo)
45dda35e
SB
11153 ("python-tabulate" ,python-tabulate)))
11154 (inputs
11155 `(("librdkafka" ,librdkafka)))
11156 (home-page "https://pykafka.readthedocs.io/")
11157 (synopsis "Apache Kafka client for Python")
11158 (description
11159 "PyKafka is a client for the Apache Kafka distributed messaging system.
11160It includes Python implementations of Kafka producers and consumers, which
11161are optionally backed by a C extension built on librdkafka.")
3f641af0 11162 (license license:asl2.0)))
45dda35e
SB
11163
11164(define-public python2-pykafka
11165 (package-with-python2 python-pykafka))
a44fd439
DM
11166
11167(define-public python-wcwidth
11168 (package
11169 (name "python-wcwidth")
11170 (version "0.1.6")
11171 (source
11172 (origin
11173 (method url-fetch)
11174 (uri (string-append
11175 "https://pypi.python.org/packages/"
11176 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
11177 "wcwidth-" version ".tar.gz"))
11178 (sha256
11179 (base32
11180 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
11181 (build-system python-build-system)
11182 (home-page "https://github.com/jquast/wcwidth")
66e07664 11183 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
11184 (description "Wcwidth measures the number of terminal column cells of
11185wide-character codes. It is useful for those implementing a terminal emulator,
11186or programs that carefully produce output to be interpreted by one. It is a
11187Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
11188specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 11189 (license license:expat)))
a44fd439
DM
11190
11191(define-public python2-wcwidth
f210e944 11192 (package-with-python2 python-wcwidth))
0de78c95
DP
11193
11194(define-public python2-jsonrpclib
11195 (package
11196 (name "python2-jsonrpclib")
11197 (version "0.1.7")
11198 (source (origin
11199 (method url-fetch)
11200 (uri (string-append
11201 "https://pypi.python.org/packages/source/j/jsonrpclib/"
11202 "jsonrpclib-" version ".tar.gz"))
11203 (sha256
11204 (base32
11205 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
11206 (build-system python-build-system)
0de78c95
DP
11207 (arguments
11208 `(#:tests? #f
11209 #:python ,python-2))
11210 (home-page "https://github.com/joshmarshall/jsonrpclib/")
11211 (synopsis "Implementation of JSON-RPC specification for Python")
11212 (description
11213 "This library is an implementation of the JSON-RPC specification.
11214It supports both the original 1.0 specification, as well as the
11215new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
11216etc.")
3f641af0 11217 (license license:asl2.0)))
9250b0f3
SB
11218
11219(define-public python-chai
11220 (package
11221 (name "python-chai")
11222 (version "1.1.1")
11223 (source (origin
11224 (method url-fetch)
11225 (uri (pypi-uri "chai" version))
11226 (sha256
11227 (base32
11228 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
11229 (build-system python-build-system)
9250b0f3
SB
11230 (home-page "https://github.com/agoragames/chai")
11231 (synopsis "Mocking framework for Python")
11232 (description
11233 "Chai provides an api for mocking, stubbing and spying your python
11234objects, patterned after the Mocha library for Ruby.")
3f641af0 11235 (license license:bsd-3)))
9250b0f3
SB
11236
11237(define-public python2-chai
11238 (package-with-python2 python-chai))
11239
ae43baa8
SB
11240(define-public python-arrow
11241 (package
11242 (name "python-arrow")
11243 (version "0.8.0")
11244 (source (origin
11245 (method url-fetch)
11246 (uri (pypi-uri "arrow" version))
11247 (sha256
11248 (base32
11249 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
11250 (build-system python-build-system)
11251 (native-inputs
f3b98f4f 11252 `(;; For testing
ae43baa8
SB
11253 ("python-chai" ,python-chai)
11254 ("python-simplejson" ,python-simplejson)))
36aed736 11255 (propagated-inputs
22d7360b 11256 `(("python-dateutil" ,python-dateutil)))
ae43baa8
SB
11257 (home-page "https://github.com/crsmithdev/arrow/")
11258 (synopsis "Dates and times for Python")
11259 (description
11260 "Arrow is a Python library to creating, manipulating, formatting and
11261converting dates, times, and timestamps. It implements and updates the
11262datetime type.")
3f641af0 11263 (license license:asl2.0)))
ae43baa8
SB
11264
11265(define-public python2-arrow
11266 (package-with-python2 python-arrow))
11267
1f2b62a4
SB
11268(define-public python-inflection
11269 (package
11270 (name "python-inflection")
11271 (version "0.3.1")
11272 (source
11273 (origin (method url-fetch)
11274 (uri (pypi-uri "inflection" version))
11275 (sha256
11276 (base32
11277 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
11278 (build-system python-build-system)
e9127525
MB
11279 (native-inputs
11280 `(("python-pytest" ,python-pytest)))
1f2b62a4
SB
11281 (home-page "http://github.com/jpvanhal/inflection")
11282 (synopsis "Python string transformation library")
11283 (description
11284 "Inflection is a string transformation library. It singularizes
11285and pluralizes English words, and transforms strings from CamelCase to
11286underscored string.")
11287 (license license:expat)))
11288
11289(define-public python2-inflection
11290 (package-with-python2 python-inflection))
11291
18995566
SB
11292(define-public python-pylev
11293 (package
11294 (name "python-pylev")
11295 (version "1.3.0")
11296 (source (origin
11297 (method url-fetch)
11298 (uri (pypi-uri "pylev" version))
11299 (sha256
11300 (base32
11301 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
11302 (build-system python-build-system)
18995566
SB
11303 (home-page "http://github.com/toastdriven/pylev")
11304 (synopsis "Levenshtein distance implementation in Python")
11305 (description "Pure Python Levenshtein implementation, based off the
11306Wikipedia code samples at
11307@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 11308 (license license:bsd-3)))
18995566
SB
11309
11310(define-public python2-pylev
11311 (package-with-python2 python-pylev))
11312
f5deff7a
SB
11313(define-public python-cleo
11314 (package
11315 (name "python-cleo")
11316 (version "0.4.1")
11317 (source (origin
11318 (method url-fetch)
11319 (uri (pypi-uri "cleo" version))
11320 (sha256
11321 (base32
11322 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
11323 (build-system python-build-system)
11324 (native-inputs
f3b98f4f 11325 `(;; For testing
f5deff7a
SB
11326 ("python-mock" ,python-mock)
11327 ("python-pytest" ,python-pytest)))
9403150a
SB
11328 (propagated-inputs
11329 `(("python-psutil" ,python-psutil)
11330 ("python-pylev" ,python-pylev)))
f5deff7a
SB
11331 (home-page "https://github.com/sdispater/cleo")
11332 (synopsis "Command-line arguments library for Python")
11333 (description
11334 "Cleo allows you to create command-line commands with signature in
11335docstring and colored output.")
11336 (license license:expat)))
11337
11338(define-public python2-cleo
11339 (package-with-python2 python-cleo))
11340
77cadb43
SB
11341(define-public python-lazy-object-proxy
11342 (package
11343 (name "python-lazy-object-proxy")
11344 (version "1.2.2")
11345 (source (origin
11346 (method url-fetch)
11347 (uri (pypi-uri "lazy-object-proxy" version))
11348 (sha256
11349 (base32
11350 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
11351 (build-system python-build-system)
77cadb43
SB
11352 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
11353 (synopsis "Lazy object proxy for python")
11354 (description
11355 "Lazy object proxy is an object that wraps a callable but defers the call
11356until the object is actually required, and caches the result of said call.")
3f641af0 11357 (license license:bsd-2)))
77cadb43
SB
11358
11359(define-public python2-lazy-object-proxy
11360 (package-with-python2 python-lazy-object-proxy))
11361
5477e05f
SB
11362(define-public python-dnspython
11363 (package
11364 (name "python-dnspython")
6c514128 11365 (version "1.15.0")
5477e05f
SB
11366 (source (origin
11367 (method url-fetch)
11368 (uri (string-append "http://www.dnspython.org/kits/"
11369 version "/dnspython-" version ".tar.gz"))
11370 (sha256
11371 (base32
6c514128 11372 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
11373 (build-system python-build-system)
11374 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
11375 (home-page "http://www.dnspython.org")
11376 (synopsis "DNS toolkit for Python")
11377 (description
11378 "dnspython is a DNS toolkit for Python. It supports almost all record
11379types. It can be used for queries, zone transfers, and dynamic updates.
11380It supports TSIG authenticated messages and EDNS0.")
11381 (license license:expat)))
11382
11383(define-public python2-dnspython
11384 (package-with-python2 python-dnspython))
11385
22711e25
SB
11386(define-public python-email-validator
11387 (package
11388 (name "python-email-validator")
b165c215 11389 (version "1.0.2")
22711e25
SB
11390 (source
11391 (origin (method url-fetch)
11392 (uri (pypi-uri "email_validator" version))
11393 (sha256
11394 (base32
b165c215 11395 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
22711e25
SB
11396 (build-system python-build-system)
11397 (arguments
11398 '(#:phases
11399 (modify-phases %standard-phases
11400 (add-before 'build 'use-dnspython
11401 (lambda _
11402 (substitute* "setup.py"
11403 (("dnspython3") "dnspython"))
11404 #t)))))
d42560bd 11405 (propagated-inputs
22711e25 11406 `(("python-dnspython" ,python-dnspython)
d42560bd 11407 ("python-idna" ,python-idna)))
22711e25
SB
11408 (home-page "https://github.com/JoshData/python-email-validator")
11409 (synopsis "Email address validation library for Python")
11410 (description
11411 "This library validates email address syntax and deliverability.")
3f641af0 11412 (license license:cc0)))
22711e25
SB
11413
11414(define-public python2-email-validator
11415 (package-with-python2 python-email-validator))
11416
8987d91e
SB
11417(define-public python-ukpostcodeparser
11418 (package
11419 (name "python-ukpostcodeparser")
11420 (version "1.0.3")
11421 (source (origin
11422 (method url-fetch)
11423 (uri (pypi-uri "UkPostcodeParser" version))
11424 (sha256
11425 (base32
11426 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
11427 (build-system python-build-system)
8987d91e
SB
11428 (home-page "https://github.com/hamstah/ukpostcodeparser")
11429 (synopsis "UK Postcode parser for Python")
11430 (description
11431 "This library provides the @code{parse_uk_postcode} function for
11432parsing UK postcodes.")
11433 (license license:expat)))
11434
11435(define-public python2-ukpostcodeparser
11436 (package-with-python2 python-ukpostcodeparser))
ea92ae01 11437
ce7911dd
MB
11438(define-public python-faker
11439 (package
11440 (name "python-faker")
11441 (version "0.7.9")
11442 (source (origin
11443 (method url-fetch)
11444 (uri (pypi-uri "Faker" version))
11445 (sha256
11446 (base32
11447 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
11448 (patches
11449 (search-patches "python-faker-fix-build-32bit.patch"))
11450 (modules '((guix build utils)))
11451 (snippet
11452 '(begin
11453 (for-each delete-file (find-files "." "\\.pyc$"))
11454 #t))))
11455 (build-system python-build-system)
11456 (arguments
11457 '(#:phases
11458 (modify-phases %standard-phases
11459 (replace 'check
11460 (lambda _
11461 (zero? (system* "python" "-m" "unittest" "-v" "tests")))))))
11462 (native-inputs
11463 `(;; For testing
11464 ("python-email-validator" ,python-email-validator)
11465 ("python-mock" ,python-mock)
11466 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
11467 (propagated-inputs
11468 `(("python-dateutil" ,python-dateutil)
11469 ("python-six" ,python-six)))
11470 (home-page "https://github.com/joke2k/faker")
11471 (synopsis "Python package that generates fake data")
11472 (description
11473 "Faker is a Python package that generates fake data such as names,
11474addresses, and phone numbers.")
11475 (license license:expat)
11476 (properties `((python2-variant . ,(delay python2-faker))))))
11477
11478(define-public python2-faker
11479 (let ((base (package-with-python2 (strip-python2-variant
11480 python-faker))))
11481 (package
11482 (inherit base)
11483 (propagated-inputs
11484 `(("python2-ipaddress" ,python2-ipaddress)
11485 ,@(package-propagated-inputs base))))))
11486
ea92ae01
SB
11487(define-public python-fake-factory
11488 (package
11489 (name "python-fake-factory")
7adc698f 11490 (version "0.7.2")
ea92ae01
SB
11491 (source (origin
11492 (method url-fetch)
11493 (uri (pypi-uri "fake-factory" version))
11494 (sha256
11495 (base32
42945fb5
MB
11496 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))
11497 (patches
11498 (search-patches
11499 "python-fake-factory-fix-build-32bit.patch"))))
ea92ae01 11500 (build-system python-build-system)
b7f3ea95
MB
11501 (arguments
11502 '(#:phases
11503 (modify-phases %standard-phases
11504 (replace 'check
11505 (lambda _
11506 (zero? (system* "python" "-m" "unittest" "-v" "faker.tests")))))))
ea92ae01 11507 (native-inputs
f3b98f4f 11508 `(;; For testing
ea92ae01
SB
11509 ("python-email-validator" ,python-email-validator)
11510 ("python-mock" ,python-mock)
11511 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297 11512 (propagated-inputs
22d7360b 11513 `(("python-dateutil" ,python-dateutil)
bbcd7297 11514 ("python-six" ,python-six)))
7adc698f 11515 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
11516 (synopsis "Python package that generates fake data")
11517 (description
11518 "Faker is a Python package that generates fake data such as names,
11519addresses, and phone numbers.")
11520 (license license:expat)
ce7911dd
MB
11521 (properties `((python2-variant . ,(delay python2-fake-factory))
11522 (superseded . ,python-faker)))))
ea92ae01
SB
11523
11524(define-public python2-fake-factory
11525 (let ((base (package-with-python2 (strip-python2-variant
11526 python-fake-factory))))
11527 (package
11528 (inherit base)
ce7911dd 11529 (properties `((superseded . ,python2-faker)))
24c9aa18 11530 (propagated-inputs
ea92ae01 11531 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 11532 ,@(package-propagated-inputs base))))))
ea92ae01 11533
b49504fd
SB
11534(define-public python-pyaml
11535 (package
11536 (name "python-pyaml")
11537 (version "15.8.2")
11538 (source (origin
11539 (method url-fetch)
11540 (uri (pypi-uri "pyaml" version))
11541 (sha256
11542 (base32
11543 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
11544 (build-system python-build-system)
f620311a
MB
11545 (native-inputs
11546 `(("python-unidecode" ,python-unidecode)))
b49504fd
SB
11547 (propagated-inputs
11548 `(("python-pyyaml" ,python-pyyaml)))
11549 (home-page "https://github.com/mk-fg/pretty-yaml")
11550 (synopsis "YAML pretty-print library for Python")
11551 (description
11552 "pyaml is a PyYAML based python module to produce pretty and readable
11553YAML-serialized data.")
3f641af0 11554 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
11555
11556(define-public python2-pyaml
11557 (package-with-python2 python-pyaml))
11558
347175a2
SB
11559(define-public python-flexmock
11560 (package
11561 (name "python-flexmock")
11562 (version "0.10.2")
11563 (source (origin
11564 (method url-fetch)
11565 (uri (pypi-uri "flexmock" version))
11566 (sha256
11567 (base32
11568 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
11569 (build-system python-build-system)
347175a2
SB
11570 (home-page "https://flexmock.readthedocs.org")
11571 (synopsis "Testing library for Python")
11572 (description
11573 "flexmock is a testing library for Python that makes it easy to create
11574mocks, stubs and fakes.")
3f641af0 11575 (license license:bsd-3)))
347175a2
SB
11576
11577(define-public python2-flexmock
11578 (package-with-python2 python-flexmock))
11579
5a744191
SB
11580(define-public python-orator
11581 (package
11582 (name "python-orator")
11583 (version "0.8.2")
11584 (source (origin
11585 (method url-fetch)
11586 (uri (pypi-uri "orator" version))
11587 (sha256
11588 (base32
11589 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
11590 (build-system python-build-system)
11591 (arguments '(#:tests? #f)) ; no tests
b2676030 11592 (propagated-inputs
5a744191
SB
11593 `(("python-arrow" ,python-arrow)
11594 ("python-blinker" ,python-blinker)
11595 ("python-cleo" ,python-cleo)
ce7911dd 11596 ("python-faker" ,python-faker)
5a744191
SB
11597 ("python-inflection" ,python-inflection)
11598 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
11599 ("python-pyaml" ,python-pyaml)
5a744191
SB
11600 ("python-simplejson" ,python-simplejson)
11601 ("python-wrapt" ,python-wrapt)))
11602 (home-page "https://orator-orm.com/")
11603 (synopsis "ActiveRecord ORM for Python")
11604 (description
11605 "Orator provides a simple ActiveRecord-like Object Relational Mapping
11606implementation for Python.")
11607 (license license:expat)
11608 (properties `((python2-variant . ,(delay python2-orator))))))
11609
11610(define-public python2-orator
11611 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
11612 (package
11613 (inherit base)
06961617 11614 (propagated-inputs
5a744191 11615 `(("python2-ipaddress" ,python2-ipaddress)
06961617 11616 ,@(package-propagated-inputs base))))))
f4155188
DM
11617
11618(define-public python-prompt-toolkit
11619 (package
11620 (name "python-prompt-toolkit")
6a34f4cc 11621 (version "1.0.9")
f4155188
DM
11622 (source
11623 (origin
11624 (method url-fetch)
d15e2ef0 11625 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
11626 (sha256
11627 (base32
6a34f4cc 11628 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 11629 (build-system python-build-system)
bae18710
LF
11630 (arguments
11631 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
11632 (propagated-inputs
11633 `(("python-wcwidth" ,python-wcwidth)
2c199b55 11634 ("python-six" ,python-six)
f22efa01 11635 ("python-pygments" ,python-pygments)))
f4155188
DM
11636 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
11637 (synopsis "Library for building command line interfaces in Python")
11638 (description
11639 "Prompt-Toolkit is a library for building interactive command line
11640interfaces in Python. It's like GNU Readline but it also features syntax
11641highlighting while typing, out-of-the-box multi-line input editing, advanced
11642code completion, incremental search, support for Chinese double-width
11643characters, mouse support, and auto suggestions.")
f210e944 11644 (license license:bsd-3)))
f4155188
DM
11645
11646(define-public python2-prompt-toolkit
f210e944 11647 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
11648
11649(define-public python-jedi
11650 (package
11651 (name "python-jedi")
11652 (version "0.9.0")
11653 (source
11654 (origin
11655 (method url-fetch)
11656 (uri (pypi-uri "jedi" version))
11657 (sha256
11658 (base32
11659 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
11660 (build-system python-build-system)
bfce8a34
MB
11661 (arguments
11662 ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
11663 '(#:tests? #f))
11664 (native-inputs
11665 `(("python-pytest" ,python-pytest)))
a502dfbf
DM
11666 (home-page "https://github.com/davidhalter/jedi")
11667 (synopsis
11668 "Autocompletion for Python that can be used for text editors")
11669 (description
11670 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 11671 (license license:expat)))
a502dfbf
DM
11672
11673(define-public python2-jedi
f210e944 11674 (package-with-python2 python-jedi))
c2f0dc6e
DM
11675
11676(define-public ptpython
11677 (package
11678 (name "ptpython")
11679 (version "0.34")
11680 (source (origin
11681 (method url-fetch)
11682 (uri (pypi-uri "ptpython" version))
11683 (sha256
11684 (base32
11685 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
11686 (build-system python-build-system)
32955348
MB
11687 (arguments
11688 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
f22efa01 11689 (propagated-inputs
c2f0dc6e
DM
11690 `(("python-docopt" ,python-docopt)
11691 ("python-jedi" ,python-jedi)
11692 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 11693 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
11694 (home-page "https://github.com/jonathanslenders/ptpython")
11695 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
11696 (description
11697 "ptpython is a Python read-eval-print loop with IDE-like features.
11698It supports syntax highlighting, multiline editing, autocompletion, mouse,
11699color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
11700etc.")
3f641af0 11701 (license license:bsd-3)
c2f0dc6e
DM
11702 (properties `((python2-variant . ,(delay ptpython-2))))))
11703
11704(define-public ptpython-2
11705 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
11706 (package
11707 (inherit base)
11708 (name "ptpython2"))))
b227f0be 11709
b04a52a6
DJ
11710(define-public python-requests-oauthlib
11711 (package
11712 (name "python-requests-oauthlib")
11713 (version "0.6.2")
11714 (source
11715 (origin
11716 (method url-fetch)
11717 (uri (pypi-uri "requests-oauthlib" version))
11718 (sha256
11719 (base32
11720 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
11721 (build-system python-build-system)
11722 (arguments
11723 `(#:phases
11724 (modify-phases %standard-phases
11725 ;; removes tests that require network access
11726 (add-before 'check 'pre-check
11727 (lambda _
11728 (delete-file "tests/test_core.py")
11729 #t)))))
11730 (native-inputs
11731 `(("python-requests-mock" ,python-requests-mock)
11732 ("python-mock" ,python-mock)))
f22efa01 11733 (propagated-inputs
b04a52a6
DJ
11734 `(("python-oauthlib" ,python-oauthlib)
11735 ("python-requests" ,python-requests)))
11736 (home-page
11737 "https://github.com/requests/requests-oauthlib")
11738 (synopsis
11739 "OAuthlib authentication support for Requests")
11740 (description
11741 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
11742provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 11743 (license license:isc)))
b04a52a6
DJ
11744
11745(define-public python2-requests-oauthlib
f210e944 11746 (package-with-python2 python-requests-oauthlib))
b04a52a6 11747
b227f0be 11748(define-public python-stem
11749 (package
11750 (name "python-stem")
0bb1c35a 11751 (version "1.5.4")
b227f0be 11752 (source
11753 (origin
11754 (method url-fetch)
c976b319 11755 (uri (pypi-uri "stem" version))
b227f0be 11756 (sha256
11757 (base32
0bb1c35a 11758 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
b227f0be 11759 (build-system python-build-system)
11760 (arguments
11761 `(#:phases
11762 (modify-phases %standard-phases
11763 (replace 'check
11764 (lambda _
11765 (zero? (system* "./run_tests.py" "--unit")))))))
11766 (native-inputs
11767 `(("python-mock" ,python-mock)
11768 ("python-pep8" ,python-pep8)
11769 ("python-pyflakes" ,python-pyflakes)))
b227f0be 11770 (home-page "https://stem.torproject.org/")
11771 (synopsis
11772 "Python controller library that allows applications to interact with Tor")
11773 (description
11774 "Stem is a Python controller library for Tor. With it you can use Tor's
11775control protocol to script against the Tor process and read descriptor data
11776relays publish about themselves.")
3f641af0 11777 (license license:lgpl3)))
b227f0be 11778
11779(define-public python2-stem
11780 (package-with-python2 python-stem))
517a6c0c
DM
11781
11782(define-public python-pyserial
11783 (package
11784 (name "python-pyserial")
11785 (version "3.1.1")
11786 (source
11787 (origin
11788 (method url-fetch)
11789 (uri (pypi-uri "pyserial" version))
11790 (sha256
11791 (base32
11792 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
11793 (build-system python-build-system)
0a702009
MB
11794 (arguments
11795 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
11796 ;; #:phases
11797 ;; (modify-phases %standard-phases
11798 ;; (replace 'check
11799 ;; (lambda _
11800 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
517a6c0c
DM
11801 (home-page
11802 "https://github.com/pyserial/pyserial")
11803 (synopsis "Python Serial Port Bindings")
11804 (description "@code{pyserial} provide serial port bindings for Python. It
11805supports different byte sizes, stop bits, parity and flow control with RTS/CTS
11806and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 11807 (license license:bsd-3)))
517a6c0c
DM
11808
11809(define-public python2-pyserial
f210e944 11810 (package-with-python2 python-pyserial))
6eb7af2a
DJ
11811
11812(define-public python-kivy
11813 (package
11814 (name "python-kivy")
11815 (version "1.9.1")
11816 (source
11817 (origin
11818 (method url-fetch)
11819 (uri (pypi-uri "kivy" version))
11820 (file-name (string-append name "-" version ".tar.gz"))
11821 (sha256
11822 (base32
11823 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11824 (build-system python-build-system)
11825 (arguments
11826 `(#:tests? #f ; Tests require many optional packages
11827 #:phases
11828 (modify-phases %standard-phases
11829 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11830 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11831 (lambda* (#:key inputs #:allow-other-keys)
11832 (setenv "KIVY_SDL2_PATH"
11833 (string-append (assoc-ref inputs "sdl-union")
11834 "/include/SDL2"))
11835 #t)))))
11836 (native-inputs
f2516de2
HG
11837 `(("pkg-config" ,pkg-config)
11838 ("python-cython" ,python-cython)))
6eb7af2a 11839 (inputs
f2516de2 11840 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
11841 ("mesa" ,mesa)
11842 ("sdl-union"
11843 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11844 (home-page "http://kivy.org")
11845 (synopsis
11846 "Multitouch application framework")
11847 (description
11848 "A software library for rapid development of
11849hardware-accelerated multitouch applications.")
11850 (license license:expat)))
11851
11852(define-public python2-kivy
11853 (package-with-python2 python-kivy))
11854
11855(define-public python-kivy-next
11856 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11857 (revision "1"))
11858 (package (inherit python-kivy)
11859 (name "python-kivy-next")
d80a71eb 11860 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
11861 (string-take commit 7)))
11862 (source
11863 (origin
11864 (method git-fetch)
11865 (uri (git-reference
11866 (url "https://github.com/kivy/kivy")
11867 (commit commit)))
11868 (file-name (string-append name "-" version "-checkout"))
11869 (sha256
11870 (base32
11871 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11872
11873(define-public python2-kivy-next
11874 (package-with-python2 python-kivy-next))
8794bd8b
DC
11875
11876(define-public python-binaryornot
11877 (package
11878 (name "python-binaryornot")
11879 (version "0.4.0")
11880 (source (origin
11881 (method url-fetch)
11882 (uri (pypi-uri "binaryornot" version))
11883 (sha256
11884 (base32
11885 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11886 (build-system python-build-system)
f22efa01 11887 (propagated-inputs
8794bd8b
DC
11888 `(("python-chardet" ,python-chardet)
11889 ("python-hypothesis" ,python-hypothesis)))
11890 (home-page "https://github.com/audreyr/binaryornot")
11891 (synopsis "Package to check if a file is binary or text")
11892 (description "Ultra-lightweight pure Python package to check if a file is
11893binary or text.")
11894 (license license:bsd-3)
11895 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11896
11897(define-public python2-binaryornot
11898 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11899 (package (inherit base)
f22efa01 11900 (propagated-inputs
8794bd8b 11901 `(("python2-enum34" ,python2-enum34)
f22efa01 11902 ,@(package-propagated-inputs base))))))
a9ac982a
DC
11903
11904(define-public python-nltk
11905 (package
11906 (name "python-nltk")
11907 (version "3.2.1")
11908 (source (origin
11909 (method url-fetch)
11910 (uri (pypi-uri "nltk" version))
11911 (sha256
11912 (base32
11913 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11914 (build-system python-build-system)
59f12985
LF
11915 (arguments
11916 '(;; The tests require some extra resources to be downloaded.
11917 ;; TODO Try packaging these resources.
11918 #:tests? #f))
a9ac982a
DC
11919 (home-page "http://nltk.org/")
11920 (synopsis "Natural Language Toolkit")
11921 (description "It provides interfaces to over 50 corpora and lexical
11922resources such as WordNet, along with a suite of text processing libraries
11923for classification, tokenization, stemming, tagging, parsing, and semantic
11924reasoning, wrappers for natural language processing libraries.")
f210e944 11925 (license license:asl2.0)))
a9ac982a
DC
11926
11927(define-public python2-nltk
f210e944 11928 (package-with-python2 python-nltk))
691cd90d
DC
11929
11930(define-public python-pymongo
11931 (package
11932 (name "python-pymongo")
11933 (version "3.3.0")
11934 (source (origin
11935 (method url-fetch)
11936 (uri (pypi-uri "pymongo" version))
11937 (sha256
11938 (base32
11939 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
11940 (build-system python-build-system)
f22efa01 11941 (propagated-inputs
691cd90d
DC
11942 `(("python-certifi" ,python-certifi)))
11943 (home-page "http://github.com/mongodb/mongo-python-driver")
11944 (synopsis "Python driver for MongoDB")
11945 (description "Python driver for MongoDB.")
f210e944 11946 (license license:asl2.0)))
691cd90d
DC
11947
11948(define-public python2-pymongo
f210e944 11949 (package-with-python2 python-pymongo))
6a6c9d43
DC
11950
11951(define-public python-sh
11952 (package
11953 (name "python-sh")
11954 (version "1.11")
11955 (source (origin
11956 (method url-fetch)
11957 (uri (pypi-uri "sh" version))
11958 (sha256
11959 (base32
11960 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
11961 (build-system python-build-system)
11962 (arguments
11963 `(#:tests? #f)) ; no tests
11964 (home-page "https://github.com/amoffat/sh")
11965 (synopsis "Python subprocess interface")
11966 (description "Abstracts process invocation by providing a function
11967interface for programs.")
f210e944 11968 (license license:expat)))
6a6c9d43
DC
11969
11970(define-public python2-sh
f210e944 11971 (package-with-python2 python-sh))
05b59190 11972
25702397
EF
11973(define-public python-consul
11974 (package
11975 (name "python-consul")
11976 (version "0.6.1")
11977 (source
11978 (origin
11979 (method url-fetch)
11980 (uri (pypi-uri "python-consul" version))
11981 (sha256
11982 (base32
11983 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
11984 (build-system python-build-system)
11985 (native-inputs
fd1d6de7
HG
11986 `(("python-pytest" ,python-pytest)))
11987 (propagated-inputs
11988 `(("python-requests" ,python-requests)
25702397
EF
11989 ("python-six" ,python-six)))
11990 (home-page "https://github.com/cablehead/python-consul")
11991 (synopsis "Python client for Consul")
11992 (description
11993 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
11994discovery, monitoring and configuration.")
11995 (license license:expat)))
11996
11997(define-public python2-consul
f210e944 11998 (package-with-python2 python-consul))
25702397 11999
05b59190
DC
12000(define-public python-schematics
12001 (package
12002 (name "python-schematics")
12003 (version "1.1.1")
12004 (source
12005 (origin
12006 (method url-fetch)
12007 (uri (string-append
12008 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
12009 (file-name (string-append name "-" version ".tar.gz"))
12010 (sha256
12011 (base32
12012 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
12013 (build-system python-build-system)
f22efa01 12014 (propagated-inputs
05b59190
DC
12015 `(("python-six" ,python-six)))
12016 (arguments
12017 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
12018 ; version requirements (eg python-coveralls)
12019 (home-page "https://github.com/schematics/schematics")
12020 (synopsis "Python Data Structures for Humans")
12021 (description "Python Data Structures for Humans.")
f210e944 12022 (license license:bsd-3)))
05b59190
DC
12023
12024(define-public python2-schematics
f210e944 12025 (package-with-python2 python-schematics))
d6907ff7
DC
12026
12027(define-public python-publicsuffix
12028 (package
12029 (name "python-publicsuffix")
12030 (version "1.1.0")
12031 (source (origin
12032 (method url-fetch)
12033 (uri (pypi-uri "publicsuffix" version))
12034 (sha256
12035 (base32
12036 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
12037 (build-system python-build-system)
12038 (arguments
12039 `(#:tests? #f)) ; tests use the internet
12040 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
12041 (synopsis "Get suffix for a domain name")
12042 (description "Get a public suffix for a domain name using the Public Suffix
12043List.")
f210e944 12044 (license license:expat)))
d6907ff7
DC
12045
12046(define-public python2-publicsuffix
f210e944 12047 (package-with-python2 python-publicsuffix))
b2319996
DC
12048
12049(define-public python-publicsuffix2
12050 (package
12051 (name "python-publicsuffix2")
12052 (version "2.20160621")
12053 (source
12054 (origin
12055 (method url-fetch)
12056 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12057 (sha256
12058 (base32
12059 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
12060 (build-system python-build-system)
10797a0a
LF
12061 (arguments
12062 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
12063 (home-page "https://github.com/pombredanne/python-publicsuffix2")
12064 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
12065 (description "Get a public suffix for a domain name using the Public Suffix
12066List. Forked from and using the same API as the publicsuffix package.")
f210e944 12067 (license (list license:expat license:mpl2.0))))
b2319996
DC
12068
12069(define-public python2-publicsuffix2
f210e944 12070 (package-with-python2 python-publicsuffix2))
81f1515d
DC
12071
12072(define-public python-url
12073 (package
12074 (name "python-url")
12075 (version "0.2.0")
12076 (source (origin
12077 (method url-fetch)
12078 (uri (pypi-uri "url" version))
12079 (sha256
12080 (base32
12081 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
12082 (build-system python-build-system)
f22efa01 12083 (propagated-inputs
81f1515d
DC
12084 `(("python-publicsuffix" ,python-publicsuffix)))
12085 (native-inputs
12086 `(("python-coverage" ,python-coverage)
12087 ("python-nose" ,python-nose)))
12088 (arguments
12089 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
12090 (home-page "http://github.com/seomoz/url-py")
12091 (synopsis "URL Parsing")
12092 (description "Library for parsing urls.")
12093 (license license:expat)
12094 (properties `((python2-variant . ,(delay python2-url))))))
12095
12096(define-public python2-url
12097 (let ((base (package-with-python2 (strip-python2-variant python-url))))
12098 (package (inherit base)
f22efa01 12099 (propagated-inputs
f210e944 12100 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
12101
12102(define-public python-freezegun
12103 (package
12104 (name "python-freezegun")
0c315fb3 12105 (version "0.3.8")
974ee2c1
TS
12106 (source
12107 (origin
12108 (method url-fetch)
12109 (uri (pypi-uri "freezegun" version))
12110 (sha256
12111 (base32
0c315fb3 12112 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
974ee2c1
TS
12113 (build-system python-build-system)
12114 (native-inputs
12115 `(("python-mock" ,python-mock)
12116 ("python-nose" ,python-nose)
4e096968 12117 ("python-coverage" ,python-coverage)))
f22efa01 12118 (propagated-inputs
4e096968 12119 `(("python-six" ,python-six)
22d7360b 12120 ("python-dateutil" ,python-dateutil)))
974ee2c1
TS
12121 (arguments
12122 `(#:phases (modify-phases %standard-phases
12123 ;; The tests are normally executed via `make test`, but the PyPi
12124 ;; package does not include the Makefile.
12125 (replace 'check
12126 (lambda _
12127 (zero? (system* "nosetests" "./tests/")))))))
12128 (home-page "https://github.com/spulec/freezegun")
12129 (synopsis "Test utility for mocking the datetime module")
12130 (description
12131 "FreezeGun is a library that allows your python tests to travel through
12132time by mocking the datetime module.")
12133 (license license:asl2.0)))
12134
12135(define-public python2-freezegun
f210e944
HG
12136 (package-with-python2 python-freezegun))
12137
dddcb25c
MB
12138
12139(define-public python-odfpy
12140 (package
12141 (name "python-odfpy")
12142 (version "1.3.3")
12143 (source (origin
12144 (method url-fetch)
12145 (uri (pypi-uri "odfpy" version))
12146 (sha256
12147 (base32
12148 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
12149 (arguments
12150 `(#:modules ((srfi srfi-1)
12151 (guix build python-build-system)
12152 (guix build utils))
12153 #:phases
12154 (modify-phases %standard-phases
12155 (replace 'check
12156 ;; The test runner invokes python2 and python3 for test*.py.
12157 ;; To avoid having both in inputs, we replicate it here.
12158 (lambda _
12159 (every (lambda (test-file)
12160 (zero? (system* "python" test-file)))
12161 (find-files "tests" "^test.*\\.py$")))))))
12162 (build-system python-build-system)
12163 (home-page "https://github.com/eea/odfpy")
12164 (synopsis "Python API and tools to manipulate OpenDocument files")
12165 (description "Collection of libraries and utility programs written in
12166Python to manipulate OpenDocument 1.2 files.")
12167 (license
12168 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
12169 ;; number of files with other licenses.
12170 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
12171
12172(define-public python2-odfpy
12173 (package-with-python2 python-odfpy))
b30565bd
MB
12174
12175(define-public python-cachecontrol
12176 (package
12177 (name "python-cachecontrol")
12178 (version "0.11.6")
12179 (source
12180 (origin
12181 (method url-fetch)
12182 ;; Pypi does not have tests.
12183 (uri (string-append
12184 "https://github.com/ionrock/cachecontrol/archive/v"
12185 version ".tar.gz"))
12186 (file-name (string-append name "-" version ".tar.gz"))
12187 (sha256
12188 (base32
12189 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
12190 (build-system python-build-system)
12191 (arguments
12192 `(#:phases
12193 (modify-phases %standard-phases
12194 (replace 'check
12195 (lambda _
12196 ;; Drop test that requires internet access.
12197 (delete-file "tests/test_regressions.py")
12198 (setenv "PYTHONPATH"
12199 (string-append (getcwd) "/build/lib:"
12200 (getenv "PYTHONPATH")))
12201 (zero? (system* "py.test" "-vv")))))))
12202 (native-inputs
12203 `(("python-pytest" ,python-pytest)
12204 ("python-redis" ,python-redis)
12205 ("python-webtest" ,python-webtest)
12206 ("python-mock" ,python-mock)))
12207 (propagated-inputs
12208 `(("python-requests" ,python-requests)
12209 ("python-lockfile" ,python-lockfile)))
12210 (home-page "https://github.com/ionrock/cachecontrol")
12211 (synopsis "The httplib2 caching algorithms for use with requests")
12212 (description "CacheControl is a port of the caching algorithms in
12213@code{httplib2} for use with @code{requests} session objects.")
f210e944 12214 (license license:asl2.0)))
b30565bd
MB
12215
12216(define-public python2-cachecontrol
f210e944 12217 (package-with-python2 python-cachecontrol))
243db824
DM
12218
12219(define-public python-lit
12220 (package
12221 (name "python-lit")
12222 (version "0.5.0")
12223 (source
12224 (origin
12225 (method url-fetch)
12226 (uri (pypi-uri "lit" version))
12227 (sha256
12228 (base32
12229 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
12230 (build-system python-build-system)
12231 (home-page "http://llvm.org/")
12232 (synopsis "LLVM Software Testing Tool")
12233 (description "@code{lit} is a portable tool for executing LLVM and Clang
12234style test suites, summarizing their results, and providing indication of
12235failures.")
f210e944 12236 (license license:ncsa)))
243db824
DM
12237
12238(define-public python2-lit
f210e944 12239 (package-with-python2 python-lit))
66f95b20
MB
12240
12241(define-public python-pytest-pep8
12242 (package
12243 (name "python-pytest-pep8")
12244 (version "1.0.6")
12245 (source (origin
12246 (method url-fetch)
12247 (uri (pypi-uri "pytest-pep8" version))
12248 (sha256
12249 (base32
12250 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
12251 (build-system python-build-system)
12252 (arguments
b41a05ce 12253 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
12254 (native-inputs
12255 `(("python-pytest" ,python-pytest)))
12256 (propagated-inputs
12257 `(("python-pep8" ,python-pep8)))
12258 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
12259 (synopsis "Py.test plugin to check PEP8 requirements")
12260 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 12261 (license license:expat)))
66f95b20
MB
12262
12263(define-public python2-pytest-pep8
f210e944 12264 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
12265
12266(define-public python-pytest-flakes
12267 (package
12268 (name "python-pytest-flakes")
12269 (version "1.0.1")
12270 (source (origin
12271 (method url-fetch)
12272 (uri (pypi-uri "pytest-flakes" version))
12273 (sha256
12274 (base32
12275 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
12276 (build-system python-build-system)
12277 (arguments
b41a05ce 12278 `(#:phases
df94a6b5
MB
12279 (modify-phases %standard-phases
12280 (delete 'check)
12281 (add-after 'install 'check
05c2fd36
HG
12282 (lambda* (#:key outputs inputs #:allow-other-keys)
12283 ;; It's easier to run tests after install.
12284 ;; Make installed package available for running the tests
12285 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
12286 (zero? (system* "py.test" "-vv")))))))
12287 (native-inputs
12288 `(("python-coverage" ,python-coverage)
12289 ("python-pytest" ,python-pytest)
12290 ("python-pytest-cache" ,python-pytest-cache)
12291 ("python-pytest-pep8" ,python-pytest-pep8)))
12292 (propagated-inputs
12293 `(("python-pyflakes" ,python-pyflakes)))
12294 (home-page "https://github.com/fschulze/pytest-flakes")
12295 (synopsis "Py.test plugin to check source code with pyflakes")
12296 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 12297 (license license:expat)))
df94a6b5
MB
12298
12299(define-public python2-pytest-flakes
f210e944 12300 (package-with-python2 python-pytest-flakes))
5467ea62
MB
12301
12302(define-public python-natsort
12303 (package
12304 (name "python-natsort")
12305 (version "5.0.1")
12306 (source (origin
12307 (method url-fetch)
12308 (uri (pypi-uri "natsort" version))
12309 (sha256
12310 (base32
12311 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
12312 (build-system python-build-system)
12313 (arguments
12314 `(#:phases
12315 (modify-phases %standard-phases
12316 (add-before 'check 'set-cachedir
12317 ;; Tests require write access to $HOME by default
12318 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
12319 (native-inputs
12320 `(("python-hypothesis" ,python-hypothesis)
12321 ("python-pytest-cache" ,python-pytest-cache)
12322 ("python-pytest-cov" ,python-pytest-cov)
12323 ("python-pytest-flakes" ,python-pytest-flakes)
12324 ("python-pytest-pep8" ,python-pytest-pep8)))
12325 (propagated-inputs ; TODO: Add python-fastnumbers.
12326 `(("python-pyicu" ,python-pyicu)))
12327 (home-page "https://github.com/SethMMorton/natsort")
12328 (synopsis "Natural sorting for python and shell")
12329 (description
12330 "Natsort lets you apply natural sorting on lists instead of
12331lexicographical. If you use the built-in @code{sorted} method in python
12332on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
12333returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
12334function @code{natsorted} that identifies numbers and sorts them separately
12335from strings. It can also sort version numbers, real numbers, mixed types
12336and more, and comes with a shell command @command{natsort} that exposes this
12337functionality in the command line.")
12338 (license license:expat)
12339 (properties `((python2-variant . ,(delay python2-natsort))))))
12340
12341(define-public python2-natsort
12342 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
12343 (package (inherit base)
12344 (native-inputs
00e10c6e 12345 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
12346 ("python2-mock" ,python2-mock)
12347 ("python2-enum34" ,python2-enum34)
12348 ,@(package-native-inputs base))))))
4efb9c54
SR
12349
12350(define-public python-glances
12351 (package
12352 (name "python-glances")
12353 (version "2.7.1")
12354 (source
12355 (origin
12356 (method url-fetch)
12357 (uri (pypi-uri "Glances" version))
12358 (sha256
12359 (base32
12360 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
12361 (build-system python-build-system)
f22efa01 12362 (propagated-inputs
4efb9c54
SR
12363 `(("python-psutil" ,python-psutil)))
12364 (home-page
12365 "https://github.com/nicolargo/glances")
12366 (synopsis
12367 "A cross-platform curses-based monitoring tool")
12368 (description
12369 "Glances is a curses-based monitoring tool for a wide variety of platforms.
12370Glances uses the PsUtil library to get information from your system. It monitors
12371CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 12372 (license license:lgpl3+)))
4efb9c54
SR
12373
12374(define-public python2-glances
f210e944 12375 (package-with-python2 python-glances))
05b7a593
EF
12376
12377(define-public python-graphql-core
12378 (package
12379 (name "python-graphql-core")
12380 (version "0.5.3")
12381 (source
12382 (origin
12383 (method url-fetch)
12384 (uri (pypi-uri "graphql-core" version))
12385 (sha256
12386 (base32
12387 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
12388 (build-system python-build-system)
12389 (arguments
326f8285
LF
12390 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
12391 #:phases
05b7a593
EF
12392 (modify-phases %standard-phases
12393 (add-after 'unpack 'patch-hardcoded-version
12394 (lambda _ (substitute*
12395 "setup.py"
12396 (("'gevent==1.1rc1'") "'gevent'"))
12397 #t)))))
12398 (native-inputs
12399 `(("python-gevent" ,python-gevent)
12400 ("python-mock" ,python-mock)
12401 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 12402 (propagated-inputs
05b7a593
EF
12403 `(("python-promise" ,python-promise)
12404 ("python-six" ,python-six)))
12405 (home-page "https://github.com/graphql-python/graphql-core")
12406 (synopsis "GraphQL implementation for Python")
12407 (description
12408 "GraphQL implementation for Python. GraphQL is a data query language and
12409runtime designed and used to request and deliver data to mobile and web apps.
12410This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
12411to Python.")
05b7a593
EF
12412 (license license:expat)))
12413
12414(define-public python2-graphql-core
f210e944 12415 (package-with-python2 python-graphql-core))
7ee51575
EF
12416
12417(define-public python-graphql-relay
12418 (package
12419 (name "python-graphql-relay")
b13a5b4d 12420 (version "0.4.5")
7ee51575
EF
12421 (source
12422 (origin
12423 (method url-fetch)
12424 (uri (pypi-uri "graphql-relay" version))
12425 (sha256
12426 (base32
b13a5b4d 12427 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
7ee51575
EF
12428 (build-system python-build-system)
12429 (native-inputs
12430 `(("python-pytest" ,python-pytest)))
f22efa01 12431 (propagated-inputs
7ee51575
EF
12432 `(("python-graphql-core" ,python-graphql-core)
12433 ("python-promise" ,python-promise)
12434 ("python-six" ,python-six)))
12435 (home-page "https://github.com/graphql-python/graphql-relay-py")
12436 (synopsis "Relay implementation for Python")
12437 (description
12438 "This is a library to allow the easy creation of Relay-compliant servers
12439using the GraphQL Python reference implementation of a GraphQL server. It
12440should be noted that the code is a exact port of the original
12441@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
12442from Facebook.")
7ee51575
EF
12443 (license license:expat)))
12444
12445(define-public python2-graphql-relay
f210e944 12446 (package-with-python2 python-graphql-relay))
ddc63a56
EF
12447
12448(define-public python-graphene
12449 (package
12450 (name "python-graphene")
12451 (version "0.10.2")
12452 (source
12453 (origin
12454 (method url-fetch)
12455 (uri (pypi-uri "graphene" version))
12456 (sha256
12457 (base32
12458 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
12459 (build-system python-build-system)
12460 (native-inputs
12461 `(("python-django-filter" ,python-django-filter)
12462 ("python-mock" ,python-mock)
12463 ("python-psycopg2" ,python-psycopg2)
12464 ("python-pytest-django" ,python-pytest-django)
12465 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 12466 (propagated-inputs
ddc63a56
EF
12467 `(("python-graphql-core" ,python-graphql-core)
12468 ("python-graphql-relay" ,python-graphql-relay)
12469 ("python-iso8601" ,python-iso8601)
12470 ("python-promise" ,python-promise)
12471 ("python-six" ,python-six)))
12472 (home-page "http://graphene-python.org/")
12473 (synopsis "GraphQL Framework for Python")
12474 (description
12475 "Graphene is a Python library for building GraphQL schemas/types.
12476A GraphQL schema describes your data model, and provides a GraphQL server
12477with an associated set of resolve methods that know how to fetch data.")
12478 (properties `((python2-variant . ,(delay python2-graphene))))
12479 (license license:expat)))
12480
12481(define-public python2-graphene
12482 (let ((base (package-with-python2
12483 (strip-python2-variant python-graphene))))
12484 (package (inherit base)
12485 (native-inputs
00e10c6e 12486 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 12487 ,@(package-native-inputs base))))))
d488d5d6
EF
12488
12489(define-public python-nautilus
12490 (package
12491 (name "python-nautilus")
12492 (version "0.4.9")
12493 (source
12494 (origin
12495 (method url-fetch)
12496 (uri (pypi-uri "nautilus" version))
12497 (sha256
12498 (base32
12499 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
12500 (build-system python-build-system)
12501 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 12502 (propagated-inputs
d488d5d6
EF
12503 `(("python-bcrypt" ,python-bcrypt)
12504 ("python-click" ,python-click)
12505 ("python-consul" ,python-consul)
d488d5d6
EF
12506 ("python-graphene" ,python-graphene)
12507 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
12508 ("python-peewee" ,python-peewee)
12509 ("python-pika" ,python-pika)
d488d5d6
EF
12510 ("python-tornado" ,python-tornado)
12511 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
12512 (native-inputs
12513 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
12514 (home-page "https://github.com/AlecAivazis/nautilus")
12515 (synopsis "Library for creating microservice applications")
12516 (description
12517 "Nautilus is a framework for flux based microservices that looks to
12518provide extendible implementations of common aspects of a cloud so that you can
12519focus on building massively scalable web applications.")
12520 (license license:expat)))
94cffc63 12521
89cd988b
DM
12522(define-public python-snowballstemmer
12523 (package
12524 (name "python-snowballstemmer")
12525 (version "1.2.1")
12526 (source (origin
1bd858cc
MB
12527 (method url-fetch)
12528 (uri (pypi-uri "snowballstemmer" version))
12529 (sha256
12530 (base32
12531 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
89cd988b
DM
12532 (build-system python-build-system)
12533 (arguments
12534 `(;; No tests exist
12535 #:tests? #f))
12536 (home-page "https://github.com/shibukawa/snowball_py")
12537 (synopsis "Snowball stemming library collection for Python")
12538 (description "This package provides 16 word stemmer algorithms generated
12539from Snowball algorithms. It includes the 15 original ones plus the Poerter
12540English stemmer.")
12541 (license license:bsd-3)))
12542
12543(define-public python2-snowballstemmer
12544 (package-with-python2 python-snowballstemmer))
12545
754bfd70
DM
12546(define-public python-sphinx-cloud-sptheme
12547 (package
12548 (name "python-sphinx-cloud-sptheme")
12549 (version "1.7.1")
12550 (source (origin
1bd858cc
MB
12551 (method url-fetch)
12552 (uri (pypi-uri "cloud_sptheme" version))
12553 (sha256
12554 (base32
12555 "0zm9ap4p5dzln8f1m2immadaxv2xpg8jg4w53y52rhfl7pdb58vy"))))
12556 (build-system python-build-system)
a31e2f1a
MB
12557 ;; FIXME: The 'pypi' release archive does not contain tests.
12558 (arguments '(#:tests? #f))
1bd858cc
MB
12559 (native-inputs
12560 `(("python-sphinx" ,python-sphinx)))
12561 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
12562 (synopsis "'Cloud' theme for Sphinx documenter")
12563 (description "This package contains the \"Cloud\" theme for Sphinx and some
754bfd70 12564related extensions.")
1bd858cc 12565 (license license:bsd-3)))
754bfd70
DM
12566
12567(define-public python2-sphinx-cloud-sptheme
12568 (package-with-python2 python-sphinx-cloud-sptheme))
12569
807a5b32
DM
12570(define-public python-sphinx-alabaster-theme
12571 (package
12572 (name "python-sphinx-alabaster-theme")
12573 (version "0.7.9")
1bd858cc
MB
12574 (source (origin
12575 (method url-fetch)
12576 (uri (pypi-uri "alabaster" version))
12577 (sha256
12578 (base32
12579 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
807a5b32
DM
12580 (build-system python-build-system)
12581 (propagated-inputs
12582 `(("python-pygments" ,python-pygments)))
12583 (home-page "https://alabaster.readthedocs.io/")
12584 (synopsis "Configurable sidebar-enabled Sphinx theme")
12585 (description "Alabaster is a visually (c)lean, responsive, configurable
12586theme for the Sphinx documentation system. It's the default theme of Sphinx.")
12587 (license license:bsd-3)))
12588
12589(define-public python2-sphinx-alabaster-theme
12590 (package-with-python2 python-sphinx-alabaster-theme))
12591
66d3f50a
LF
12592(define-public python-betamax
12593 (package
12594 (name "python-betamax")
12595 (version "0.8.0")
12596 (source
12597 (origin
12598 (method url-fetch)
12599 (uri (pypi-uri "betamax" version))
12600 (sha256
12601 (base32
12602 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
12603 (build-system python-build-system)
12604 (arguments
12605 '(;; Many tests fail because they require networking.
12606 #:tests? #f))
c415f763 12607 (propagated-inputs
66d3f50a
LF
12608 `(("python-requests" ,python-requests)))
12609 (home-page "https://github.com/sigmavirus24/betamax")
12610 (synopsis "Record HTTP interactions with python-requests")
12611 (description "Betamax will record your test suite's HTTP interactions and
12612replay them during future tests. It is designed to work with python-requests.")
f210e944 12613 (license license:expat)))
66d3f50a
LF
12614
12615(define-public python2-betamax
f210e944 12616 (package-with-python2 python-betamax))
ca0635b4 12617
94cffc63
LF
12618(define-public python-s3transfer
12619 (package
12620 (name "python-s3transfer")
1b5ea092 12621 (version "0.1.10")
94cffc63
LF
12622 (source (origin
12623 (method url-fetch)
12624 (uri (pypi-uri "s3transfer" version))
12625 (sha256
12626 (base32
1b5ea092 12627 "1h8g9bknvxflxkpbnxyfxmk8pvgykbbk9ljdvhqh6z4vjc2926ms"))))
94cffc63 12628 (build-system python-build-system)
fad8bf97
LF
12629 (arguments
12630 `(#:phases
12631 (modify-phases %standard-phases
12632 (replace 'check
12633 (lambda _
12634 ;; 7 of the 'integration' tests require network access or login
12635 ;; credentials.
12636 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 12637 (native-inputs
fad8bf97
LF
12638 `(("python-docutils" ,python-docutils)
12639 ("python-mock" ,python-mock)
12640 ("python-nose" ,python-nose)))
f22efa01 12641 (propagated-inputs
94cffc63
LF
12642 `(("python-botocore" ,python-botocore)))
12643 (synopsis "Amazon S3 Transfer Manager")
12644 (description "S3transfer is a Python library for managing Amazon S3
12645transfers.")
12646 (home-page "https://github.com/boto/s3transfer")
12647 (license license:asl2.0)
12648 (properties `((python2-variant . ,(delay python2-s3transfer))))))
12649
12650(define-public python2-s3transfer
12651 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
12652 (package
12653 (inherit base)
12654 (native-inputs
12655 `(("python2-futures" ,python2-futures)
94cffc63 12656 ,@(package-native-inputs base))))))
8ab59181
HG
12657
12658(define-public python-setproctitle
12659(package
12660 (name "python-setproctitle")
12661 (version "1.1.10")
12662 (source
12663 (origin
12664 (method url-fetch)
12665 (uri (pypi-uri "setproctitle" version))
12666 (sha256
12667 (base32
12668 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
12669 (build-system python-build-system)
12670 (arguments
12671 '(#:phases
12672 (modify-phases %standard-phases
12673 (add-before 'check 'patch-Makefile
12674 ;; Stricly this is only required for the python2 variant.
12675 ;; But adding a phase in an inherited package seems to be
12676 ;; cumbersum. So we patch even for python3.
12677 (lambda _
12678 (let ((nose (assoc-ref %build-inputs "python2-nose")))
12679 (when nose
12680 (substitute* "Makefile"
12681 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
12682 (string-append nose "/bin/nosetests "))))
12683 #t)))
12684 (replace 'check
12685 (lambda _
12686 (setenv "PYTHON" (or (which "python3") (which "python")))
12687 (setenv "PYCONFIG" (or (which "python3-config")
12688 (which "python-config")))
12689 (setenv "CC" "gcc")
12690 ;; No need to extend PYTHONPATH to find the built package, since
12691 ;; the Makefile will build anyway
12692 (zero? (system* "make" "check")))))))
12693 (native-inputs
12694 `(("procps" ,procps))) ; required for tests
12695 (home-page
12696 "https://github.com/dvarrazzo/py-setproctitle")
12697 (synopsis
12698 "Setproctitle implementation for Python to customize the process title")
12699 (description "The library allows a process to change its title (as displayed
12700by system tools such as ps and top).
12701
12702Changing the title is mostly useful in multi-process systems, for
12703example when a master process is forked: changing the children's title
12704allows to identify the task each process is busy with. The technique
12705is used by PostgreSQL and the OpenSSH Server for example.")
12706 (license license:bsd-3)
12707 (properties `((python2-variant . ,(delay python2-setproctitle))))))
12708
12709(define-public python2-setproctitle
12710 (let ((base (package-with-python2
12711 (strip-python2-variant python-setproctitle))))
12712 (package
12713 (inherit base)
12714 (native-inputs `(("python2-nose" ,python2-nose)
12715 ,@(package-native-inputs base))))))
162e42d8
HG
12716
12717(define-public python-validictory
12718 (package
12719 (name "python-validictory")
12720 (version "1.0.1")
12721 (source
12722 (origin
12723 (method url-fetch)
12724 (uri (pypi-uri "validictory" version))
12725 (sha256
12726 (base32
12727 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
12728 (build-system python-build-system)
12729 (arguments
12730 '(#:phases
12731 (modify-phases %standard-phases
12732 (add-after 'unpack 'bootstrap
12733 ;; Move the tests out of the package directory to avoid
12734 ;; packaging them.
12735 (lambda* _
12736 (rename-file "validictory/tests" "tests")
12737 (delete-file "tests/__init__.py")))
12738 (replace 'check
12739 (lambda _
12740 ;; Extend PYTHONPATH so the built package will be found.
12741 (setenv "PYTHONPATH"
12742 (string-append (getcwd) "/build/lib:"
12743 (getenv "PYTHONPATH")))
12744 (zero? (system* "py.test" "-vv" )))))))
12745 (native-inputs
12746 `(("python-pytest" ,python-pytest)))
12747 (home-page
12748 "https://github.com/jamesturk/validictory")
12749 (synopsis "General purpose Python data validator")
12750 (description "It allows validation of arbitrary Python data structures.
12751
12752The schema format is based on the JSON Schema
12753proposal (http://json-schema.org), so combined with json the library is also
12754useful as a validator for JSON data.")
f210e944 12755 (license license:expat)))
162e42d8
HG
12756
12757(define-public python2-validictory
f210e944 12758 (package-with-python2 python-validictory))
0990edfe
DM
12759
12760(define-public python-aniso8601
12761 (package
12762 (name "python-aniso8601")
12763 (version "1.1.0")
12764 (source
12765 (origin
12766 (method url-fetch)
12767 (uri (pypi-uri "aniso8601" version))
12768 (sha256
12769 (base32
12770 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
12771 (build-system python-build-system)
12772 (propagated-inputs
22d7360b 12773 `(("python-dateutil" ,python-dateutil)))
0990edfe
DM
12774 (home-page
12775 "https://bitbucket.org/nielsenb/aniso8601")
12776 (synopsis
12777 "Python library for parsing ISO 8601 strings")
12778 (description
12779 "This package contains a library for parsing ISO 8601 datetime strings.")
12780 (license license:bsd-3)))
999d964d
DM
12781
12782(define-public python-flask-restful
12783 (package
12784 (name "python-flask-restful")
12785 (version "0.3.5")
12786 (source
12787 (origin
12788 (method url-fetch)
12789 (uri (pypi-uri "Flask-RESTful" version))
12790 (sha256
12791 (base32
12792 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
12793 (build-system python-build-system)
12794 (propagated-inputs
12795 `(("python-aniso8601" ,python-aniso8601)
12796 ("python-flask" ,python-flask)
12797 ("python-pycrypto" ,python-pycrypto)
12798 ("python-pytz" ,python-pytz)))
12799 (native-inputs
12800 `(;; Optional dependency of Flask. Tests need it.
12801 ("python-blinker" ,python-blinker)
12802 ("python-mock" ,python-mock) ; For tests
12803 ("python-nose" ,python-nose) ; For tests
12804 ("python-sphinx" ,python-sphinx)))
12805 (home-page
12806 "https://www.github.com/flask-restful/flask-restful/")
12807 (synopsis
12808 "Flask module for creating REST APIs")
12809 (description
12810 "This package contains a Flask module for creating REST APIs.")
12811 (license license:bsd-3)))
31288222
DM
12812
12813(define-public python-flask-basicauth
12814 (package
12815 (name "python-flask-basicauth")
12816 (version "0.2.0")
12817 (source
12818 (origin
12819 (method url-fetch)
12820 (uri (pypi-uri "Flask-BasicAuth" version))
12821 (sha256
12822 (base32
12823 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
12824 (build-system python-build-system)
12825 (propagated-inputs
12826 `(("python-flask" ,python-flask)))
12827 (home-page
12828 "https://github.com/jpvanhal/flask-basicauth")
12829 (synopsis
12830 "HTTP basic access authentication for Flask")
12831 (description
12832 "This package provides HTTP basic access authentication for Flask.")
12833 (license license:bsd-3)))
903276d0
DM
12834
12835(define-public python-flask-sqlalchemy
12836 (package
12837 (name "python-flask-sqlalchemy")
12838 (version "2.1")
12839 (source
12840 (origin
12841 (method url-fetch)
12842 (uri (pypi-uri "Flask-SQLAlchemy" version))
12843 (sha256
12844 (base32
12845 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
12846 (build-system python-build-system)
12847 (propagated-inputs
12848 `(("python-flask" ,python-flask)
12849 ("python-sqlalchemy" ,python-sqlalchemy)))
12850 (home-page
12851 "http://github.com/mitsuhiko/flask-sqlalchemy")
12852 (synopsis
12853 "Module adding SQLAlchemy support to your Flask application")
12854 (description
12855 "This package adds SQLAlchemy support to your Flask application.")
12856 (license license:bsd-3)))
329b4b3b
LF
12857
12858(define-public python-pyev
12859 (package
12860 (name "python-pyev")
12861 (version "0.9.0")
12862 (source
12863 (origin
12864 (method url-fetch)
12865 (uri (pypi-uri "pyev" version))
12866 (sha256
12867 (base32
12868 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
12869 (build-system python-build-system)
12870 (arguments
12871 `(#:tests? #f ; no test suite
12872 #:phases
12873 (modify-phases %standard-phases
12874 (add-after 'unpack 'patch
12875 (lambda* (#:key inputs #:allow-other-keys)
12876 (let ((libev (string-append (assoc-ref inputs "libev")
12877 "/lib/libev.so.4")))
12878 (substitute* "setup.py"
12879 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
12880 (string-append "libev_dll_name = \"" libev "\"")))))))))
12881 (inputs
12882 `(("libev" ,libev)))
12883 (home-page "http://pythonhosted.org/pyev/")
12884 (synopsis "Python libev interface")
12885 (description "Pyev provides a Python interface to libev.")
12886 (license license:gpl3)))
12887
12888(define-public python2-pyev
12889 (package-with-python2 python-pyev))
45b4f127
DM
12890
12891(define-public python-imagesize
12892 (package
12893 (name "python-imagesize")
12894 (version "0.7.1")
12895 (source
12896 (origin
12897 (method url-fetch)
12898 (uri (pypi-uri "imagesize" version))
12899 (sha256
12900 (base32
12901 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12902 (build-system python-build-system)
9422c98a
LF
12903 (arguments
12904 '(;; Test files are not distributed on PyPi:
12905 ;; https://github.com/shibukawa/imagesize_py/issues/7
12906 #:tests? #f))
45b4f127
DM
12907 (home-page "https://github.com/shibukawa/imagesize_py")
12908 (synopsis "Gets image size of files in variaous formats in Python")
12909 (description
12910 "This package allows determination of image size from
12911PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 12912 (license license:expat)))
45b4f127
DM
12913
12914(define-public python2-imagesize
f210e944 12915 (package-with-python2 python-imagesize))
2f6dd9cd
AI
12916
12917(define-public python-axolotl-curve25519
12918 (package
12919 (name "python-axolotl-curve25519")
12920 (version "0.1")
12921 (source
12922 (origin
12923 (method git-fetch)
12924 (uri (git-reference
12925 (url "git://github.com/tgalal/python-axolotl-curve25519")
12926 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12927 (file-name (string-append name "-" version "-checkout"))
12928 (sha256
12929 (base32
12930 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12931 (build-system python-build-system)
12932 (arguments
12933 `(;; Prevent creation of the egg. This works around
12934 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12935 #:configure-flags '("--root=/")))
2f6dd9cd
AI
12936 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
12937 (synopsis "Python wrapper for curve25519 library")
12938 (description "This is a python wrapper for the curve25519 library
12939with ed25519 signatures. The C code was pulled from
12940libaxolotl-android. At the moment this wrapper is meant for use by
12941python-axolotl.")
12942 (license (list license:gpl3 ; Most files
683cdbf5 12943 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
12944
12945(define-public python2-axolotl-curve25519
12946 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
12947
12948(define-public python-axolotl
12949 (package
12950 (name "python-axolotl")
12951 (version "0.1.35")
12952 (source
12953 (origin
12954 (method url-fetch)
12955 (uri (string-append
12956 "https://github.com/tgalal/python-axolotl/archive/"
12957 version ".tar.gz"))
12958 (file-name (string-append name "-" version ".tar.gz"))
12959 (sha256
12960 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
12961 (build-system python-build-system)
12962 (arguments
12963 `(#:phases
12964 (modify-phases %standard-phases
12965 ;; Don't install tests
12966 (add-before 'install 'remove-tests
12967 (lambda _
12968 (for-each delete-file-recursively
12969 '("axolotl/tests" "build/lib/axolotl/tests"))
01fb9f66 12970 #t)))))
06ff0837
AI
12971 (propagated-inputs
12972 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
12973 ("python-dateutil" ,python-dateutil)
12974 ("python-protobuf" ,python-protobuf)
12975 ("python-pycrypto" ,python-pycrypto)))
12976 (home-page "https://github.com/tgalal/python-axolotl")
12977 (synopsis "Python port of libaxolotl-android")
12978 (description "This is a python port of libaxolotl-android. This
12979is a ratcheting forward secrecy protocol that works in synchronous and
12980asynchronous messaging environments.")
12981 (license license:gpl3)))
12982
12983(define-public python2-axolotl
12984 (package-with-python2 python-axolotl))
e2fca490
DM
12985
12986(define-public python-termstyle
12987 (package
12988 (name "python-termstyle")
12989 (version "0.1.11")
12990 (source
12991 (origin
12992 (method url-fetch)
12993 (uri (pypi-uri "termstyle" version))
12994 (sha256
12995 (base32
12996 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
12997 (build-system python-build-system)
7917a135
MB
12998 (arguments
12999 '(#:phases
13000 (modify-phases %standard-phases
13001 (replace 'check
13002 (lambda _
13003 (zero? (system* "python" "test3.py")))))))
e2fca490
DM
13004 (home-page "http://github.com/gfxmonk/termstyle")
13005 (synopsis "Console text coloring for Python")
13006 (description "This package provides console text coloring for Python.")
13007 (license license:bsd-3)))
1e6112d8
DM
13008
13009(define-public python-rednose
13010 (package
13011 (name "python-rednose")
13012 (version "1.2.1")
13013 (source
13014 (origin
13015 (method url-fetch)
13016 (uri (pypi-uri "rednose" version))
13017 (sha256
13018 (base32
13019 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
13020 (build-system python-build-system)
13021 (arguments
13022 `(#:phases
13023 (modify-phases %standard-phases
13024 (add-after 'unpack 'fix-deps
13025 (lambda _
13026 ;; See <https://github.com/JBKahn/rednose/issues/12>
13027 (substitute* "setup.py"
13028 (("python-termstyle") "termstyle"))
13029 #t)))))
13030 (propagated-inputs
13031 `(("python-colorama" ,python-colorama)
13032 ("python-termstyle" ,python-termstyle)))
13033 (native-inputs
13034 `(("python-six" ,python-six)
13035 ("python-nose" ,python-nose)))
13036 (home-page "https://github.com/JBKahn/rednose")
13037 (synopsis "Colored output for Python nosetests")
13038 (description "This package provides colored output for the
13039@command{nosetests} command of the Python Nose unit test framework.")
13040 (license license:bsd-3)))
0a7f17f0
DM
13041
13042(define-public python-flask-restplus
13043 (package
13044 (name "python-flask-restplus")
13045 (version "0.9.2")
13046 (source
13047 (origin
13048 (method url-fetch)
13049 (uri (pypi-uri "flask-restplus" version))
13050 (sha256
13051 (base32
13052 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
13053 (build-system python-build-system)
59f74825
MB
13054 (arguments
13055 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
13056 ;; #:phases
13057 ;; (modify-phases %standard-phases
13058 ;; (replace 'check
13059 ;; (lambda _
13060 ;; (zero? (system* "nosetests")))))))
0a7f17f0
DM
13061 (propagated-inputs
13062 `(("python-aniso8601" ,python-aniso8601)
13063 ("python-flask" ,python-flask)
13064 ("python-jsonschema" ,python-jsonschema)
13065 ("python-pytz" ,python-pytz)
13066 ("python-six" ,python-six)))
13067 (native-inputs
13068 `(("python-tzlocal" ,python-tzlocal)
13069 ("python-blinker" ,python-blinker)
13070 ("python-nose" ,python-nose)
13071 ("python-rednose" ,python-rednose)))
13072 (home-page "https://github.com/noirbizarre/flask-restplus")
13073 (synopsis "Framework for documented API development with Flask")
13074 (description "This package provides a framework for API development with
13075the Flask web framework in Python. It is similar to package
13076@code{python-flask-restful} but supports the @code{python-swagger}
13077documentation builder.")
13078 (license license:expat)))
1ed21519
DM
13079
13080(define-public python-sadisplay
13081 (package
13082 (name "python-sadisplay")
13083 (version "0.4.6")
13084 (source
13085 (origin
13086 (method url-fetch)
13087 (uri (pypi-uri "sadisplay" version))
13088 (sha256
13089 (base32
13090 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
13091 (build-system python-build-system)
13092 (propagated-inputs
13093 `(("python-sqlalchemy" ,python-sqlalchemy)))
13094 (native-inputs
13095 `(("python-nose" ,python-nose)))
13096 (home-page "https://bitbucket.org/estin/sadisplay")
13097 (synopsis "SQLAlchemy schema displayer")
13098 (description "This package provides a program to build Entity
13099Relationship diagrams from a SQLAlchemy model (or directly from the
13100database).")
13101 (license license:bsd-3)))
13102
13103(define-public python2-sadisplay
13104 (package-with-python2 python-sadisplay))
444a79b6
DM
13105
13106(define-public python-flask-restful-swagger
13107 (package
13108 (name "python-flask-restful-swagger")
13109 (version "0.19")
13110 (source
13111 (origin
13112 (method url-fetch)
13113 (uri (pypi-uri "flask-restful-swagger" version))
13114 (sha256
13115 (base32
13116 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
13117 (build-system python-build-system)
13118 (propagated-inputs
13119 `(("python-flask-restful" ,python-flask-restful)))
13120 (home-page "https://github.com/rantav/flask-restful-swagger")
13121 (synopsis "Extract Swagger specs from Flask-Restful projects")
13122 (description "This package lets you extract Swagger API documentation
13123specs from your Flask-Restful projects.")
13124 (license license:expat)))
13125
13126(define-public python2-flask-restful-swagger
13127 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
13128
13129(define-public python-argcomplete
13130 (package
13131 (name "python-argcomplete")
13132 (version "1.7.0")
13133 (source
13134 (origin
13135 (method url-fetch)
13136 (uri (pypi-uri "argcomplete" version))
13137 (sha256
13138 (base32
13139 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
13140 (build-system python-build-system)
80ce42bd
MB
13141 (native-inputs
13142 `(("python-pexpect" ,python-pexpect)
13143 ("tcsh" ,tcsh)))
6c2e82bc
TGR
13144 (home-page "https://github.com/kislyuk/argcomplete")
13145 (synopsis "Shell tab completion for Python argparse")
13146 (description "argcomplete provides extensible command line tab completion
13147of arguments and options for Python scripts using @code{argparse}. It's
13148particularly useful for programs with many options or sub-parsers that can
13149dynamically suggest completions; for example, when browsing resources over the
13150network.")
13151 (license license:asl2.0)))
13152
13153(define-public python2-argcomplete
13154 (package-with-python2 python-argcomplete))
361a2fcf
TGR
13155
13156(define-public python-xopen
13157 (package
13158 (name "python-xopen")
13159 (version "0.1.1")
13160 (source
13161 (origin
13162 (method url-fetch)
13163 (uri (pypi-uri "xopen" version))
13164 (sha256
13165 (base32
13166 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
13167 (file-name (string-append name "-" version ".tar.gz"))))
13168 (build-system python-build-system)
13169 (home-page "https://github.com/marcelm/xopen/")
13170 (synopsis "Open compressed files transparently")
13171 (description "This module provides an @code{xopen} function that works like
13172Python's built-in @code{open} function, but can also deal with compressed files.
13173Supported compression formats are gzip, bzip2 and, xz, and are automatically
13174recognized by their file extensions. The focus is on being as efficient as
13175possible on all supported Python versions.")
13176 (license license:expat)))
13177
13178(define-public python2-xopen
13179 (package-with-python2 python-xopen))
8d67610b
DM
13180
13181(define-public python2-cheetah
13182 (package
13183 (name "python2-cheetah")
13184 (version "2.4.4")
13185 (source
13186 (origin
13187 (method url-fetch)
13188 (uri (pypi-uri "Cheetah" version))
13189 (sha256
13190 (base32
13191 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
13192 (build-system python-build-system)
13193 (arguments
13194 `(#:python ,python-2))
13195 (propagated-inputs
13196 `(("python2-markdown" ,python2-markdown)))
13197 (home-page "https://pythonhosted.org/Cheetah/")
13198 (synopsis "Template engine")
13199 (description "Cheetah is a text-based template engine and Python code
13200generator.
13201
13202Cheetah can be used as a standalone templating utility or referenced as
13203a library from other Python applications. It has many potential uses,
13204but web developers looking for a viable alternative to ASP, JSP, PHP and
13205PSP are expected to be its principle user group.
13206
13207Features:
13208@enumerate
13209@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
13210 text-based format.
13211@item Cleanly separates content, graphic design, and program code.
13212@item Blends the power and flexibility of Python with a simple template language
13213 that non-programmers can understand.
13214@item Gives template writers full access to any Python data structure, module,
13215 function, object, or method in their templates.
13216@item Makes code reuse easy by providing an object-orientated interface to
13217 templates that is accessible from Python code or other Cheetah templates.
13218 One template can subclass another and selectively reimplement sections of it.
13219@item Provides a simple, yet powerful, caching mechanism that can dramatically
13220 improve the performance of a dynamic website.
13221@item Compiles templates into optimized, yet readable, Python code.
13222@end enumerate")
13223 (license (license:x11-style "file://LICENSE"))))
916aafa4 13224
d83d8722
DM
13225(define-public python-dulwich
13226 (package
13227 (name "python-dulwich")
13228 (version "0.16.3")
13229 (source
13230 (origin
13231 (method url-fetch)
13232 (uri (list (string-append "https://www.dulwich.io/releases/"
13233 "dulwich-" version ".tar.gz")
13234 (pypi-uri "dulwich" version)))
13235 (sha256
13236 (base32 "0fl47vzfgc3w3rmhn8naii905cjqcp0vc68iyvymxp7567hh6als"))))
13237 (build-system python-build-system)
13238 (arguments
13239 `(#:phases
13240 (modify-phases %standard-phases
13241 (add-before 'check 'fix-tests
13242 (lambda* (#:key inputs #:allow-other-keys)
13243 ;; The tests use Popen with a custom environment which doesn't
13244 ;; include PATH.
13245 (substitute* "dulwich/tests/compat/utils.py"
13246 (("'git'") (string-append "'"
13247 (which "git")
13248 "'")))
13249 (substitute* '("dulwich/tests/test_repository.py"
13250 "dulwich/tests/test_hooks.py")
13251 (("#!/bin/sh") (string-append "#!" (which "sh"))))
13252 (setenv "TEST_RUNNER" "unittest")
13253 (setenv "PYTHONHASHSEED" "random")
13254 #t)))))
13255 (propagated-inputs
13256 `(("python-fastimport" ,python-fastimport)))
13257 (native-inputs
13258 `(("python-mock" ,python-mock)
13259 ("python-geventhttpclient" ,python-geventhttpclient)
13260 ("git" ,git)))
13261 (home-page "https://www.dulwich.io/")
13262 (synopsis "Git implementation in Python")
13263 (description "Dulwich is an implementation of the Git file formats and
13264protocols written in pure Python.")
13265 ;; Can be used with either license.
13266 (license (list license:asl2.0 license:gpl2+))))
13267
13268(define-public python2-dulwich
13269 (package-with-python2 python-dulwich))
424b1ae7 13270
916aafa4
CZ
13271(define-public python-pbkdf2
13272 (package
13273 (name "python-pbkdf2")
13274 (version "1.3")
13275 (source
13276 (origin
13277 (method url-fetch)
13278 (uri (pypi-uri "pbkdf2" version))
13279 (sha256
13280 (base32
13281 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
13282 (build-system python-build-system)
fffcd8b8
MB
13283 (arguments
13284 '(#:phases
13285 (modify-phases %standard-phases
13286 (replace 'check
13287 (lambda _
13288 (setenv "PYTHONPATH"
13289 (string-append (getcwd) "/build/lib:"
13290 (getenv "PYTHONPATH")))
13291 (zero? (system* "python" "test/test_pbkdf2.py")))))))
916aafa4
CZ
13292 (propagated-inputs
13293 `(("python-pycrypto" ,python-pycrypto))) ; optional
13294 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
13295 (synopsis "Password-based key derivation")
13296 (description "This module implements the password-based key derivation
13297function, PBKDF2, specified in RSA PKCS#5 v2.0.
13298
13299PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
13300is part of the RSA Public Key Cryptography Standards series. The provided
13301implementation takes a password or a passphrase and a salt value (and
13302optionally a iteration count, a digest module, and a MAC module) and provides
13303a file-like object from which an arbitrarly-sized key can be read.")
13304 (license license:expat)))
13305
13306(define-public python2-pbkdf2
13307 (package-with-python2 python-pbkdf2))
cba84a38
CZ
13308
13309(define-public python-qrcode
13310 (package
13311 (name "python-qrcode")
13312 (version "5.3")
13313 (source
13314 (origin
13315 (method url-fetch)
13316 (uri (pypi-uri "qrcode" version))
13317 (sha256
13318 (base32
13319 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
13320 (build-system python-build-system)
6925cd78
MB
13321 (arguments
13322 ;; FIXME: Tests require packaging 'pymaging'.
13323 '(#:tests? #f))
cba84a38
CZ
13324 (propagated-inputs
13325 `(("python-lxml" ,python-lxml) ; for SVG output
13326 ("python-pillow" ,python-pillow) ; for PNG output
13327 ("python-six" ,python-six)))
13328 (home-page "https://github.com/lincolnloop/python-qrcode")
13329 (synopsis "QR Code image generator")
13330 (description "This package provides a pure Python QR Code generator
13331module. It uses the Python Imaging Library (PIL) to allow for the generation
13332of QR Codes.
13333
13334In addition this package provides a command line tool to generate QR codes and
13335either write these QR codes to a file or do the output as ascii art at the
13336console.")
13337 (license license:bsd-3)))
13338
13339(define-public python2-qrcode
13340 (package-with-python2 python-qrcode))
af7caada
CZ
13341
13342;; SlowAES isn't compatible with Python 3.
13343(define-public python2-slowaes
13344 (package
13345 (name "python2-slowaes")
13346 (version "0.1a1")
13347 (source
13348 (origin
13349 (method url-fetch)
13350 (uri (pypi-uri "slowaes" version))
13351 (sha256
13352 (base32
13353 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
13354 (build-system python-build-system)
13355 (arguments `(#:python ,python-2))
13356 (home-page "http://code.google.com/p/slowaes/")
13357 (synopsis "Implementation of AES in Python")
13358 (description "This package contains an implementation of AES in Python.
13359This implementation is slow (hence the project name) but still useful when
13360faster ones are not available.")
13361 (license license:asl2.0)))
1a917fc9
MFM
13362
13363(define-public python-rst2ansi
13364 (package
13365 (name "python-rst2ansi")
13366 (version "0.1.5")
13367 (source
13368 (origin
13369 (method url-fetch)
13370 (uri (pypi-uri "rst2ansi" version))
13371 (sha256
13372 (base32
13373 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
13374 (build-system python-build-system)
13375 (propagated-inputs
13376 `(("python-docutils" ,python-docutils)))
13377 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
13378 (synopsis "Convert RST to ANSI-decorated console output")
13379 (description
13380 "Python module dedicated to rendering RST (reStructuredText) documents
13381to ansi-escaped strings suitable for display in a terminal.")
13382 (license license:expat)))
2f4623db
MFM
13383
13384(define-public python-ddt
13385 (package
13386 (name "python-ddt")
13387 (version "1.1.1")
13388 (source
13389 (origin
13390 (method url-fetch)
13391 (uri (pypi-uri "ddt" version))
13392 (sha256
13393 (base32
13394 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
13395 (build-system python-build-system)
13396 (native-inputs
13397 `(("python-mock" ,python-mock)
13398 ("python-nose" ,python-nose)))
13399 (propagated-inputs
13400 `(("python-six" ,python-six)
13401 ("python-pyyaml" ,python-pyyaml)))
13402 (home-page "https://github.com/txels/ddt")
13403 (synopsis "Data-Driven Tests")
13404 (description
13405 "DDT (Data-Driven Tests) allows you to multiply one test case by running
13406it with different test data, and make it appear as multiple test cases.")
13407 (license license:expat)))
13408
13409(define-public python2-ddt
13410 (package-with-python2 python-ddt))
2299b137
MFM
13411
13412(define-public python-pycosat
13413 (package
13414 (name "python-pycosat")
13415 (version "0.6.1")
13416 (source
13417 (origin
13418 (method url-fetch)
13419 (uri (pypi-uri "pycosat" version))
13420 (sha256
13421 (base32
13422 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
13423 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
13424 (build-system python-build-system)
13425 (home-page "https://github.com/ContinuumIO/pycosat")
13426 (synopsis "Bindings to picosat (a SAT solver)")
13427 (description
13428 "This package provides efficient Python bindings to @code{picosat} on
13429the C level. When importing pycosat, the @code{picosat} solver becomes part
13430of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
13431Problem} (SAT) solver.")
13432 (license license:expat)))
13433
13434(define-public python2-pycosat
13435 (package-with-python2 python-pycosat))
8fd68504
MFM
13436
13437(define-public python2-ruamel.ordereddict
13438 (package
13439 (name "python2-ruamel.ordereddict")
13440 (version "0.4.9")
13441 (source
13442 (origin
13443 (method url-fetch)
13444 (uri (pypi-uri "ruamel.ordereddict" version))
13445 (sha256
13446 (base32
13447 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
13448 (build-system python-build-system)
13449 (arguments
13450 `(#:python ,python-2
13451 #:phases
13452 (modify-phases %standard-phases
13453 (delete 'check)
13454 (add-after 'install 'check
13455 (lambda* (#:key inputs outputs #:allow-other-keys)
13456 (add-installed-pythonpath inputs outputs)
13457 (zero? (system* "python" "test/testordereddict.py")))))))
13458 (home-page "https://bitbucket.org/ruamel/ordereddict")
13459 (synopsis "Version of dict that keeps keys in insertion order")
13460 (description
13461 "This is an implementation of an ordered dictionary with @dfn{Key
13462Insertion Order} (KIO: updates of values do not affect the position of the
13463key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
13464removed and put at the back). The standard library module @code{OrderedDict},
13465implemented later, implements a subset of @code{ordereddict} functionality.
13466Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
13467Order} (KSO, no sorting function can be specified, but a transform can be
13468specified to apply on the key before comparison (e.g. @code{string.lower})).")
13469 (license license:expat)))
d8768e31
EB
13470
13471(define-public python-pypeg2
13472 (package
13473 (name "python-pypeg2")
13474 (version "2.15.2")
13475 (source
13476 (origin
13477 (method url-fetch)
13478 (uri (pypi-uri "pyPEG2" version))
13479 (sha256
13480 (base32
13481 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
13482 (build-system python-build-system)
13483 (propagated-inputs `(("python-lxml" ,python-lxml)))
13484 (arguments
13485 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
13486 '(#:tests? #f))
13487 (home-page "https://fdik.org/pyPEG/")
13488 (synopsis "Parsering Expression Grammars in Python")
13489 (description "PyPEG is an intrinsic parser interpreter framework for
13490Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
13491parse many formal languages.")
13492 (license license:gpl2)))
33e9490c
AI
13493
13494(define-public python2-cliapp
13495 (package
13496 (name "python2-cliapp")
13497 (version "1.20160724")
13498 (source
13499 (origin
13500 (method url-fetch)
13501 (uri (string-append
13502 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
13503 version ".tar.gz"))
13504 (sha256
13505 (base32
13506 "025cyi75vxyghbm4hav8dz4fzwksshddavy9g9fwr440awcvw74f"))))
13507 (build-system python-build-system)
13508 (arguments
13509 `(#:python ,python-2))
13510 (propagated-inputs
13511 `(("python2-pyaml" ,python2-pyaml)))
13512 (home-page "https://liw.fi/cliapp/")
13513 (synopsis "Python framework for command line programs")
13514 (description "@code{python2-cliapp} is a python framework for
13515command line programs. It contains the typical stuff such programs
13516need to do, such as parsing the command line for options, and
13517iterating over input files.")
13518 (license license:gpl2+)))
13519
77e99411
AI
13520(define-public python2-ttystatus
13521 (package
13522 (name "python2-ttystatus")
13523 (version "0.32")
13524 (source
13525 (origin
13526 (method url-fetch)
13527 (uri (string-append
13528 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
13529 version ".tar.gz"))
13530 (sha256
13531 (base32
13532 "0b5g889jj23r2w1hi300cdldx6jvspanp0ybf5n1qvdvl150aamf"))))
13533 (build-system python-build-system)
13534 (arguments
13535 `(#:python ,python-2))
13536 (home-page "https://liw.fi/ttystatus/")
13537 (synopsis "Python library for showing progress reporting and
13538status updates on terminals")
13539 (description "@code{python2-ttystatus} is a python library for
13540showing progress reporting and status updates on terminals, for
13541command line programs. Output is automatically adapted to the width
13542of the terminal: truncated if it does not fit, and resized if the
13543terminal size changes.")
13544 (license license:gpl3+)))
c220f0b4
AI
13545
13546(define-public python2-tracing
13547 (package
13548 (name "python2-tracing")
13549 (version "0.10")
13550 (source
13551 (origin
13552 (method url-fetch)
13553 (uri (string-append
13554 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
13555 version ".tar.gz"))
13556 (sha256
13557 (base32
13558 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
13559 (build-system python-build-system)
13560 (arguments
13561 `(#:python ,python-2))
13562 (home-page "https://liw.fi/tracing/")
13563 (synopsis "Python debug logging helper")
13564 (description "@code{python2-tracing} is a python library for
13565logging debug messages. It provides a way to turn debugging messages
13566on and off, based on the filename they occur in. It is much faster
13567than using @code{logging.Filter} to accomplish the same thing, which
13568matters when code is run in production mode. The actual logging still
13569happens using the @code{logging} library.")
13570 (license license:gpl3+)))
b6b2ca5d
AI
13571
13572(define-public python2-larch
13573 (package
13574 (name "python2-larch")
13575 (version "1.20151025")
13576 (source
13577 (origin
13578 (method url-fetch)
13579 (uri (string-append
13580 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
13581 version ".tar.gz"))
13582 (sha256
13583 (base32
13584 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
13585 (build-system python-build-system)
13586 (arguments
13587 `(#:python ,python-2))
13588 (propagated-inputs
13589 `(("python2-tracing" ,python2-tracing)))
13590 (home-page "https://liw.fi/larch/")
13591 (synopsis "Python copy-on-write B-tree library")
13592 (description "@code{python2-larch} is an implementation of
13593particular kind of B-tree, based on research by Ohad Rodeh. See
13594@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
13595on the data structure.
13596
13597The distinctive feature of this B-tree is that a node is never
13598(conceptually) modified. Instead, all updates are done by
13599copy-on-write. This makes it easy to clone a tree, and modify only the
13600clone, while other processes access the original tree.")
13601 (license license:gpl3+)))
35db2d3c
AP
13602
13603(define-public python-htmlmin
13604 (package
13605 (name "python-htmlmin")
13606 (version "0.1.10")
13607 (source
13608 (origin
13609 (method url-fetch)
13610 (uri (pypi-uri "htmlmin" version))
13611 (sha256
13612 (base32
13613 "0qxa93j3p1ak32qh8d9kshqv8v3z0hkc13dwbhp5cn7sn3xmsp6a"))))
13614 (arguments
13615 `(#:tests? #f)) ;htmlmin has no tests
13616 (build-system python-build-system)
13617 (home-page "https://htmlmin.readthedocs.org/en/latest/")
13618 (synopsis "HTML minifier")
13619 (description "@code{htmlmin} is an HTML minifier that just works.
13620It comes with safe defaults and easily configurable options.")
13621 (license license:bsd-3)))
13622
13623(define-public python2-htmlmin
13624 (package-with-python2 python-htmlmin))
78c55663
AP
13625
13626(define-public python-flask-htmlmin
13627 (package
13628 (name "python-flask-htmlmin")
13629 (version "1.2")
13630 (source
13631 (origin
13632 (method url-fetch)
13633 (uri (pypi-uri "Flask-HTMLmin" version))
13634 (sha256
13635 (base32
13636 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
13637 (propagated-inputs
13638 `(("python-flask" ,python-flask)
13639 ("python-htmlmin" ,python-htmlmin)))
13640 (build-system python-build-system)
13641 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
13642 (synopsis "HTML response minifier for Flask")
13643 (description
13644 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
13645 (license license:bsd-3)))
13646
13647(define-public python2-flask-htmlmin
13648 (package-with-python2 python-flask-htmlmin))