gnu: python-cleo: Update to 0.6.1.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
28958b64 3;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
4dcb135e 6;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
d92621cf 10;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
7637de23 14;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
04fb4516 15;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
c5be3467 17;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
1872f1bb 18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
88bb4197 21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
b8fdbca3 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
0de78c95 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
9250b0f3 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
47d0b292 25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
6bd9ad69 26;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
df893a38 29;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
ca0e62bf 30;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
b04a52a6 31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
ee5fb7ee 32;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
33e9490c 33;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
5220022a 34;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
819939cb 35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
ec074213 36;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
916aafa4 37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
1a917fc9 38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
f9f67fcb 39;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
16fe516e 40;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
a5e8f597 41;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
3015d455 42;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
fa3f5f47 43;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
3c8ba11a 44;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
f817b4d9 45;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
3fee0039 46;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
a01b6da7
NK
47;;;
48;;; This file is part of GNU Guix.
49;;;
50;;; GNU Guix is free software; you can redistribute it and/or modify it
51;;; under the terms of the GNU General Public License as published by
52;;; the Free Software Foundation; either version 3 of the License, or (at
53;;; your option) any later version.
54;;;
55;;; GNU Guix is distributed in the hope that it will be useful, but
56;;; WITHOUT ANY WARRANTY; without even the implied warranty of
57;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58;;; GNU General Public License for more details.
59;;;
60;;; You should have received a copy of the GNU General Public License
61;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
62
1ffa7090 63(define-module (gnu packages python)
3f641af0 64 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 65 #:use-module (gnu packages)
8e451885 66 #:use-module (gnu packages algebra)
d79a343b 67 #:use-module (gnu packages adns)
89b2e0b0 68 #:use-module (gnu packages attr)
d96034ed 69 #:use-module (gnu packages backup)
3969ca54 70 #:use-module (gnu packages bash)
a0596a2f 71 #:use-module (gnu packages check)
1ffa7090 72 #:use-module (gnu packages compression)
dc1bd2b5 73 #:use-module (gnu packages crypto)
4ed20663 74 #:use-module (gnu packages databases)
ddc63a56 75 #:use-module (gnu packages django)
5e1c9367 76 #:use-module (gnu packages file)
4ed20663 77 #:use-module (gnu packages fontutils)
4ed20663
AE
78 #:use-module (gnu packages gcc)
79 #:use-module (gnu packages ghostscript)
6eb7af2a 80 #:use-module (gnu packages gl)
4ed20663 81 #:use-module (gnu packages glib)
c227458a 82 #:use-module (gnu packages graphviz)
5eebe8dc 83 #:use-module (gnu packages graphics)
6eb7af2a 84 #:use-module (gnu packages gstreamer)
4ed20663 85 #:use-module (gnu packages gtk)
421a80a2 86 #:use-module (gnu packages icu4c)
c937562e 87 #:use-module (gnu packages image)
4ed20663 88 #:use-module (gnu packages imagemagick)
d79a343b 89 #:use-module (gnu packages libevent)
b10ab723 90 #:use-module (gnu packages libffi)
89b2e0b0 91 #:use-module (gnu packages linux)
ed118043 92 #:use-module (gnu packages man)
0da98533 93 #:use-module (gnu packages maths)
4ed20663 94 #:use-module (gnu packages multiprecision)
45203542 95 #:use-module (gnu packages networking)
be7134bf 96 #:use-module (gnu packages ncurses)
b04a52a6 97 #:use-module (gnu packages openstack)
d488d5d6 98 #:use-module (gnu packages password-utils)
c9b1b4f9 99 #:use-module (gnu packages pcre)
4ed20663 100 #:use-module (gnu packages perl)
b10ab723 101 #:use-module (gnu packages pkg-config)
06ff0837 102 #:use-module (gnu packages protobuf)
4535a93a 103 #:use-module (gnu packages qt)
4ed20663 104 #:use-module (gnu packages readline)
6eb7af2a 105 #:use-module (gnu packages sdl)
5f94ec91 106 #:use-module (gnu packages search)
80ce42bd 107 #:use-module (gnu packages shells)
7ea498e5 108 #:use-module (gnu packages ssh)
c9b1b4f9 109 #:use-module (gnu packages statistics)
8f9ac901 110 #:use-module (gnu packages tex)
1c65314c 111 #:use-module (gnu packages texinfo)
cc2b77df 112 #:use-module (gnu packages tls)
e25f0174 113 #:use-module (gnu packages version-control)
02f8f804 114 #:use-module (gnu packages video)
8d12be1e 115 #:use-module (gnu packages web)
ce0614dd 116 #:use-module (gnu packages base)
26b307e2 117 #:use-module (gnu packages xml)
6fa14469 118 #:use-module (gnu packages xorg)
0bdc1671 119 #:use-module (gnu packages xdisorg)
afa181ff 120 #:use-module (gnu packages tcl)
63bcec71 121 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
122 #:use-module (guix packages)
123 #:use-module (guix download)
ea5456c8 124 #:use-module (guix git-download)
11bb85a1 125 #:use-module (guix utils)
acc26ff1 126 #:use-module (guix build-system gnu)
d8c4998f 127 #:use-module (guix build-system cmake)
898238b9 128 #:use-module (guix build-system python)
1c65314c
FB
129 #:use-module (guix build-system trivial)
130 #:use-module (srfi srfi-1))
a01b6da7 131
45848023 132(define-public python-2.7
a01b6da7
NK
133 (package
134 (name "python")
49c2a46e 135 (version "2.7.13")
a01b6da7
NK
136 (source
137 (origin
138 (method url-fetch)
9b43a0ff 139 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
140 version "/Python-" version ".tar.xz"))
141 (sha256
142 (base32
49c2a46e 143 "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m"))
c3052d6b
ML
144 (patches (search-patches "python-2.7-search-paths.patch"
145 "python-2-deterministic-build-info.patch"
15e57f57 146 "python-2.7-site-prefixes.patch"
dc5cec21
LF
147 "python-2.7-source-date-epoch.patch"
148 "python-2.7-getentropy-on-old-kernels.patch"))
10a42aa2
EF
149 (modules '((guix build utils)))
150 ;; suboptimal to delete failing tests here, but if we delete them in the
151 ;; arguments then we need to make sure to strip out that phase when it
152 ;; gets inherited by python and python-minimal.
153 (snippet
154 '(begin
155 (for-each delete-file
156 '("Lib/test/test_compileall.py"
f0499100 157 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
158 "Lib/test/test_distutils.py"
159 "Lib/test/test_import.py"
160 "Lib/test/test_shutil.py"
161 "Lib/test/test_socket.py"
1bb163b0 162 "Lib/test/test_subprocess.py"))
10a42aa2 163 #t))))
02f0c3b2
LC
164 (outputs '("out"
165 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 166 (build-system gnu-build-system)
3fdc99da 167 (arguments
10a42aa2 168 `(;; 356 tests OK.
e7e7a1eb
EF
169 ;; 6 tests failed:
170 ;; test_compileall test_distutils test_import test_shutil test_socket
171 ;; test_subprocess
172 ;; 39 tests skipped:
ff6f33cf
ED
173 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
174 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
175 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
176 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
177 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
178 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
179 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
180 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
181 ;; test_winreg test_winsound test_zipfile64
182 ;; 4 skips unexpected on linux2:
183 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 184 #:test-target "test"
3fdc99da 185 #:configure-flags
6a20289d
LC
186 (list "--enable-shared" ;allow embedding
187 "--with-system-ffi" ;build ctypes
aaf75c89 188 "--with-ensurepip=install" ;install pip and setuptools
a282d7ff 189 "--enable-unicode=ucs4"
6a20289d
LC
190 (string-append "LDFLAGS=-Wl,-rpath="
191 (assoc-ref %outputs "out") "/lib"))
fd982732 192
d2cc9c7c
LC
193 #:modules ((ice-9 ftw) (ice-9 match)
194 (guix build utils) (guix build gnu-build-system))
fd982732 195 #:phases
46472ecd
MW
196 (modify-phases %standard-phases
197 (add-before
198 'configure 'patch-lib-shells
199 (lambda _
200 ;; Filter for existing files, since some may not exist in all
201 ;; versions of python that are built with this recipe.
202 (substitute* (filter file-exists?
203 '("Lib/subprocess.py"
204 "Lib/popen2.py"
205 "Lib/distutils/tests/test_spawn.py"
206 "Lib/test/test_subprocess.py"))
207 (("/bin/sh") (which "sh")))
dedc8320
LC
208
209 ;; Use zero as the timestamp in .pyc files so that builds are
210 ;; deterministic. TODO: Remove it when this variable is set in
211 ;; gnu-build-system.scm.
a665996f 212 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 213 #t))
5b4e2791
LC
214 (add-before 'configure 'do-not-record-configure-flags
215 (lambda* (#:key configure-flags #:allow-other-keys)
216 ;; Remove configure flags from the installed '_sysconfigdata.py'
217 ;; and 'Makefile' so we don't end up keeping references to the
218 ;; build tools.
219 ;;
220 ;; Preserve at least '--with-system-ffi' since otherwise the
221 ;; thing tries to build libffi, fails, and we end up with a
222 ;; Python that lacks ctypes.
223 (substitute* "configure"
224 (("^CONFIG_ARGS=.*$")
225 (format #f "CONFIG_ARGS='~a'\n"
226 (if (member "--with-system-ffi" configure-flags)
227 "--with-system-ffi"
228 ""))))
229 #t))
46472ecd
MW
230 (add-before
231 'check 'pre-check
232 (lambda _
233 ;; 'Lib/test/test_site.py' needs a valid $HOME
234 (setenv "HOME" (getcwd))
235 #t))
236 (add-after
237 'unpack 'set-source-file-times-to-1980
238 ;; XXX One of the tests uses a ZIP library to pack up some of the
239 ;; source tree, and fails with "ZIP does not support timestamps
240 ;; before 1980". Work around this by setting the file times in the
241 ;; source tree to sometime in early 1980.
242 (lambda _
243 (let ((circa-1980 (* 10 366 24 60 60)))
244 (ftw "." (lambda (file stat flag)
245 (utime file circa-1980 circa-1980)
246 #t))
02f0c3b2 247 #t)))
9ffe61b0
LC
248 (add-after 'install 'remove-tests
249 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
250 ;; because these files are used by some libraries out there.
251 (lambda* (#:key outputs #:allow-other-keys)
252 (let ((out (assoc-ref outputs "out")))
253 (match (scandir (string-append out "/lib")
254 (lambda (name)
255 (string-prefix? "python" name)))
256 ((pythonX.Y)
257 (let ((testdir (string-append out "/lib/" pythonX.Y
258 "/test")))
259 (with-directory-excursion testdir
260 (for-each delete-file-recursively
261 (scandir testdir
262 (match-lambda
263 ((or "." "..") #f)
264 (file
265 (not
266 (string-prefix? "test_support."
267 file))))))
268 (call-with-output-file "__init__.py" (const #t))
269 #t)))))))
216c283b
LC
270 (add-before 'strip 'make-libraries-writable
271 (lambda* (#:key outputs #:allow-other-keys)
272 ;; Make .so files writable so they can be stripped.
273 (let ((out (assoc-ref outputs "out")))
274 (for-each (lambda (file)
275 (chmod file #o755))
276 (find-files (string-append out "/lib")
277 "\\.so"))
278 #t)))
02f0c3b2
LC
279 (add-after 'install 'move-tk-inter
280 (lambda* (#:key outputs #:allow-other-keys)
281 ;; When Tkinter support is built move it to a separate output so
282 ;; that the main output doesn't contain a reference to Tcl/Tk.
283 (let ((out (assoc-ref outputs "out"))
284 (tk (assoc-ref outputs "tk")))
285 (when tk
286 (match (find-files out "tkinter.*\\.so")
287 ((tkinter.so)
288 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
289 ;; want it under TK/lib/pythonX.Y/site-packages.
290 (let* ((len (string-length out))
291 (target (string-append
292 tk "/"
293 (string-drop
294 (dirname (dirname tkinter.so))
295 len)
296 "/site-packages")))
297 (install-file tkinter.so target)
298 (delete-file tkinter.so)))))
299 #t))))))
a01b6da7 300 (inputs
3fdc99da
CR
301 `(("bzip2" ,bzip2)
302 ("gdbm" ,gdbm)
b10ab723 303 ("libffi" ,libffi) ; for ctypes
b88e1b0a 304 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 305 ("openssl" ,openssl)
3fdc99da 306 ("readline" ,readline)
afa181ff
LC
307 ("zlib" ,zlib)
308 ("tcl" ,tcl)
309 ("tk" ,tk))) ; for tkinter
b10ab723
CR
310 (native-inputs
311 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
312 (native-search-paths
313 (list (search-path-specification
314 (variable "PYTHONPATH")
af070955 315 (files '("lib/python2.7/site-packages")))))
f0499100 316 (home-page "https://www.python.org")
afa181ff 317 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
318 (description
319 "Python is a remarkably powerful dynamic programming language that
320is used in a wide variety of application domains. Some of its key
321distinguishing features include: clear, readable syntax; strong
322introspection capabilities; intuitive object orientation; natural
323expression of procedural code; full modularity, supporting hierarchical
324packages; exception-based error handling; and very high level dynamic
325data types.")
3f641af0 326 (license license:psfl)))
acc26ff1 327
45848023
HG
328;; Current 2.x version.
329(define-public python-2 python-2.7)
330
72df6680 331(define-public python-3.5
b24d1cfc 332 (package (inherit python-2)
343cee8a 333 (version "3.5.3")
717003e3
LC
334 (source (origin
335 (method url-fetch)
336 (uri (string-append "https://www.python.org/ftp/python/"
337 version "/Python-" version ".tar.xz"))
fc1adab1
AK
338 (patches (search-patches
339 "python-fix-tests.patch"
72df6680 340 "python-3.5-fix-tests.patch"
e4d34cd0 341 "python-3.5-getentropy-on-old-kernels.patch"
fc1adab1
AK
342 "python-3-deterministic-build-info.patch"
343 "python-3-search-paths.patch"))
717003e3
LC
344 (patch-flags '("-p0"))
345 (sha256
346 (base32
343cee8a 347 "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
fd615918 348 (snippet
e46e9573
EF
349 '(begin
350 (for-each delete-file
351 '("Lib/ctypes/test/test_win32.py" ; fails on aarch64
352 "Lib/test/test_fcntl.py"))
353 #t))))
1f434457
MW
354 (arguments (substitute-keyword-arguments (package-arguments python-2)
355 ((#:tests? _) #t)))
1aebc0cb
AE
356 (native-search-paths
357 (list (search-path-specification
358 (variable "PYTHONPATH")
0e05d01e
SB
359 (files (list (string-append "lib/python"
360 (version-major+minor version)
361 "/site-packages"))))))))
f26a77ff 362
45848023 363;; Current 3.x version.
72df6680 364(define-public python-3 python-3.5)
45848023
HG
365
366;; Current major version.
367(define-public python python-3)
368
95288fcc
LC
369;; Minimal variants of Python, mostly used to break the cycle between Tk and
370;; Python (Tk -> libxcb -> Python.)
371
372(define-public python2-minimal
373 (package (inherit python-2)
374 (name "python-minimal")
02f0c3b2 375 (outputs '("out"))
5927a843
LC
376
377 ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
378 ;; is invoked upon 'make install'. 'pip' also expects 'ctypes' and thus
379 ;; libffi.
380 (inputs `(("libffi" ,libffi)
381 ("zlib" ,zlib)))))
95288fcc
LC
382
383(define-public python-minimal
898238b9 384 (package (inherit python)
95288fcc 385 (name "python-minimal")
02f0c3b2 386 (outputs '("out"))
95288fcc 387
d0b73960 388 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
389 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
390 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
391 (inputs `(("libffi" ,libffi)
392 ("openssl" ,openssl)
95288fcc
LC
393 ("zlib" ,zlib)))))
394
64cb064c
LC
395(define* (wrap-python3 python
396 #:optional
397 (name (string-append (package-name python) "-wrapper")))
898238b9 398 (package (inherit python)
95288fcc 399 (name name)
898238b9
AE
400 (source #f)
401 (build-system trivial-build-system)
02f0c3b2 402 (outputs '("out"))
3969ca54 403 (inputs `(("bash" ,bash)))
3c0f2329 404 (propagated-inputs `(("python" ,python)))
898238b9
AE
405 (arguments
406 `(#:modules ((guix build utils))
407 #:builder
408 (begin
409 (use-modules (guix build utils))
410 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
411 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
412 (mkdir-p bin)
413 (for-each
414 (lambda (old new)
415 (symlink (string-append python old)
416 (string-append bin "/" new)))
3969ca54
SB
417 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
418 `("python" ,"pydoc" ,"idle" ,"pip"))
419 ;; python-config outputs search paths based upon its location,
420 ;; use a bash wrapper to avoid changing its outputs.
421 (let ((bash (string-append (assoc-ref %build-inputs "bash")
422 "/bin/bash"))
423 (old (string-append python "python3-config"))
424 (new (string-append bin "/python-config")))
425 (with-output-to-file new
426 (lambda ()
427 (format #t "#!~a~%" bash)
428 (format #t "exec \"~a\" \"$@\"~%" old)
429 (chmod new #o755)
430 #t)))))))
0d56e3e1
LC
431 (synopsis "Wrapper for the Python 3 commands")
432 (description
433 "This package provides wrappers for the commands of Python@tie{}3.x such
434that they can be invoked under their usual name---e.g., @command{python}
435instead of @command{python3}.")))
436
95288fcc
LC
437(define-public python-wrapper (wrap-python3 python))
438(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 439
aaf625b8
RW
440(define-public python-psutil
441 (package
442 (name "python-psutil")
88535a44 443 (version "4.3.0")
aaf625b8
RW
444 (source
445 (origin
446 (method url-fetch)
f56777be 447 (uri (pypi-uri "psutil" version))
aaf625b8
RW
448 (sha256
449 (base32
88535a44 450 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 451 (build-system python-build-system)
fb08c4fe
MB
452 (arguments
453 ;; FIXME: some tests does not return and times out.
454 '(#:tests? #f))
88535a44 455 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
456 (synopsis "Library for retrieving information on running processes")
457 (description
458 "psutil (Python system and process utilities) is a library for retrieving
459information on running processes and system utilization (CPU, memory, disks,
460network) in Python. It is useful mainly for system monitoring, profiling and
461limiting process resources and management of running processes. It implements
462many functionalities offered by command line tools such as: ps, top, lsof,
463netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
464pidof, tty, taskset, pmap.")
3f641af0 465 (license license:bsd-3)))
aaf625b8
RW
466
467(define-public python2-psutil
468 (package-with-python2 python-psutil))
898238b9 469
f9da1d8a
ED
470(define-public python-passlib
471 (package
472 (name "python-passlib")
3b86a385 473 (version "1.7.1")
f9da1d8a
ED
474 (source
475 (origin
476 (method url-fetch)
690e8c66 477 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
478 (sha256
479 (base32
3b86a385 480 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
f9da1d8a
ED
481 (build-system python-build-system)
482 (native-inputs
f3b98f4f 483 `(("python-nose" ,python-nose)))
f22efa01 484 (propagated-inputs
f9da1d8a
ED
485 `(("python-py-bcrypt" ,python-py-bcrypt)))
486 (arguments
487 `(#:phases
488 (alist-cons-before
489 'check 'set-PYTHON_EGG_CACHE
490 ;; some tests require access to "$HOME/.cython"
491 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
492 %standard-phases)))
493 (home-page "https://bitbucket.org/ecollins/passlib")
494 (synopsis
495 "Comprehensive password hashing framework")
496 (description
497 "Passlib is a password hashing library for Python 2 & 3, which provides
498cross-platform implementations of over 30 password hashing algorithms, as well
499as a framework for managing existing password hashes. It's designed to be
500useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
501to providing full-strength password hashing for multi-user application.")
3f641af0 502 (license license:bsd-3)))
f9da1d8a
ED
503
504(define-public python2-passlib
505 (package-with-python2 python-passlib))
506
feb0d9c3
ED
507(define-public python-py-bcrypt
508 (package
509 (name "python-py-bcrypt")
510 (version "0.4")
511 (source
512 (origin
513 (method url-fetch)
514 (uri (string-append
515 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
516 version
517 ".tar.gz"))
518 (sha256
519 (base32
520 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
521 (build-system python-build-system)
feb0d9c3
ED
522 (home-page "https://code.google.com/p/py-bcrypt")
523 (synopsis
524 "Bcrypt password hashing and key derivation")
525 (description
526 "A python wrapper of OpenBSD's Blowfish password hashing code. This
527system hashes passwords using a version of Bruce Schneier's Blowfish block
528cipher with modifications designed to raise the cost of off-line password
529cracking and frustrate fast hardware implementation. The computation cost of
530the algorithm is parametised, so it can be increased as computers get faster.
531The intent is to make a compromise of a password database less likely to
532result in an attacker gaining knowledge of the plaintext passwords (e.g. using
533John the Ripper).")
534 ;; "sha2.c" is under BSD-3;
535 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
536 ;; the rest is under ISC.
3f641af0 537 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
538
539(define-public python2-py-bcrypt
540 (package-with-python2 python-py-bcrypt))
541
542
429fdea1
ED
543(define-public python-paramiko
544 (package
545 (name "python-paramiko")
b22cdf0c 546 (version "2.1.2")
429fdea1
ED
547 (source
548 (origin
549 (method url-fetch)
81b9bbbd 550 (uri (pypi-uri "paramiko" version))
429fdea1
ED
551 (sha256
552 (base32
b22cdf0c 553 "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
429fdea1 554 (build-system python-build-system)
49910e6a 555 (arguments
b22cdf0c
SB
556 '(#:phases
557 (modify-phases %standard-phases
558 (replace 'check
559 (lambda _
560 (zero? (system* "python" "test.py")))))))
a3fc12da 561 (propagated-inputs
b22cdf0c
SB
562 `(("python-pyasn1" ,python-pyasn1)
563 ("python-cryptography" ,python-cryptography)))
429fdea1
ED
564 (home-page "http://www.paramiko.org/")
565 (synopsis "SSHv2 protocol library")
566 (description "Paramiko is a python implementation of the SSHv2 protocol,
567providing both client and server functionality. While it leverages a Python C
568extension for low level cryptography (PyCrypto), Paramiko itself is a pure
569Python interface around SSH networking concepts.")
3f641af0 570 (license license:lgpl2.1+)))
429fdea1
ED
571
572(define-public python2-paramiko
573 (package-with-python2 python-paramiko))
574
575
de73dbf6
ED
576(define-public python-httplib2
577 (package
578 (name "python-httplib2")
286f1bac 579 (version "0.9.2")
de73dbf6
ED
580 (source
581 (origin
582 (method url-fetch)
286f1bac 583 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
584 (sha256
585 (base32
286f1bac 586 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 587 (build-system python-build-system)
286f1bac 588 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
589 (synopsis "Comprehensive HTTP client library")
590 (description
591 "A comprehensive HTTP client library supporting many features left out of
592other HTTP libraries.")
593 (license license:expat)))
594
595(define-public python2-httplib2
596 (package-with-python2 python-httplib2))
597
67039875
ED
598(define-public python-ecdsa
599 (package
600 (name "python-ecdsa")
601 (version "0.13")
602 (source
603 (origin
604 (method url-fetch)
605 (uri (string-append
606 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
607 version
608 ".tar.gz"))
609 (sha256
610 (base32
611 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
612 (build-system python-build-system)
67039875
ED
613 (inputs
614 `(("openssl" ,openssl)))
615 (home-page
7bf837fd 616 "https://github.com/warner/python-ecdsa")
67039875
ED
617 (synopsis
618 "ECDSA cryptographic signature library (pure python)")
619 (description
620 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
621Curve Digital Signature Algorithm), implemented purely in Python. With this
622library, you can quickly create keypairs (signing key and verifying key), sign
623messages, and verify the signatures. The keys and signatures are very short,
624making them easy to handle and incorporate into other protocols.")
625 (license license:expat)))
626
627(define-public python2-ecdsa
628 (package-with-python2 python-ecdsa))
629
52323f32
ED
630(define-public python-ccm
631 (package
632 (name "python-ccm")
db5567f7 633 (version "2.1.6")
52323f32
ED
634 (source
635 (origin
636 (method url-fetch)
db5567f7 637 (uri (pypi-uri "ccm" version))
52323f32
ED
638 (sha256
639 (base32
db5567f7 640 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 641 (build-system python-build-system)
f22efa01 642 (propagated-inputs
52323f32 643 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
644 ;; Not listed in setup.py, but used in ccmlib/node.py for full
645 ;; functionality
646 ("python-psutil" ,python-psutil)
52323f32
ED
647 ("python-six" ,python-six)))
648 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
649 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
650localhost")
651 (description "Cassandra Cluster Manager is a development tool for testing
652local Cassandra clusters. It creates, launches and removes Cassandra clusters
653on localhost.")
3f641af0 654 (license license:asl2.0)))
52323f32
ED
655
656(define-public python2-ccm
657 (package-with-python2 python-ccm))
658
89114f39 659(define-public python-pytz
acc26ff1 660 (package
89114f39 661 (name "python-pytz")
3fee0039 662 (version "2017.2")
acc26ff1
CR
663 (source
664 (origin
665 (method url-fetch)
3fee0039 666 (uri (pypi-uri "pytz" version ".zip"))
acc26ff1
CR
667 (sha256
668 (base32
3fee0039 669 "12cmd3j46d2gcw08bspvp6s9icfcvx88zjz52n1bli9dyvl5dh7m"))))
acc26ff1 670 (build-system python-build-system)
3fee0039
MFM
671 (native-inputs
672 `(("unzip" ,unzip)))
b01bbbcf 673 (home-page "http://pythonhosted.org/pytz")
9e771e3b 674 (synopsis "Python timezone library")
3fee0039
MFM
675 (description "This library brings the Olson tz database into Python. It
676allows accurate and cross platform timezone calculations using Python 2.4 or
677higher. It also solves the issue of ambiguous times at the end of daylight
678saving time. Almost all of the Olson timezones are supported.")
b01bbbcf 679 (license license:expat)))
5ace6e2f 680
89114f39 681(define-public python2-pytz
11bb85a1 682 (package-with-python2 python-pytz))
89114f39 683
1f84ff51
MFM
684(define-public python-clyent
685 (package
686 (name "python-clyent")
687 (version "1.2.1")
688 (source
689 (origin
690 (method url-fetch)
691 (uri (pypi-uri "clyent" version))
692 (sha256
693 (base32
694 "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj"))))
695 (build-system python-build-system)
696 (native-inputs
697 `(("python-mock" ,python-mock)))
698 (home-page "https://github.com/binstar/clyent")
699 (synopsis "Command line client library")
700 (description "Clyent is a Python command line utiliy library. It is used
701by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
702 (license license:bsd-3)))
703
704(define-public python2-clyent
705 (package-with-python2 python-clyent))
706
89114f39 707(define-public python-babel
5ace6e2f 708 (package
89114f39 709 (name "python-babel")
ffb1e98d 710 (version "2.3.4")
5ace6e2f
CR
711 (source
712 (origin
713 (method url-fetch)
b850a6d8 714 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
715 (sha256
716 (base32
ffb1e98d 717 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 718 (build-system python-build-system)
f22efa01 719 (propagated-inputs
f3b98f4f 720 `(("python-pytz" ,python-pytz)))
8498b8cf 721 (arguments `(#:tests? #f)) ; no test target
e1804763 722 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
723 (synopsis
724 "Tools for internationalizing Python applications")
725 (description
726 "Babel is composed of two major parts:
727- tools to build and work with gettext message catalogs
728- a Python interface to the CLDR (Common Locale Data Repository), providing
729access to various locale display names, localized number and date formatting,
730etc. ")
3f641af0 731 (license license:bsd-3)))
89114f39
AE
732
733(define-public python2-babel
11bb85a1 734 (package-with-python2 python-babel))
73adf220 735
ed377cc6
RW
736(define-public python2-backport-ssl-match-hostname
737 (package
738 (name "python2-backport-ssl-match-hostname")
f2d06d46 739 (version "3.5.0.1")
ed377cc6
RW
740 (source
741 (origin
742 (method url-fetch)
743 (uri (string-append
744 "https://pypi.python.org/packages/source/b/"
745 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
746 version ".tar.gz"))
747 (sha256
748 (base32
f2d06d46 749 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 750 (build-system python-build-system)
f2d06d46
EF
751 (arguments
752 `(#:python ,python-2
753 #:tests? #f)) ; no test target
f2d06d46
EF
754 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
755 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
756 (description
757 "This backport brings the ssl.match_hostname() function to users of
758earlier versions of Python. The function checks the hostname in the
759certificate returned by the server to which a connection has been established,
760and verifies that it matches the intended target hostname.")
3f641af0 761 (license license:psfl)))
ed377cc6 762
d205f895
TD
763(define-public python-hdf4
764 (package
765 (name "python-hdf4")
766 (version "0.9")
767 (source
768 (origin
769 (method url-fetch)
770 (uri (pypi-uri name version))
771 (sha256
772 (base32
773 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
774 (build-system python-build-system)
775 (native-inputs `(("nose" ,python-nose)))
776 (propagated-inputs `(("numpy" ,python-numpy)))
777 (inputs
778 `(("hdf4" ,hdf4)
779 ("libjpeg" ,libjpeg)
780 ("zlib" ,zlib)))
781 (arguments
782 `(#:phases
783 (modify-phases %standard-phases
784 (replace 'check
785 (lambda _
786 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
787 ;; on to import numpy. Somehow this works on their CI system.
788 ;; Let's just manage PYTHONPATH here instead.
789 (substitute* "runexamples.sh"
790 (("export PYTHONPATH=.*") ""))
791 (setenv "PYTHONPATH"
792 (string-append (getcwd) ":"
793 (getenv "PYTHONPATH")))
794 (and (zero? (system* "./runexamples.sh"))
795 (zero? (system* "nosetests" "-v"))))))))
796 (home-page "https://github.com/fhs/python-hdf4")
797 (synopsis "Python interface to the NCSA HDF4 library")
798 (description
799 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
800which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
801NetCDF files can also be read and modified. Python-HDF4 is a fork of
802@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
803 (license license:expat)))
804
805(define-public python2-hdf4
806 (package-with-python2 python-hdf4))
807
ef5cbf9b
RW
808(define-public python-h5py
809 (package
810 (name "python-h5py")
5c78db62 811 (version "2.7.0")
ef5cbf9b
RW
812 (source
813 (origin
814 (method url-fetch)
fe147c41 815 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
816 (sha256
817 (base32
5c78db62 818 "0433sdv6xc9p7v1xs1gvbxp7p152ywi3nplgjb258q9fvw9469br"))))
ef5cbf9b 819 (build-system python-build-system)
797e1401
RW
820 (arguments
821 `(#:tests? #f ; no test target
822 #:phases
823 (modify-phases %standard-phases
824 (add-after 'unpack 'fix-hdf5-paths
825 (lambda* (#:key inputs #:allow-other-keys)
826 (let ((prefix (assoc-ref inputs "hdf5")))
827 (substitute* "setup_build.py"
828 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
829 (string-append "['" prefix "/lib" "']"))
830 (("'/opt/local/include', '/usr/local/include'")
831 (string-append "'" prefix "/include" "'")))
832 (substitute* "setup_configure.py"
833 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
834 (string-append "['" prefix "/lib" "']")))
835 #t))))))
3c4010b1 836 (propagated-inputs
69866690
HG
837 `(("python-six" ,python-six)
838 ("python-numpy" ,python-numpy)))
ef5cbf9b 839 (inputs
69866690 840 `(("hdf5" ,hdf5)))
ef5cbf9b 841 (native-inputs
fe147c41
EF
842 `(("python-cython" ,python-cython)
843 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
844 (home-page "http://www.h5py.org/")
845 (synopsis "Read and write HDF5 files from Python")
846 (description
847 "The h5py package provides both a high- and low-level interface to the
848HDF5 library from Python. The low-level interface is intended to be a
849complete wrapping of the HDF5 API, while the high-level component supports
850access to HDF5 files, datasets and groups using established Python and NumPy
851concepts.")
9820a028 852 (license license:bsd-3)))
ef5cbf9b
RW
853
854(define-public python2-h5py
9820a028 855 (package-with-python2 python-h5py))
ef5cbf9b 856
ea8450c8
TD
857(define-public python-netcdf4
858 (package
859 (name "python-netcdf4")
1206c95a 860 (version "1.2.9")
ea8450c8
TD
861 (source
862 (origin
863 (method url-fetch)
864 (uri (pypi-uri "netCDF4" version))
865 (sha256
866 (base32
1206c95a 867 "1h6jq338amlbk0ilzvjyl7cck80i0bah9a5spn9in71vy2qxm7i5"))))
ea8450c8
TD
868 (build-system python-build-system)
869 (native-inputs
870 `(("python-cython" ,python-cython)))
871 (propagated-inputs
872 `(("python-numpy" ,python-numpy)))
873 (inputs
874 `(("netcdf" ,netcdf)
875 ("hdf4" ,hdf4)
876 ("hdf5" ,hdf5)))
877 (arguments
878 '(#:phases
879 (modify-phases %standard-phases
880 (replace 'check
881 (lambda _
882 (setenv "NO_NET" "1") ; disable opendap tests
883 (with-directory-excursion "test"
884 (setenv "PYTHONPATH" ; find and add the library we just built
885 (string-append
886 (car (find-files "../build" "lib.*"
887 #:directories? #:t
888 #:fail-on-error? #:t))
889 ":" (getenv "PYTHONPATH")))
890 (zero? (system* "python" "run_all.py"))))))))
891 (home-page
892 "https://github.com/Unidata/netcdf4-python")
893 (synopsis "Python/numpy interface to the netCDF library")
894 (description "Netcdf4-python is a Python interface to the netCDF C
895library. netCDF version 4 has many features not found in earlier
896versions of the library and is implemented on top of HDF5. This module
897can read and write files in both the new netCDF 4 and the old netCDF 3
898format, and can create files that are readable by HDF5 clients. The
899API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
900to users of that module.")
901 ;; The software is mainly ISC, but includes some files covered
902 ;; by the Expat license.
903 (license (list license:isc license:expat))))
904
905(define-public python2-netcdf4
906 (package-with-python2 python-netcdf4))
907
c1448c69
EB
908(define-public python-lockfile
909 (package
910 (name "python-lockfile")
692add53 911 (version "0.12.2")
c1448c69
EB
912 (source
913 (origin
914 (method url-fetch)
915 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
916 "lockfile-" version ".tar.gz"))
917 (sha256
918 (base32
692add53 919 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
920 (build-system python-build-system)
921 (arguments '(#:test-target "check"))
692add53
BW
922 (native-inputs
923 `(("python-pbr" ,python-pbr)))
6a8f26a4 924 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
925 (synopsis "Platform-independent file locking module")
926 (description
927 "The lockfile package exports a LockFile class which provides a simple
928API for locking files.")
f210e944 929 (license license:expat)))
c1448c69
EB
930
931(define-public python2-lockfile
f210e944 932 (package-with-python2 python-lockfile))
c1448c69 933
5a1a4bf6
EB
934(define-public python-mock
935 (package
936 (name "python-mock")
937 (version "1.0.1")
938 (source
939 (origin
940 (method url-fetch)
6b7877e1 941 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
942 (sha256
943 (base32
944 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
945 (build-system python-build-system)
946 (arguments '(#:test-target "check"))
6b7877e1 947 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 948 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
949 (description
950 "Mock is a library for testing in Python. It allows you to replace parts
951of your system under test with mock objects and make assertions about how they
952have been used.")
bd3fa666 953 (license license:expat)))
5a1a4bf6
EB
954
955(define-public python2-mock
956 (package-with-python2 python-mock))
957
731b0c72
LF
958;;; Some packages (notably, certbot and python-acme) rely on this newer version
959;;; of python-mock. However, a large number of packages fail to build with
960;;; mock@2, so we add a new variable for now. Also, there may be a dependency
961;;; cycle between mock and six, so we avoid creating python2-mock@2 for now.
962(define-public python-mock-2
963 (package
964 (inherit python-mock)
965 (version "2.0.0")
966 (source
967 (origin
968 (method url-fetch)
969 (uri (pypi-uri "mock" version))
970 (sha256
971 (base32
972 "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
973 (propagated-inputs
974 `(("python-pbr" ,python-pbr-minimal)
975 ,@(package-propagated-inputs python-mock)))))
fc50e9c6 976
73adf220
AE
977(define-public python-setuptools
978 (package
979 (name "python-setuptools")
d660f7be 980 (version "31.0.0")
73adf220
AE
981 (source
982 (origin
983 (method url-fetch)
d660f7be 984 (uri (pypi-uri "setuptools" version))
73adf220
AE
985 (sha256
986 (base32
d660f7be 987 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
988 (modules '((guix build utils)))
989 (snippet
990 '(begin
991 ;; Remove included binaries which are used to build self-extracting
992 ;; installers for Windows.
993 ;; TODO: Find some way to build them ourself so we can include them.
994 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
995 #t))))
73adf220 996 (build-system python-build-system)
d3d656c5
AE
997 ;; FIXME: Tests require pytest, which itself relies on setuptools.
998 ;; One could bootstrap with an internal untested setuptools.
73adf220 999 (arguments
824af8ca 1000 `(#:tests? #f))
73adf220
AE
1001 (home-page "https://pypi.python.org/pypi/setuptools")
1002 (synopsis
1003 "Library designed to facilitate packaging Python projects")
1004 (description
1005 "Setuptools is a fully-featured, stable library designed to facilitate
1006packaging Python projects, where packaging includes:
1007Python package and module definitions,
1008distribution package metadata,
1009test hooks,
1010project installation,
1011platform-specific details,
1012Python 3 support.")
d660f7be
MB
1013 ;; TODO: setuptools now bundles the following libraries:
1014 ;; packaging, pyparsing, six and appdirs. How to unbundle?
1015 (license (list license:psfl ; setuptools itself
1016 license:expat ; six, appdirs, pyparsing
1017 license:asl2.0 ; packaging is dual ASL2/BSD-2
1018 license:bsd-2))))
73adf220
AE
1019
1020(define-public python2-setuptools
1021 (package-with-python2 python-setuptools))
fc50e9c6 1022
fa56c773
KK
1023(define-public python-uniseg
1024 (package
1025 (name "python-uniseg")
1026 (version "0.7.1")
1027 (source
1028 (origin
1029 (method url-fetch)
1030 (uri (string-append "https://bitbucket.org/emptypage/uniseg-python/"
1031 "get/rel-" version ".tar.gz"))
1032 (file-name (string-append name "-" version ".tar.gz"))
1033 (sha256
1034 (base32
1035 "1df4gddnj2a0v8z35wb2ra5vvh1f1qyxs8fgd25c8g64031mna6x"))))
1036 (build-system python-build-system)
1037 (arguments
1038 '(#:tests? #f)) ; The test suite requires network access.
1039 (home-page
1040 "https://bitbucket.org/emptypage/uniseg-python")
1041 (synopsis
1042 "Python library to determine Unicode text segmentations")
1043 (description
1044 "Uniseg is a Python package used to determine Unicode text segmentations.
1045Supported segmentations include:
1046@enumerate
1047@item @dfn{Code point} (any value in the Unicode codespace)
1048@item @dfn{Grapheme cluster} (user-perceived character made of a single or
1049multiple Unicode code points, e.g. \"G\" + acute-accent)
1050@item Word break
1051@item Sentence break
1052@item Line break
1053@end enumerate")
1054 (license license:expat)))
1055
1056(define-public python2-uniseg
1057 (package-with-python2 python-uniseg))
1058
aa21c764 1059;;; Pycrypto is abandoned upstream:
1194575b 1060;;;
aa21c764 1061;;; https://github.com/dlitz/pycrypto/issues/173
1194575b 1062;;;
aa21c764 1063;;; TODO Remove this package from GNU Guix.
cafc3f5a
EB
1064(define-public python-pycrypto
1065 (package
1066 (name "python-pycrypto")
1067 (version "2.6.1")
1068 (source
1069 (origin
1070 (method url-fetch)
aa21c764
LF
1071 (uri (pypi-uri "pycrypto" version))
1072 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
cafc3f5a
EB
1073 (sha256
1074 (base32
1075 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
1076 (build-system python-build-system)
cafc3f5a
EB
1077 (inputs
1078 `(("python" ,python)
1079 ("gmp" ,gmp)))
1080 (arguments
1081 `(#:phases
1082 (alist-cons-before
1083 'build 'set-build-env
1084 ;; pycrypto runs an autoconf configure script behind the scenes
1085 (lambda _
1086 (setenv "CONFIG_SHELL" (which "bash")))
1087 %standard-phases)))
1088 (home-page "http://www.pycrypto.org/")
1089 (synopsis "Cryptographic modules for Python")
1090 (description
1091 "Pycrypto is a collection of both secure hash functions (such as SHA256
1092and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 1093etc.). The package is structured to make adding new modules easy.")
3f641af0 1094 (license license:public-domain)))
cafc3f5a 1095
345f0611 1096(define-public python2-pycrypto
1c0059da
EF
1097 (let ((pycrypto (package-with-python2 python-pycrypto)))
1098 (package (inherit pycrypto)
1099 (inputs
1100 `(("python" ,python-2)
1101 ,@(alist-delete
1102 "python"
1103 (package-inputs pycrypto)))))))
345f0611 1104
de959250 1105(define-public python-eventlet
1106 (package
1107 (name "python-eventlet")
1108 (version "0.20.1")
1109 (source
1110 (origin
1111 (method url-fetch)
1112 (uri (pypi-uri "eventlet" version))
1113 (sha256
1114 (base32
1115 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
1116 (build-system python-build-system)
1117 (propagated-inputs
1118 `(("python-greenlet" ,python-greenlet)))
5150d8b4
TGR
1119 (arguments
1120 ;; TODO: Requires unpackaged 'enum-compat'.
1121 '(#:tests? #f))
de959250 1122 (home-page "http://eventlet.net")
1123 (synopsis "Concurrent networking library for Python")
1124 (description
1125 "Eventlet is a concurrent networking library for Python that
1126allows you to change how you run your code, not how you write it.
1127It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
1128Coroutines ensure that the developer uses a blocking style of programming
1129that is similar to threading, but provide the benefits of non-blocking I/O.
1130The event dispatch is implicit, which means you can easily use @code{Eventlet}
1131from the Python interpreter, or as a small part of a larger application.")
1132 (license license:expat)))
1133
1134(define-public python2-eventlet
1135 (let ((base (package-with-python2
1136 (strip-python2-variant python-eventlet))))
1137 (package (inherit base)
1138 (propagated-inputs
1139 `(("python2-enum34" ,python2-enum34)
1140 ,@(package-propagated-inputs base))))))
1141
cafc3f5a
EB
1142(define-public python-keyring
1143 (package
1144 (name "python-keyring")
13f3ff35 1145 (version "8.7")
cafc3f5a
EB
1146 (source
1147 (origin
1148 (method url-fetch)
664e6c3a 1149 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1150 (sha256
1151 (base32
13f3ff35 1152 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1153 (build-system python-build-system)
1154 (native-inputs
13f3ff35 1155 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1156 (propagated-inputs
cafc3f5a
EB
1157 `(("python-pycrypto" ,python-pycrypto)))
1158 (arguments
664e6c3a 1159 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1160 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1161 (synopsis "Store and access your passwords safely")
1162 (description
1163 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1164service from python. It can be used in any application that needs safe
cafc3f5a
EB
1165password storage.")
1166 ;; "MIT" and PSF dual license
f210e944 1167 (license license:x11)))
cafc3f5a 1168
d7af1069 1169(define-public python2-keyring
f210e944 1170 (package-with-python2 python-keyring))
d7af1069 1171
a480bc41
EB
1172(define-public python-six
1173 (package
1174 (name "python-six")
b6ab89ef 1175 (version "1.10.0")
a480bc41
EB
1176 (source
1177 (origin
1178 (method url-fetch)
b6ab89ef 1179 (uri (pypi-uri "six" version))
a480bc41
EB
1180 (sha256
1181 (base32
b6ab89ef 1182 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1183 (build-system python-build-system)
4fd129ee
MB
1184 (native-inputs
1185 `(("python-py" ,python-py)
1186 ("python-pytest" ,python-pytest)))
a480bc41
EB
1187 (home-page "http://pypi.python.org/pypi/six/")
1188 (synopsis "Python 2 and 3 compatibility utilities")
1189 (description
35b9e423 1190 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1191functions for smoothing over the differences between the Python versions with
1192the goal of writing Python code that is compatible on both Python versions.
35b9e423 1193Six supports every Python version since 2.5. It is contained in only one
a480bc41 1194Python file, so it can be easily copied into your project.")
3f641af0 1195 (license license:x11)))
a480bc41 1196
0c20025c
AE
1197(define-public python2-six
1198 (package-with-python2 python-six))
1199
22d7360b 1200(define-public python-dateutil
cafc3f5a
EB
1201 (package
1202 (name "python-dateutil")
e139c7a7 1203 (version "2.6.0")
cafc3f5a
EB
1204 (source
1205 (origin
1206 (method url-fetch)
394b8060 1207 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1208 (sha256
1209 (base32
e139c7a7 1210 "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
cafc3f5a 1211 (build-system python-build-system)
f22efa01 1212 (propagated-inputs
394b8060 1213 `(("python-six" ,python-six)))
b5a5fb19 1214 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1215 (synopsis "Extensions to the standard datetime module")
1216 (description
1217 "The dateutil module provides powerful extensions to the standard
1218datetime module, available in Python 2.3+.")
f210e944 1219 (license license:bsd-3)))
cafc3f5a 1220
fc50e9c6
AE
1221(define-public python2-dateutil
1222 (package-with-python2 python-dateutil))
1d08c01f 1223
cafc3f5a
EB
1224(define-public python-parsedatetime
1225 (package
1226 (name "python-parsedatetime")
642656a1 1227 (version "2.4")
cafc3f5a
EB
1228 (source
1229 (origin
1230 (method url-fetch)
eebf6f01 1231 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1232 (sha256
1233 (base32
642656a1 1234 "0jxqkjks7z9dn222cqgvskp4wr6d92aglinxq7pd2w4mzdc7r09x"))))
cafc3f5a
EB
1235 (build-system python-build-system)
1236 (native-inputs
eebf6f01 1237 `(("python-nose" ,python-nose)
28958b64
LC
1238 ("python-pyicu" ,python-pyicu)
1239 ("python-pytest" ,python-pytest)
1240 ("python-pytest-runner" ,python-pytest-runner)))
1241 (propagated-inputs
1242 `(("python-future" ,python-future)))
7bf837fd 1243 (home-page "https://github.com/bear/parsedatetime/")
cafc3f5a
EB
1244 (synopsis
1245 "Parse human-readable date/time text")
1246 (description
e881752c 1247 "Parse human-readable date/time text.")
f210e944 1248 (license license:asl2.0)))
cafc3f5a 1249
38b8f9b2 1250(define-public python2-parsedatetime
f210e944 1251 (package-with-python2 python-parsedatetime))
38b8f9b2 1252
24d15813
SR
1253(define-public python-schedule
1254 (package
1255 (name "python-schedule")
1256 (version "0.4.3")
1257 (source
1258 (origin
1259 (method url-fetch)
1260 (uri (pypi-uri "schedule" version))
1261 (sha256
1262 (base32
1263 "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i"))))
1264 (build-system python-build-system)
1265 (native-inputs
1266 `(("python-pytest" ,python-pytest)
1267 ("python-mock" ,python-mock)))
1268 (home-page "https://github.com/dbader/schedule")
1269 (synopsis "Schedule periodic function calls in Python")
1270 (description
1271 "Schedule is an in-process scheduler for periodic jobs that uses the
1272builder pattern for configuration. Schedule lets you run Python functions (or
1273any other callable) periodically at pre-determined intervals using a simple,
1274human-friendly syntax.")
1275 (license license:expat)))
1276
1277(define-public python2-schedule
1278 (package-with-python2 python-schedule))
1279
d072efcb
RW
1280(define-public python-pandas
1281 (package
1282 (name "python-pandas")
8e086048 1283 (version "0.19.2")
d072efcb
RW
1284 (source
1285 (origin
1b96f069 1286 (method url-fetch)
8e086048 1287 (uri (pypi-uri "pandas" version))
1b96f069 1288 (sha256
b03ee02f
MB
1289 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1290 (patches
1291 (search-patches "python-pandas-skip-failing-tests.patch"))))
d072efcb 1292 (build-system python-build-system)
d072efcb 1293 (propagated-inputs
f22efa01
HG
1294 `(("python-numpy" ,python-numpy)
1295 ("python-pytz" ,python-pytz)
22d7360b 1296 ("python-dateutil" ,python-dateutil)))
d072efcb 1297 (native-inputs
abcc7a0e
HG
1298 `(("python-nose" ,python-nose)
1299 ("python-cython" ,python-cython)))
d072efcb
RW
1300 (home-page "http://pandas.pydata.org")
1301 (synopsis "Data structures for data analysis, time series, and statistics")
1302 (description
1303 "Pandas is a Python package providing fast, flexible, and expressive data
1304structures designed to make working with structured (tabular,
1305multidimensional, potentially heterogeneous) and time series data both easy
1306and intuitive. It aims to be the fundamental high-level building block for
1307doing practical, real world data analysis in Python.")
f210e944 1308 (license license:bsd-3)))
d072efcb
RW
1309
1310(define-public python2-pandas
f210e944 1311 (package-with-python2 python-pandas))
d072efcb 1312
cafc3f5a
EB
1313(define-public python-tzlocal
1314 (package
1315 (name "python-tzlocal")
ed80839b 1316 (version "1.2.2")
cafc3f5a
EB
1317 (source
1318 (origin
1319 (method url-fetch)
226d3331 1320 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1321 (sha256
1322 (base32
ed80839b 1323 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1324 (build-system python-build-system)
f22efa01
HG
1325 (propagated-inputs
1326 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1327 (home-page "https://github.com/regebro/tzlocal")
1328 (synopsis
35b9e423 1329 "Local timezone information for Python")
cafc3f5a
EB
1330 (description
1331 "Tzlocal returns a tzinfo object with the local timezone information.
1332This module attempts to fix a glaring hole in pytz, that there is no way to
1333get the local timezone information, unless you know the zoneinfo name, and
1334under several distributions that's hard or impossible to figure out.")
3f641af0 1335 (license license:cc0)))
cafc3f5a 1336
1d08c01f
AE
1337(define-public python2-pysqlite
1338 (package
1339 (name "python2-pysqlite")
e80aaeb4 1340 (version "2.8.3")
1d08c01f
AE
1341 (source
1342 (origin
1343 (method url-fetch)
fe476868 1344 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1345 (sha256
1346 (base32
e80aaeb4 1347 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1d08c01f
AE
1348 (build-system python-build-system)
1349 (inputs
1350 `(("sqlite" ,sqlite)))
1351 (arguments
1352 `(#:python ,python-2 ; incompatible with Python 3
1353 #:tests? #f)) ; no test target
7bf837fd 1354 (home-page "https://github.com/ghaering/pysqlite")
7a03af70 1355 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1356 (description
1357 "Pysqlite provides SQLite bindings for Python that comply to the
1358Database API 2.0T.")
ed0cdf83 1359 (license license:zlib)))
1d08c01f 1360
2875caf5
AE
1361
1362(define-public python2-mechanize
1363 (package
1364 (name "python2-mechanize")
1365 (version "0.2.5")
1366 (source
1367 (origin
1368 (method url-fetch)
1369 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1370 version ".tar.gz"))
1371 (sha256
1372 (base32
1373 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1374 (build-system python-build-system)
2875caf5
AE
1375 (arguments
1376 `(#:python ,python-2 ; apparently incompatible with Python 3
1377 #:tests? #f))
1378 ;; test fails with message
1379 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1380 ;; (python-3.3.2) or
1381 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1382 ;; (python-2.7.5).
1383 ;; The source code is from March 2011 and probably not up-to-date
1384 ;; with respect to python unit tests.
1385 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1386 (synopsis
1387 "Stateful programmatic web browsing in Python")
1388 (description
1389 "Mechanize implements stateful programmatic web browsing in Python,
1390after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1391 (license (license:non-copyleft
1392 "file://COPYING"
1393 "See COPYING in the distribution."))))
2875caf5 1394
0352532e
AE
1395
1396(define-public python-simplejson
1397 (package
1398 (name "python-simplejson")
b2e6e150 1399 (version "3.10.0")
0352532e
AE
1400 (source
1401 (origin
1402 (method url-fetch)
988d1bad 1403 (uri (pypi-uri "simplejson" version))
0352532e
AE
1404 (sha256
1405 (base32
b2e6e150 1406 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1407 (build-system python-build-system)
1408 (home-page "http://simplejson.readthedocs.org/en/latest/")
1409 (synopsis
1410 "Json library for Python")
1411 (description
e881752c
AK
1412 "JSON (JavaScript Object Notation) is a subset of JavaScript
1413syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1414format.
0352532e
AE
1415
1416Simplejson exposes an API familiar to users of the standard library marshal
1417and pickle modules. It is the externally maintained version of the json
1418library contained in Python 2.6, but maintains compatibility with Python 2.5
1419and (currently) has significant performance advantages, even without using
1420the optional C extension for speedups. Simplejson is also supported on
1421Python 3.3+.")
3f641af0 1422 (license license:x11)))
0352532e
AE
1423
1424(define-public python2-simplejson
1425 (package-with-python2 python-simplejson))
421a80a2
AE
1426
1427
ed07b08d 1428(define-public python-pyicu
421a80a2 1429 (package
ed07b08d 1430 (name "python-pyicu")
2e161eaf 1431 (version "1.9.5")
421a80a2
AE
1432 (source
1433 (origin
1434 (method url-fetch)
2e161eaf 1435 (uri (pypi-uri "PyICU" version))
421a80a2
AE
1436 (sha256
1437 (base32
2e161eaf 1438 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
421a80a2 1439 (build-system python-build-system)
dc027d40
MB
1440 (arguments
1441 '(#:phases
1442 (modify-phases %standard-phases
1443 (add-before 'check 'delete-failing-test
1444 (lambda _
1445 ;; XXX: These tests require locales that are unavailable
1446 ;; in the build environment.
1447 (delete-file "test/test_DateTimeParserGenerator.py")
1448 #t)))))
421a80a2
AE
1449 (inputs
1450 `(("icu4c" ,icu4c)))
421a80a2 1451 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1452 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1453 (description
1454 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1455 (license license:x11)))
ed07b08d
LF
1456
1457(define-public python2-pyicu
f210e944 1458 (package-with-python2 python-pyicu))
cc20a22a
LC
1459
1460(define-public python2-dogtail
1461 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1462 ;; spaces in indentation" with Python 3.
1463 (package
1464 (name "python2-dogtail")
c5be3467 1465 (version "0.9.9")
cc20a22a
LC
1466 (source (origin
1467 (method url-fetch)
c5be3467 1468 (uri (pypi-uri "dogtail" version))
cc20a22a
LC
1469 (sha256
1470 (base32
c5be3467 1471 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
cc20a22a
LC
1472 (build-system python-build-system)
1473 (arguments `(#:python ,python-2
1474 #:tests? #f)) ; invalid command "test"
5ee684ff
EJ
1475 ;; Currently no offical homepage.
1476 (home-page "https://pypi.python.org/pypi/dogtail/")
1003fbcf 1477 (synopsis "GUI test tool and automation framework written in Python")
cc20a22a 1478 (description
35b9e423 1479 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1480It uses Accessibility (a11y) technologies to communicate with desktop
1481applications. dogtail scripts are written in Python and executed like any
1482other Python program.")
3f641af0 1483 (license license:gpl2+)))
515e6878 1484
011b18c3
LC
1485(define-public python2-empy
1486 (package
1487 (name "python2-empy")
1488 (version "3.3")
1489 (source (origin
1490 (method url-fetch)
1491 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1492 version ".tar.gz"))
1493 (sha256
1494 (base32
1495 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1496 (build-system python-build-system)
1497 (arguments
1498 `(#:python ,python-2
1499 #:phases (alist-replace
1500 'check
1501 (lambda _
1502 (zero? (system* "./test.sh")))
1503 %standard-phases)))
1504 (home-page "http://www.alcyone.com/software/empy/")
1505 (synopsis "Templating system for Python")
1506 (description
1507 "EmPy is a system for embedding Python expressions and statements in
1508template text; it takes an EmPy source file, processes it, and produces
1509output. This is accomplished via expansions, which are special signals to the
1cd4027c 1510EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1511EmPy can expand arbitrary Python expressions and statements in this way, as
1512well as a variety of special forms. Textual data not explicitly delimited in
1513this way is sent unaffected to the output, allowing Python to be used in
1514effect as a markup language. Also supported are callbacks via hooks,
1515recording and playback via diversions, and dynamic, chainable filters. The
1516system is highly configurable via command line options and embedded
1517commands.")
3f641af0 1518 (license license:lgpl2.1+)))
011b18c3 1519
8deeda0c
LC
1520(define-public python2-element-tree
1521 (package
1522 (name "python2-element-tree")
1523 (version "1.2.6")
1524 (source (origin
1525 (method url-fetch)
1526 (uri (string-append
1527 "http://effbot.org/media/downloads/elementtree-"
1528 version "-20050316.tar.gz"))
1529 (sha256
1530 (base32
1531 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1532 (build-system python-build-system)
1533 (arguments
1534 `(#:python ,python-2 ; seems to be part of Python 3
1535 #:tests? #f)) ; no 'test' sub-command
1536 (synopsis "Toolkit for XML processing in Python")
1537 (description
1538 "ElementTree is a Python library supporting lightweight XML processing.")
1539 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1540 (license (license:x11-style
1541 "http://docs.python.org/2/license.html"
1542 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1543
1544(define-public python2-pybugz
1545 (package
1546 (name "python2-pybugz")
1547 (version "0.6.11")
1548 (source (origin
1549 (method url-fetch)
1550 (uri (string-append
1551 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1552 version ".tar.gz"))
1553 (sha256
1554 (base32
6f194a1e 1555 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1556 (patches (search-patches "pybugz-stty.patch"
1557 "pybugz-encode-error.patch"))))
8deeda0c
LC
1558 (build-system python-build-system)
1559 (arguments
1560 `(#:python ,python-2 ; SyntaxError with Python 3
1561 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1562 (propagated-inputs
1563 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1564 (synopsis "Python and command-line interface to Bugzilla")
1565 (description
1566 "PyBugz is a Python library and command-line tool to query the Bugzilla
1567bug tracking system. It is meant as an aid to speed up interaction with the
1568bug tracker.")
1569 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1570 (license license:gpl2)))
8deeda0c 1571
a480bc41
EB
1572(define-public python-enum34
1573 (package
1574 (name "python-enum34")
5e923414 1575 (version "1.1.6")
a480bc41
EB
1576 (source
1577 (origin
1578 (method url-fetch)
d39ae1e5 1579 (uri (pypi-uri "enum34" version))
a480bc41
EB
1580 (sha256
1581 (base32
5e923414 1582 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
a480bc41 1583 (build-system python-build-system)
a480bc41
EB
1584 (home-page "https://pypi.python.org/pypi/enum34")
1585 (synopsis "Backported Python 3.4 Enum")
1586 (description
1587 "Enum34 is the new Python stdlib enum module available in Python 3.4
1588backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1589 (license license:bsd-3)))
a480bc41 1590
820acd1b
LF
1591(define-public python2-enum34
1592 (package-with-python2 python-enum34))
1593
a480bc41
EB
1594(define-public python-parse-type
1595 (package
1596 (name "python-parse-type")
1597 (version "0.3.4")
1598 (source
1599 (origin
1600 (method url-fetch)
1601 (uri (string-append "https://pypi.python.org/packages/source/p/"
1602 "parse_type/parse_type-" version ".tar.gz"))
1603 (sha256
1604 (base32
1605 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1606 (build-system python-build-system)
8ed12889
DM
1607 (arguments
1608 `(#:phases
1609 (modify-phases %standard-phases
1610 (add-after 'unpack 'patch-tests
1611 (lambda _
1612 (substitute* "tests/test_parse_type_parse.py"
1613 ;; Newer Python versions don't have the problem this test tests.
1614 (("self[.]assertRaises[(]parse.TooManyFields, p.parse, ''[)]")
1615 ""))
1616 #t)))))
f22efa01 1617 (propagated-inputs
f3b98f4f 1618 `(("python-six" ,python-six)
68f1cdec 1619 ("python-parse" ,python-parse)))
8ed12889
DM
1620 (native-inputs
1621 `(("python-pytest" ,python-pytest)
1622 ("python-pytest-runner" ,python-pytest-runner)))
a480bc41
EB
1623 (home-page "https://github.com/jenisys/parse_type")
1624 (synopsis "Extended parse module")
1625 (description
1626 "Parse_type extends the python parse module.")
8ed12889
DM
1627 (properties
1628 `((python2-variant . ,(delay python2-parse-type))))
3f641af0 1629 (license license:bsd-3)))
a480bc41 1630
8ed12889
DM
1631(define-public python2-parse-type
1632 (let ((base (package-with-python2
1633 (strip-python2-variant python-parse-type))))
1634 (package (inherit base)
1635 (propagated-inputs
1636 `(("python2-enum34" ,python2-enum34)
1637 ,@(package-propagated-inputs base))))))
1638
a480bc41
EB
1639(define-public python-parse
1640 (package
1641 (name "python-parse")
eb3d3503 1642 (version "1.6.6")
a480bc41
EB
1643 (source
1644 (origin
1645 (method url-fetch)
eb3d3503 1646 (uri (pypi-uri "parse" version))
a480bc41
EB
1647 (sha256
1648 (base32
aa6c09ed
EF
1649 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1650 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1651 (build-system python-build-system)
1652 (arguments
1653 `(#:phases
f9a65318
EF
1654 (modify-phases %standard-phases
1655 (replace 'check
1656 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1657 (home-page "https://github.com/r1chardj0n3s/parse")
1658 (synopsis "Parse strings")
1659 (description
1660 "Parse strings using a specification based on the Python format()
1661syntax.")
3f641af0 1662 (license license:x11)))
a480bc41 1663
d3eff97a
JL
1664(define-public python-polib
1665 (package
1666 (name "python-polib")
1667 (version "1.0.8")
1668 (source (origin
1669 (method url-fetch)
1670 (uri (pypi-uri "polib" version))
1671 (sha256
1672 (base32
1673 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1674 (build-system python-build-system)
1675 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1676 (synopsis "Manipulate, create and modify gettext files")
1677 (description "Polib can manipulate any gettext format (po, pot and mo)
1678files. It can be used to create po files from scratch or to modify
1679existing ones.")
1680 (license license:expat)))
1681
1682(define-public python2-polib
1683 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1684 (package
1685 (inherit base)
1686 (arguments `(,@(package-arguments base)
1687 ;; Tests don't work with python2.
1688 #:tests? #f)))))
a480bc41 1689
515e6878
LC
1690(define-public scons
1691 (package
1692 (name "scons")
76ab3141 1693 (version "2.5.1")
515e6878
LC
1694 (source (origin
1695 (method url-fetch)
de67e922
LF
1696 (uri (string-append "mirror://sourceforge/scons/scons/" version
1697 "/scons-" version ".tar.gz"))
515e6878
LC
1698 (sha256
1699 (base32
76ab3141 1700 "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
515e6878
LC
1701 (build-system python-build-system)
1702 (arguments
1703 ;; With Python 3.x, fails to build with a syntax error.
1704 `(#:python ,python-2
b3e8b4bd 1705 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1706 #:tests? #f)) ; no 'python setup.py test' command
1707 (home-page "http://scons.org/")
1708 (synopsis "Software construction tool written in Python")
1709 (description
1710 "SCons is a software construction tool. Think of SCons as an improved,
1711cross-platform substitute for the classic Make utility with integrated
1712functionality similar to autoconf/automake and compiler caches such as ccache.
1713In short, SCons is an easier, more reliable and faster way to build
1714software.")
3f641af0 1715 (license license:x11)))
011b18c3 1716
c15a5c0e
DT
1717(define-public python-extras
1718 (package
1719 (name "python-extras")
1720 (version "0.0.3")
1721 (source
1722 (origin
1723 (method url-fetch)
1724 (uri (string-append
1725 "https://pypi.python.org/packages/source/e/extras/extras-"
1726 version ".tar.gz"))
1727 (sha256
1728 (base32
1729 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1730 (build-system python-build-system)
c15a5c0e
DT
1731 (arguments
1732 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1733 '(#:tests? #f))
1734 (home-page "https://github.com/testing-cabal/extras")
1735 (synopsis "Useful extensions to the Python standard library")
1736 (description
1737 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1738 (license license:expat)))
c15a5c0e
DT
1739
1740(define-public python2-extras
1741 (package-with-python2 python-extras))
1742
56ea0efd
DT
1743(define-public python-mimeparse
1744 (package
1745 (name "python-mimeparse")
1746 (version "0.1.4")
1747 (source
1748 (origin
1749 (method url-fetch)
1750 (uri (string-append
1751 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1752 version ".tar.gz"))
1753 (sha256
1754 (base32
1755 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1756 (build-system python-build-system)
56ea0efd
DT
1757 (arguments
1758 '(#:tests? #f)) ; no setup.py test command
1759 (home-page
1760 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1761 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1762 (description
1763 "Mimeparse provides basic functions for parsing MIME type names and
1764matching them against a list of media-ranges.")
bd3fa666 1765 (license license:expat)))
56ea0efd
DT
1766
1767(define-public python2-mimeparse
1768 (package-with-python2 python-mimeparse))
1769
4435427e
DT
1770(define-public python-nose
1771 (package
1772 (name "python-nose")
f7cb9841 1773 (version "1.3.7")
4435427e
DT
1774 (source
1775 (origin
1776 (method url-fetch)
f7cb9841 1777 (uri (pypi-uri "nose" version))
4435427e
DT
1778 (sha256
1779 (base32
f7cb9841 1780 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1781 (build-system python-build-system)
4435427e
DT
1782 (arguments
1783 '(#:tests? #f)) ; FIXME: test suite fails
1784 (home-page "http://readthedocs.org/docs/nose/")
1785 (synopsis "Python testing library")
1786 (description
1787 "Nose extends the unittest library to make testing easier.")
3f641af0 1788 (license license:lgpl2.0+)))
4435427e
DT
1789
1790(define-public python2-nose
1791 (package-with-python2 python-nose))
1792
0aea283a
EF
1793(define-public python-nose2
1794 (package
1795 (name "python-nose2")
1796 (version "0.6.5")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (pypi-uri "nose2" version))
1801 (sha256
1802 (base32
1803 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1804 (build-system python-build-system)
1805 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1806 (propagated-inputs
0aea283a
EF
1807 `(("python-cov-core" ,python-cov-core)
1808 ("python-pytest-cov" ,python-pytest-cov)
1809 ("python-six" ,python-six)))
1810 (home-page "https://github.com/nose-devs/nose2")
1811 (synopsis "Next generation of nicer testing for Python")
1812 (description
1813 "Nose2 is the next generation of nicer testing for Python, based on the
1814plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1815better plugin api, being easier for users to configure, and simplifying internal
1816interfaces and processes.")
1817 (license license:bsd-2)))
1818
1819(define-public python2-nose2
1820 (package-with-python2 python-nose2))
1821
6cd9c356
DT
1822(define-public python-unittest2
1823 (package
1824 (name "python-unittest2")
1825 (version "0.5.1")
1826 (source
1827 (origin
1828 (method url-fetch)
1829 (uri (string-append
1830 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1831 version ".tar.gz"))
1832 (sha256
1833 (base32
1834 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1835 (build-system python-build-system)
6cd9c356
DT
1836 (home-page "http://pypi.python.org/pypi/unittest2")
1837 (synopsis "Python unit testing library")
1838 (description
1839 "Unittest2 is a replacement for the unittest module in the Python
1840standard library.")
3f641af0 1841 (license license:psfl)))
6cd9c356
DT
1842
1843(define-public python2-unittest2
1844 (package (inherit python-unittest2)
1845 (name "python2-unittest2")
1846 (version "0.5.1")
1847 (source
1848 (origin
1849 (method url-fetch)
1850 (uri (string-append
1851 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1852 version ".tar.gz"))
1853 (sha256
1854 (base32
1855 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1856 (arguments
1857 `(#:python ,python-2
1858 #:tests? #f)))) ; no setup.py test command
1859
02f8f804 1860(define-public python-pafy
1861 (package
1862 (name "python-pafy")
745d85b7 1863 (version "0.5.3.1")
02f8f804 1864 (source
1865 (origin
1866 (method url-fetch)
1867 (uri (pypi-uri "pafy" version))
1868 (sha256
1869 (base32
745d85b7 1870 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
02f8f804 1871 (build-system python-build-system)
ed3fee5f 1872 (arguments
1873 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1874 (propagated-inputs
1875 ;; Youtube-dl is a python package which is imported in the file
1876 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1877 `(("youtube-dl" ,youtube-dl)))
1878 (home-page "https://np1.github.io/pafy/")
1879 (synopsis "Retrieve YouTube content and metadata")
1880 (description
1881 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1882 (license license:lgpl3+)))
1883
542ad60f
DT
1884(define-public python-py
1885 (package
1886 (name "python-py")
b9463fdb 1887 (version "1.4.32")
542ad60f
DT
1888 (source
1889 (origin
1890 (method url-fetch)
71c8a804 1891 (uri (pypi-uri "py" version))
542ad60f
DT
1892 (sha256
1893 (base32
b9463fdb 1894 "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
542ad60f 1895 (build-system python-build-system)
dcb0da7b
MB
1896 (arguments
1897 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1898 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1899 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1900 ;; Is this module globally installed?"
1901 '(#:tests? #f))
542ad60f
DT
1902 (home-page "http://pylib.readthedocs.org/")
1903 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1904 (description
1905 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1906code introspection, and logging.")
bd3fa666 1907 (license license:expat)))
542ad60f
DT
1908
1909(define-public python2-py
1910 (package-with-python2 python-py))
1911
855d4761
DT
1912(define-public python-pytest
1913 (package
1914 (name "python-pytest")
61a4332d 1915 (version "2.7.3")
855d4761
DT
1916 (source
1917 (origin
1918 (method url-fetch)
1919 (uri (string-append
1920 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1921 version ".tar.gz"))
1922 (sha256
1923 (base32
61a4332d 1924 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1925 (modules '((guix build utils)))
1926 (snippet
1927 ;; One of the tests involves the /usr directory, so it fails.
1928 '(substitute* "testing/test_argcomplete.py"
1929 (("def test_remove_dir_prefix\\(self\\):")
1930 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1931 (build-system python-build-system)
482d9591
HG
1932 (propagated-inputs
1933 `(("python-py" ,python-py)))
e7881f3d 1934 (native-inputs
60724d69
MB
1935 `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
1936 ("bash" ,bash)
1937 ("python-nose" ,python-nose)
855d4761
DT
1938 ("python-mock" ,python-mock)))
1939 (home-page "http://pytest.org")
1940 (synopsis "Python testing library")
1941 (description
1942 "Pytest is a testing tool that provides auto-discovery of test modules
1943and functions, detailed info on failing assert statements, modular fixtures,
1944and many external plugins.")
bd3fa666 1945 (license license:expat)))
855d4761
DT
1946
1947(define-public python2-pytest
1948 (package-with-python2 python-pytest))
1949
23b9168d
LF
1950;; Some packages require a newer pytest.
1951(define-public python-pytest-3.0
fca4ff35
LF
1952 (package
1953 (inherit python-pytest)
1954 (name "python-pytest")
23b9168d 1955 (version "3.0.7")
fca4ff35
LF
1956 (source (origin
1957 (method url-fetch)
1958 (uri (pypi-uri "pytest" version))
1959 (sha256
1960 (base32
23b9168d 1961 "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
fca4ff35
LF
1962 (arguments
1963 `(#:phases
1964 (modify-phases %standard-phases
1965 (add-before 'check 'disable-invalid-test
1966 (lambda _
1967 (substitute* "testing/test_argcomplete.py"
1968 (("def test_remove_dir_prefix" line)
1969 (string-append "@pytest.mark.skip"
1970 "(reason=\"Assumes that /usr exists.\")\n "
1971 line)))
23b9168d 1972 #t)))))
7f71e257 1973 (native-inputs
60724d69
MB
1974 `(("python-hypothesis" ,python-hypothesis)
1975 ,@(package-native-inputs python-pytest)))
23b9168d
LF
1976 (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
1977
1978(define-public python2-pytest-3.0
1979 (let ((base (package-with-python2
1980 (strip-python2-variant python-pytest-3.0))))
1981 (package (inherit base)
1982 (native-inputs
1983 `(("python2-enum34" ,python2-enum34)
1984 ,@(package-native-inputs base))))))
fca4ff35 1985
358c3d61
EF
1986(define-public python-pytest-cov
1987 (package
1988 (name "python-pytest-cov")
1aecfe17 1989 (version "2.4.0")
358c3d61
EF
1990 (source
1991 (origin
1992 (method url-fetch)
1993 (uri (pypi-uri "pytest-cov" version))
1994 (sha256
545f4a1c 1995 (base32
1aecfe17 1996 "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
10468636 1997 (build-system python-build-system)
ce40b383
HG
1998 (arguments
1999 `(#:phases
2000 (modify-phases %standard-phases
2001 (replace 'check
2002 (lambda _
2003 ;; options taken from tox.ini
2004 ;; TODO: make "--restructuredtext" tests pass. They currently fail
2005 ;; with "Duplicate implicit target name"
2006 (zero? (system* "python" "./setup.py" "check"
2007 "--strict" "--metadata")))))))
f22efa01 2008 (propagated-inputs
10468636
EF
2009 `(("python-coverage" ,python-coverage)
2010 ("python-pytest" ,python-pytest)))
10468636
EF
2011 (home-page "https://github.com/pytest-dev/pytest-cov")
2012 (synopsis "Pytest plugin for measuring coverage")
2013 (description
2014 "Pytest-cov produces coverage reports. It supports centralised testing and
2015distributed testing in both @code{load} and @code{each} modes. It also
2016supports coverage of subprocesses.")
f210e944 2017 (license license:expat)))
358c3d61
EF
2018
2019(define-public python2-pytest-cov
f210e944 2020 (package-with-python2 python-pytest-cov))
358c3d61 2021
6784f2e3
RW
2022(define-public python-pytest-runner
2023 (package
2024 (name "python-pytest-runner")
047160f2 2025 (version "2.11.1")
6784f2e3
RW
2026 (source
2027 (origin
2028 (method url-fetch)
54cd239b 2029 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
2030 (sha256
2031 (base32
047160f2 2032 "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
6784f2e3
RW
2033 (build-system python-build-system)
2034 (arguments
2035 `(#:phases
2036 (modify-phases %standard-phases
2037 ;; The fancy way of setting the version with setuptools_scm does not
2038 ;; seem to work here.
2039 (add-after 'unpack 'set-version
2040 (lambda _
2041 (substitute* "docs/conf.py"
2042 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
2043 (string-append "version = \"" ,version "\"")))
2044 #t)))))
2045 (native-inputs
2046 `(("python-pytest" ,python-pytest)
2047 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 2048 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
2049 (synopsis "Invoke py.test as a distutils command")
2050 (description
2051 "This package provides a @command{pytest-runner} command that
2052@file{setup.py} files can use to run tests.")
f210e944 2053 (license license:expat)))
54cd239b
EF
2054
2055(define-public python2-pytest-runner
f210e944 2056 (package-with-python2 python-pytest-runner))
6784f2e3 2057
44547e51
EF
2058(define-public python-pytest-mock
2059 (package
2060 (name "python-pytest-mock")
2061 (version "1.2")
2062 (source
2063 (origin
2064 (method url-fetch)
2065 (uri (pypi-uri "pytest-mock" version ".zip"))
2066 (sha256
2067 (base32
2068 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
2069 (build-system python-build-system)
2070 (native-inputs
2071 `(("unzip" ,unzip)))
f22efa01 2072 (propagated-inputs
d5e41cf2 2073 `(("python-pytest" ,python-pytest)))
44547e51
EF
2074 (home-page "https://github.com/pytest-dev/pytest-mock/")
2075 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
2076 (description
2077 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
2078around the patching API provided by the @code{mock} package, but with the
2079benefit of not having to worry about undoing patches at the end of a test.
2080The mocker fixture has the same API as @code{mock.patch}, supporting the
2081same arguments.")
2082 (properties `((python2-variant . ,(delay python2-pytest-mock))))
2083 (license license:expat)))
2084
2085(define-public python2-pytest-mock
2086 (let ((base (package-with-python2
2087 (strip-python2-variant python-pytest-mock))))
2088 (package (inherit base)
f22efa01 2089 (propagated-inputs
44547e51 2090 `(("python2-mock" ,python2-mock)
f22efa01 2091 ,@(package-propagated-inputs base))))))
44547e51 2092
8fa58fc9
CAW
2093(define-public python-pytest-xdist
2094 (package
2095 (name "python-pytest-xdist")
2096 (version "1.14")
2097 (source
2098 (origin
2099 (method url-fetch)
2100 (uri (pypi-uri "pytest-xdist" version ".zip"))
2101 (sha256
2102 (base32
de585a7e
HG
2103 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
2104 (modules '((guix build utils)))
2105 (snippet
2106 '(begin
2107 ;; Remove pre-compiled .pyc files from source.
2108 (for-each delete-file-recursively
2109 (find-files "." "__pycache__" #:directories? #t))
2110 (for-each delete-file (find-files "." "\\.pyc$"))
2111 #t))))
8fa58fc9 2112 (build-system python-build-system)
4eb385fb
MB
2113 (arguments
2114 '(#:tests? #f)) ;FIXME: Some tests are failing.
2115 ;; #:phases
2116 ;; (modify-phases %standard-phases
2117 ;; (delete 'check)
2118 ;; (add-after 'install 'check
2119 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
2120 ;; (add-installed-pythonpath inputs outputs)
2121 ;; (zero? (system* "py.test" "-v")))))
8fa58fc9
CAW
2122 (native-inputs
2123 `(("unzip" ,unzip)
8fa58fc9 2124 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 2125 (propagated-inputs
c4516ad2 2126 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
2127 ("python-pytest" ,python-pytest)
2128 ("python-py" ,python-py)))
2129 (home-page
2130 "https://github.com/pytest-dev/pytest-xdist")
2131 (synopsis
2132 "Plugin for py.test with distributed testing and loop-on-failing modes")
2133 (description
2134 "The pytest-xdist plugin extends py.test with some unique test execution
2135modes: parallelization, running tests in boxed subprocesses, the ability
2136to run tests repeatedly when failed, and the ability to run tests on multiple
2137Python interpreters or platforms. It uses rsync to copy the existing
2138program code to a remote location, executes there, and then syncs the
2139result back.")
f210e944 2140 (license license:expat)))
8fa58fc9
CAW
2141
2142(define-public python2-pytest-xdist
f210e944 2143 (package-with-python2 python-pytest-xdist))
8fa58fc9 2144
84d24017
DT
2145(define-public python-scripttest
2146 (package
2147 (name "python-scripttest")
2148 (version "1.3")
2149 (source
2150 (origin
2151 (method url-fetch)
2152 (uri (string-append
2153 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
2154 version ".tar.gz"))
2155 (sha256
2156 (base32
2157 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
2158 (build-system python-build-system)
521b7772 2159 (native-inputs
f3b98f4f 2160 `(("python-pytest" ,python-pytest)))
84d24017
DT
2161 (home-page "http://pythonpaste.org/scripttest/")
2162 (synopsis "Python library to test command-line scripts")
2163 (description "Scripttest is a Python helper library for testing
2164interactive command-line applications. With it you can run a script in a
2165subprocess and see the output as well as any file modifications.")
bd3fa666 2166 (license license:expat)))
84d24017
DT
2167
2168(define-public python2-scripttest
2169 (package-with-python2 python-scripttest))
2170
d8fa80e1
DT
2171(define-public python-testtools
2172 (package
2173 (name "python-testtools")
7adb9031 2174 (version "1.4.0")
d8fa80e1
DT
2175 (source
2176 (origin
2177 (method url-fetch)
7adb9031 2178 (uri (pypi-uri "testtools" version))
d8fa80e1
DT
2179 (sha256
2180 (base32
7adb9031 2181 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
d8fa80e1 2182 (build-system python-build-system)
7adb9031
DM
2183 (arguments
2184 `(#:phases
2185 (modify-phases %standard-phases
2186 (add-after 'unpack 'fix-module-imports
2187 (lambda _
2188 (substitute* "setup.py"
2189 (("'unittest2>=0.8.0',") ""))
2190 (substitute* '("testtools/testcase.py"
2191 "testtools/testsuite.py"
2192 "testtools/run.py"
2193 "testtools/tests/test_run.py"
2194 "testtools/tests/test_testsuite.py"
2195 "testtools/tests/test_deferredruntest.py")
2196 ;; unittest2 is a backport of Python2.7 features to Python 2.4.
2197 (("import unittest2 as unittest") "import unittest")
2198 (("import unittest2") "import unittest as unittest2")
2199 (("from unittest2 import") "from unittest import"))
2200 (substitute* "testtools/tests/test_testresult.py"
2201 ;; NUL in source code is not allowed (raises ValueError).
2202 (("\\x00\\x04") "\\x04"))
2203 #t)))))
0e88cbf8 2204 (propagated-inputs
f22efa01
HG
2205 `(("python-mimeparse" ,python-mimeparse)
2206 ("python-extras" ,python-extras)))
d8fa80e1
DT
2207 (home-page "https://github.com/testing-cabal/testtools")
2208 (synopsis
2209 "Extensions to the Python standard library unit testing framework")
2210 (description
2211 "Testtools extends the Python standard library unit testing framework to
2212provide matchers, more debugging information, and cross-Python
2213compatibility.")
3f641af0 2214 (license license:psfl)))
d8fa80e1
DT
2215
2216(define-public python2-testtools
2217 (package-with-python2 python-testtools))
2218
5bf3afea
DT
2219(define-public python-testscenarios
2220 (package
2221 (name "python-testscenarios")
2222 (version "0.4")
2223 (source
2224 (origin
2225 (method url-fetch)
2226 (uri (string-append
2227 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2228 version ".tar.gz"))
2229 (sha256
2230 (base32
2231 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2232 (build-system python-build-system)
f22efa01 2233 (propagated-inputs
8e73d3ba 2234 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2235 (home-page "https://launchpad.net/testscenarios")
2236 (synopsis "Pyunit extension for dependency injection")
2237 (description
2238 "Testscenarios provides clean dependency injection for Python unittest
2239style tests.")
3f641af0 2240 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2241
2242(define-public python2-testscenarios
2243 (package-with-python2 python-testscenarios))
2244
dac79ecc
DT
2245(define-public python-testresources
2246 (package
2247 (name "python-testresources")
2248 (version "0.2.7")
2249 (source
2250 (origin
2251 (method url-fetch)
2252 (uri (string-append
2253 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2254 version ".tar.gz"))
2255 (sha256
2256 (base32
2257 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2258 (build-system python-build-system)
dac79ecc
DT
2259 (home-page "https://launchpad.net/testresources")
2260 (synopsis
2261 "Pyunit extension for managing test resources")
2262 (description
2263 "Testresources is an extension to Python's unittest to allow declarative
2264use of resources by test cases.")
3f641af0 2265 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2266
2267(define-public python2-testresources
2268 (package-with-python2 python-testresources))
2269
070ab058
DT
2270(define-public python-subunit
2271 (package
2272 (name "python-subunit")
2273 (version "0.0.21")
2274 (source
2275 (origin
2276 (method url-fetch)
2277 (uri (string-append
2278 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2279 version ".tar.gz"))
2280 (sha256
2281 (base32
2282 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2283 (build-system python-build-system)
f22efa01 2284 (propagated-inputs
b52ad371
HG
2285 `(("python-extras" ,python-extras)
2286 ("python-mimeparse" ,python-mimeparse)))
2287 (native-inputs
2288 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2289 (home-page "http://launchpad.net/subunit")
2290 (synopsis "Python implementation of the subunit protocol")
2291 (description
2292 "Python-subunit is a Python implementation of the subunit test streaming
2293protocol.")
3f641af0 2294 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2295
2296(define-public python2-subunit
2297 (package-with-python2 python-subunit))
2298
d2a8db92
HG
2299;; Recent versions of python-fixtures and python-testrepository need
2300;; python-pbr for packaging, which itself needs these two packages for
2301;; testing.
2302;; To fix this circular dependency, we use a build of python-pbr, based on the
2303;; same source, just without any test dependencies and with tests disabled.
2304;; python-pbr-minmal is then used to package python-fixtures and
2305;; python-testrepository.
2306;; Strictly speaking we currently could remove the test-requirements from the
2307;; normal python-pbr package (and save this package) since test are disabled
2308;; there anyway. But this may change in future.
2309(define python-pbr-minimal
cd49454b 2310 (package
d2a8db92 2311 (name "python-pbr-minimal")
269504a7 2312 (version "3.0.1")
7787ef76
CR
2313 (source
2314 (origin
2315 (method url-fetch)
d2a8db92 2316 (uri (pypi-uri "pbr" version))
7787ef76
CR
2317 (sha256
2318 (base32
269504a7 2319 "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p"))))
7787ef76
CR
2320 (build-system python-build-system)
2321 (arguments
d2a8db92
HG
2322 `(#:tests? #f))
2323 (home-page "http://docs.openstack.org/developer/pbr/")
2324 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2325 (description
d2a8db92 2326 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2327 (license license:asl2.0)))
7787ef76 2328
d2a8db92
HG
2329(define python2-pbr-minimal
2330 (package-with-python2 python-pbr-minimal))
7787ef76 2331
1ef09c0c 2332(define-public python-pbr
e25f0174 2333 (package
d2a8db92 2334 (inherit python-pbr-minimal)
e25f0174 2335 (name "python-pbr")
e25f0174
BW
2336 (arguments
2337 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2338 (propagated-inputs
d2a8db92
HG
2339 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2340 (native-inputs
e25f0174 2341 `(("python-fixtures" ,python-fixtures)
d2a8db92 2342 ;; discover, coverage, hacking, subunit
e25f0174 2343 ("python-mock" ,python-mock)
d2a8db92 2344 ("python-six" ,python-six)
e25f0174
BW
2345 ("python-sphinx" ,python-sphinx)
2346 ("python-testrepository" ,python-testrepository)
2347 ("python-testresources" ,python-testresources)
2348 ("python-testscenarios" ,python-testscenarios)
2349 ("python-testtools" ,python-testtools)
2350 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2351 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2352 (description
2353 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2354and sensible default behaviors into your setuptools run. It will set
2355versions, process requirements files and generate AUTHORS and ChangeLog file
2356from git information.
2357")))
1ef09c0c
BW
2358
2359(define-public python2-pbr
e25f0174 2360 (package-with-python2 python-pbr))
1ef09c0c 2361
7787ef76
CR
2362(define-public python-fixtures
2363 (package
2364 (name "python-fixtures")
13fcc6df 2365 (version "1.4.0")
7787ef76
CR
2366 (source
2367 (origin
2368 (method url-fetch)
13fcc6df 2369 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2370 (sha256
2371 (base32
13fcc6df 2372 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76 2373 (build-system python-build-system)
f6c1ef18
MB
2374 (arguments
2375 '(#:phases
2376 (modify-phases %standard-phases
2377 (replace 'check
2378 (lambda _
2379 (zero? (system* "python" "-m" "testtools.run"
2380 "fixtures.test_suite")))))))
7787ef76 2381 (propagated-inputs
ae92cadd 2382 `(("python-six" ,python-six)))
e7881f3d 2383 (native-inputs
f6c1ef18
MB
2384 `(("python-mock" ,python-mock)
2385 ("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2386 ("python-testtools" ,python-testtools)))
7787ef76
CR
2387 (home-page "https://launchpad.net/python-fixtures")
2388 (synopsis "Python test fixture library")
2389 (description
2390 "Fixtures provides a way to create reusable state, useful when writing
2391Python tests.")
3f641af0 2392 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2393
cd49454b
DT
2394(define-public python2-fixtures
2395 (package-with-python2 python-fixtures))
2396
b24a0c00
DT
2397(define-public python-testrepository
2398 (package
2399 (name "python-testrepository")
2400 (version "0.0.20")
2401 (source
2402 (origin
2403 (method url-fetch)
2404 (uri (string-append
2405 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2406 version ".tar.gz"))
2407 (sha256
2408 (base32
2409 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2410 (build-system python-build-system)
90110ef9
MB
2411 (arguments
2412 ;; FIXME: Many tests are failing.
2413 '(#:tests? #f))
05de40c5 2414 (propagated-inputs
b2e66edf
HG
2415 `(("python-fixtures" ,python-fixtures)
2416 ("python-subunit" ,python-subunit)
b52ad371
HG
2417 ("python-testtools" ,python-testtools)))
2418 (native-inputs
2419 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2420 ("python-mimeparse" ,python-mimeparse)))
2421 (home-page "https://launchpad.net/testrepository")
2422 (synopsis "Database for Python test results")
2423 (description "Testrepository provides a database of test results which can
2424be used as part of a developer's workflow to check things such as what tests
2425have failed since the last commit or what tests are currently failing.")
3f641af0 2426 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2427
2428(define-public python2-testrepository
2429 (package-with-python2 python-testrepository))
2430
243a009a
DT
2431(define-public python-coverage
2432 (package
2433 (name "python-coverage")
4d4cf3dd 2434 (version "4.1")
243a009a
DT
2435 (source
2436 (origin
2437 (method url-fetch)
82a3c582 2438 (uri (pypi-uri "coverage" version))
243a009a
DT
2439 (sha256
2440 (base32
4d4cf3dd 2441 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2442 (build-system python-build-system)
bd10e677
MB
2443 (arguments
2444 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2445 '(#:tests? #f))
243a009a
DT
2446 (home-page "http://nedbatchelder.com/code/coverage")
2447 (synopsis "Code coverage measurement for Python")
2448 (description
2449 "Coverage measures code coverage, typically during test execution. It
2450uses the code analysis tools and tracing hooks provided in the Python standard
2451library to determine which lines are executable, and which have been
2452executed.")
3f641af0 2453 (license license:bsd-3)))
243a009a
DT
2454
2455(define-public python2-coverage
2456 (package-with-python2 python-coverage))
2457
12f839fd
EF
2458(define-public python-cov-core
2459 (package
2460 (name "python-cov-core")
2461 (version "1.15.0")
2462 (source
2463 (origin
2464 (method url-fetch)
2465 (uri (pypi-uri "cov-core" version))
2466 (sha256
2467 (base32
2468 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2469 (build-system python-build-system)
f78e1c27 2470 (propagated-inputs
12f839fd
EF
2471 `(("python-coverage" ,python-coverage)))
2472 (home-page "https://github.com/schlamar/cov-core")
49d5e338 2473 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
12f839fd 2474 (description
49d5e338
TGR
2475 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2476and @code{nose2-cov}. It is useful for developing coverage plugins for these
2477testing frameworks.")
f210e944 2478 (license license:expat)))
12f839fd
EF
2479
2480(define-public python2-cov-core
f210e944 2481 (package-with-python2 python-cov-core))
12f839fd 2482
041358fb
DT
2483(define-public python-discover
2484 (package
2485 (name "python-discover")
2486 (version "0.4.0")
2487 (source
2488 (origin
2489 (method url-fetch)
2490 (uri (string-append
2491 "https://pypi.python.org/packages/source/d/discover/discover-"
2492 version ".tar.gz"))
2493 (sha256
2494 (base32
2495 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2496 (build-system python-build-system)
041358fb
DT
2497 (home-page "http://pypi.python.org/pypi/discover/")
2498 (synopsis
2499 "Python test discovery for unittest")
2500 (description
2501 "Discover provides test discovery for unittest, a feature that has been
e881752c 2502backported from Python 2.7 for Python 2.4+.")
3f641af0 2503 (license license:bsd-3)))
041358fb
DT
2504
2505(define-public python2-discover
2506 (package-with-python2 python-discover))
2507
a480bc41
EB
2508(define-public behave
2509 (package
2510 (name "behave")
287cfd1a 2511 (version "1.2.5")
a480bc41
EB
2512 (source (origin
2513 (method url-fetch)
287cfd1a 2514 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2515 (sha256
2516 (base32
287cfd1a 2517 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2518 (build-system python-build-system)
f22efa01 2519 (propagated-inputs
f3b98f4f 2520 `(("python-six" ,python-six)
a480bc41
EB
2521 ("python-parse" ,python-parse)
2522 ("python-parse-type" ,python-parse-type)))
2523 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2524 ;PyHamcrest>=1.8
7bf837fd 2525 (home-page "https://github.com/behave/behave")
a480bc41
EB
2526 (synopsis "Python behavior-driven development")
2527 (description
2528 "Behave is a tool for behavior-driven development in python.
2529Behavior-driven development (or BDD) is an agile software development
2530technique that encourages collaboration between developers, QA and
2531non-technical or business participants in a software project. Behave uses
2532tests written in a natural language style, backed up by Python code.")
3f641af0 2533 (license license:x11)))
c7303d3c
DT
2534
2535(define-public python-exif-read
2536 (package
2537 (name "python-exif-read")
2a2d0981 2538 (version "2.1.2")
c7303d3c
DT
2539 (source (origin
2540 (method url-fetch)
2a2d0981 2541 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2542 (sha256
2543 (base32
2a2d0981 2544 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2545 (build-system python-build-system)
c7303d3c
DT
2546 (arguments `(#:tests? #f)) ; no tests
2547 (home-page "https://github.com/ianare/exif-py")
2548 (synopsis "Python library to extract EXIF data from image files")
2549 (description
2550 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2551files.")
3f641af0 2552 (license license:bsd-3)))
c7303d3c
DT
2553
2554(define-public python2-exif-read
2555 (package-with-python2 python-exif-read))
d5f89b22
DT
2556
2557(define-public python-pyld
2558 (package
2559 (name "python-pyld")
8957af32 2560 (version "0.7.1")
d5f89b22
DT
2561 (source (origin
2562 (method url-fetch)
af1ab773 2563 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2564 (sha256
2565 (base32
8957af32 2566 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2567 (build-system python-build-system)
d5f89b22 2568 (arguments `(#:tests? #f)) ; no tests
7bf837fd 2569 (home-page "https://github.com/digitalbazaar/pyld")
d5f89b22
DT
2570 (synopsis "Python implementation of the JSON-LD specification")
2571 (description
2572 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2573 (license license:bsd-3)))
d5f89b22
DT
2574
2575(define-public python2-pyld
2576 (package-with-python2 python-pyld))
3a1f9a68
DT
2577
2578(define-public python-certifi
2579 (package
2580 (name "python-certifi")
28576403 2581 (version "2017.1.23")
3a1f9a68
DT
2582 (source (origin
2583 (method url-fetch)
9a41f443 2584 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2585 (sha256
2586 (base32
28576403 2587 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
3a1f9a68 2588 (build-system python-build-system)
28576403 2589 (home-page "https://certifi.io/")
3a1f9a68
DT
2590 (synopsis "Python CA certificate bundle")
2591 (description
2592 "Certifi is a Python library that contains a CA certificate bundle, which
2593is used by the Requests library to verify HTTPS requests.")
3f641af0 2594 (license license:asl2.0)))
3a1f9a68
DT
2595
2596(define-public python2-certifi
2597 (package-with-python2 python-certifi))
e6cfbd36 2598
12c270dd
RW
2599(define-public python-click
2600 (package
2601 (name "python-click")
d4acb6db 2602 (version "6.7")
12c270dd
RW
2603 (source
2604 (origin
2605 (method url-fetch)
375f224b 2606 (uri (pypi-uri "click" version))
12c270dd 2607 (sha256
43accb58 2608 (base32
d4acb6db 2609 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
12c270dd 2610 (build-system python-build-system)
e2ab5a09
BW
2611 (arguments
2612 `(#:phases
2613 (modify-phases %standard-phases
2614 (add-after 'unpack 'fix-paths
2615 (lambda* (#:key inputs #:allow-other-keys)
2616 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2617 "cross-libc" "libc"))))
2618 (substitute* "click/_unicodefun.py"
2619 (("'locale'")
2620 (string-append "'" glibc "/bin/locale'"))))
97be1bc2
MB
2621 #t))
2622 (replace 'check
2623 (lambda _
2624 (zero? (system* "make" "test")))))))
2625 (native-inputs
2626 `(("python-pytest" ,python-pytest)))
12c270dd
RW
2627 (home-page "http://click.pocoo.org")
2628 (synopsis "Command line library for Python")
2629 (description
2630 "Click is a Python package for creating command line interfaces in a
2631composable way with as little code as necessary. Its name stands for
2632\"Command Line Interface Creation Kit\". It's highly configurable but comes
2633with sensible defaults out of the box.")
3f641af0 2634 (license license:bsd-3)))
12c270dd
RW
2635
2636(define-public python2-click
2637 (package-with-python2 python-click))
2638
addc808d
EF
2639(define-public python-wheel
2640 (package
2641 (name "python-wheel")
0e6df70b 2642 (version "0.30.0a0")
e1ba0749
EF
2643 (source
2644 (origin
2645 (method url-fetch)
2646 (uri (pypi-uri "wheel" version))
2647 (sha256
2648 (base32
0e6df70b 2649 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
e1ba0749
EF
2650 (build-system python-build-system)
2651 (native-inputs
f3b98f4f 2652 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2653 ("python-pytest-cov" ,python-pytest-cov)))
2654 (home-page "https://bitbucket.org/pypa/wheel/")
2655 (synopsis "Format for built Python packages")
2656 (description
2657 "A wheel is a ZIP-format archive with a specially formatted filename and
2658the @code{.whl} extension. It is designed to contain all the files for a PEP
2659376 compatible install in a way that is very close to the on-disk format. Many
2660packages will be properly installed with only the @code{Unpack} step and the
2661unpacked archive preserves enough information to @code{Spread} (copy data and
2662scripts to their final locations) at any later time. Wheel files can be
2663installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2664 (license license:expat)
2665 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2666
2667(define-public python2-wheel
8ad4ae20
LF
2668 (let ((wheel (package-with-python2
2669 (strip-python2-variant python-wheel))))
264ae686 2670 (package (inherit wheel)
8ad4ae20
LF
2671 (native-inputs `(("python2-functools32" ,python2-functools32)
2672 ,@(package-native-inputs wheel))))))
2673
addc808d 2674
ae641128 2675(define-public python-requests
e6cfbd36 2676 (package
ae641128 2677 (name "python-requests")
da5db988 2678 (version "2.13.0")
e6cfbd36
DT
2679 (source (origin
2680 (method url-fetch)
5d691657 2681 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2682 (sha256
2683 (base32
da5db988 2684 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
cff0ccf9 2685 ;; TODO: unbundle urllib3 and chardet.
e6cfbd36 2686 (build-system python-build-system)
cff0ccf9
MB
2687 (arguments
2688 ;; FIXME: Some tests require network access.
2689 '(#:tests? #f))
e6cfbd36
DT
2690 (home-page "http://python-requests.org/")
2691 (synopsis "Python HTTP library")
2692 (description
2693 "Requests is a Python HTTP client library. It aims to be easier to use
2694than Python’s urllib2 library.")
3f641af0 2695 (license license:asl2.0)))
864b5211 2696
e9005180
DT
2697;; Some software requires an older version of Requests, notably Docker
2698;; Compose.
2699(define-public python-requests-2.7
2700 (package (inherit python-requests)
2701 (version "2.7.0")
2702 (source (origin
2703 (method url-fetch)
2704 (uri (pypi-uri "requests" version))
2705 (sha256
2706 (base32
2707 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2708
ae641128 2709(define-public python2-requests
8ad4ae20 2710 (package-with-python2 python-requests))
ae641128 2711
ea521b42
DT
2712(define-public python-vcversioner
2713 (package
2714 (name "python-vcversioner")
538fe019 2715 (version "2.16.0.0")
ea521b42
DT
2716 (source
2717 (origin
2718 (method url-fetch)
2719 (uri (pypi-uri "vcversioner" version))
2720 (sha256
2721 (base32
538fe019 2722 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2723 (build-system python-build-system)
ea521b42
DT
2724 (synopsis "Python library for version number discovery")
2725 (description "Vcversioner is a Python library that inspects tagging
2726information in a variety of version control systems in order to discover
2727version numbers.")
2728 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2729 (license license:isc)))
ea521b42
DT
2730
2731(define-public python2-vcversioner
f210e944 2732 (package-with-python2 python-vcversioner))
ae641128 2733
864b5211
DT
2734(define-public python-jsonschema
2735 (package
2736 (name "python-jsonschema")
b3667afb 2737 (version "2.5.1")
864b5211
DT
2738 (source (origin
2739 (method url-fetch)
2740 (uri
2741 (string-append
2742 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2743 version ".tar.gz"))
2744 (sha256
2745 (base32
b3667afb 2746 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2747 (build-system python-build-system)
8bcd6b91
EF
2748 (arguments
2749 '(#:phases
2750 (modify-phases %standard-phases
2751 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2752 (native-inputs
8bcd6b91
EF
2753 `(("python-nose" ,python-nose)
2754 ("python-vcversioner" ,python-vcversioner)))
2755 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2756 (synopsis "Implementation of JSON Schema for Python")
2757 (description
2758 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2759 (license license:expat)
2760 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2761
2762(define-public python2-jsonschema
a14600ec
LF
2763 (let ((jsonschema (package-with-python2
2764 (strip-python2-variant python-jsonschema))))
264ae686 2765 (package (inherit jsonschema)
eaba9d66 2766 (native-inputs
8bcd6b91 2767 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2768 ,@(package-native-inputs jsonschema)))
2769 (propagated-inputs
2770 `(("python2-functools32" ,python2-functools32))))))
850189b8 2771
7734ed7a
OP
2772(define-public python-schema
2773 (package
2774 (name "python-schema")
2775 (version "0.6.6")
2776 (source
2777 (origin
2778 (method url-fetch)
2779 (uri (pypi-uri "schema" version))
2780 (sha256
2781 (base32
2782 "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
2783 (build-system python-build-system)
2784 (native-inputs
2785 `(("python-pytest" ,python-pytest)))
2786 (home-page "https://github.com/keleshev/schema")
2787 (synopsis "Simple data validation library")
2788 (description
2789 "@code{python-schema} is a library for validating Python data
2790structures, such as those obtained from config-files, forms, external
2791services or command-line parsing, converted from JSON/YAML (or
2792something else) to Python data-types.")
2793 (license license:psfl)))
2794
2795(define-public python2-schema
2796 (package-with-python2 python-schema))
2797
2798(define-public python-schema-0.5
2799 (package (inherit python-schema)
2800 (version "0.5.0")
2801 (source
2802 (origin
2803 (method url-fetch)
2804 (uri (pypi-uri "schema" version))
2805 (sha256
2806 (base32
2807 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
2808
2809(define-public python2-schema-0.5
2810 (package-with-python2 python-schema-0.5))
2811
9f21414d 2812(define-public python-kitchen
2813 (package
2814 (name "python-kitchen")
2815 (version "1.2.4")
2816 (source
2817 (origin
2818 (method url-fetch)
2819 (uri (pypi-uri "kitchen" version))
2820 (sha256
2821 (base32
2822 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2823 (build-system python-build-system)
2824 (propagated-inputs
2825 `(("python-chardet" ,python-chardet)))
cb542830 2826 (home-page "https://github.com/fedora-infra/kitchen")
9f21414d 2827 (synopsis "Python API for snippets")
2828 (description "@code{kitchen} module provides a python API for all sorts of
2829little useful snippets of code that everybody ends up writing for their projects
2830but never seem big enough to build an independent release. Use kitchen and stop
2831cutting and pasting that code over and over.")
2832 (license (list license:lgpl2.1+
2833 ;; subprocess.py, test_subprocess.py,
2834 ;; kitchen/pycompat25/defaultdict.py:
2835 license:psfl))))
2836
2837(define-public python2-kitchen
2838 (package-with-python2 python-kitchen))
2839
850189b8
DT
2840(define-public python-unidecode
2841 (package
2842 (name "python-unidecode")
5754fe95 2843 (version "0.04.20")
850189b8
DT
2844 (source (origin
2845 (method url-fetch)
8925d4f3 2846 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2847 (sha256
2848 (base32
5754fe95 2849 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
850189b8 2850 (build-system python-build-system)
850189b8
DT
2851 (home-page "https://pypi.python.org/pypi/Unidecode")
2852 (synopsis "ASCII transliterations of Unicode text")
2853 (description
2854 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2855useful when integrating with legacy code that doesn't support Unicode, or for
2856ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2857machine identifiers from human-readable Unicode strings that should still be
2858somewhat intelligeble.")
3f641af0 2859 (license license:gpl2+)))
850189b8
DT
2860
2861(define-public python2-unidecode
2862 (package-with-python2 python-unidecode))
6d45fef4
DT
2863
2864(define-public python-pyjwt
2865 (package
2866 (name "python-pyjwt")
7e31427f 2867 (version "1.5.2")
6d45fef4
DT
2868 (source
2869 (origin
2870 (method url-fetch)
eb31d4b4 2871 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2872 (sha256
2873 (base32
7e31427f
MB
2874 "0pvr3iymab7v2qz74ann760z7qahqgqszxz5iqqbaqv4z2zz0y8i"))
2875 (modules '((guix build utils)))
2876 (snippet
2877 '(begin
2878 (for-each delete-file-recursively
2879 (find-files "." "\\.pyc$"))
2880 #t))))
6d45fef4 2881 (build-system python-build-system)
eb31d4b4 2882 (native-inputs
7e31427f 2883 `(("python-pytest" ,python-pytest-3.0)
130fe994
HG
2884 ("python-pytest-cov" ,python-pytest-cov)
2885 ("python-pytest-runner" ,python-pytest-runner)))
7bf837fd 2886 (home-page "https://github.com/progrium/pyjwt")
6d45fef4
DT
2887 (synopsis "JSON Web Token implementation in Python")
2888 (description
2889 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2890 (license license:expat)))
6d45fef4
DT
2891
2892(define-public python2-pyjwt
2893 (package-with-python2 python-pyjwt))
2894
a80488c2 2895(define-public python-pykka
2896 (package
2897 (name "python-pykka")
2898 (version "1.2.1")
2899 (source
2900 (origin
2901 (method url-fetch)
2902 (uri (pypi-uri "Pykka" version))
2903 (sha256
2904 (base32
2905 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2906 (build-system python-build-system)
2907 (native-inputs
2908 `(("python-mock" ,python-mock)
2909 ("python-nose" ,python-nose)
2910 ("python-gevent" ,python-gevent)
2911 ("python-eventlet" ,python-eventlet)))
2912 (home-page "https://www.pykka.org/")
2913 (synopsis "Pykka is a Python implementation of the actor model")
2914 (description
2915 "Pykka is a Python implementation of the actor model.
2916The actor model introduces some simple rules to control the sharing
2917of state and cooperation between execution units, which makes it
2918easier to build concurrent applications.")
2919 (license license:asl2.0)))
2920
2921(define-public python2-pykka
2922 (package-with-python2 python-pykka))
2923
2cec1f6f
DT
2924(define-public python-oauthlib
2925 (package
2926 (name "python-oauthlib")
bde2171d 2927 (version "1.0.3")
2cec1f6f
DT
2928 (source (origin
2929 (method url-fetch)
bde2171d 2930 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2931 (sha256
2932 (base32
bde2171d 2933 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2934 (build-system python-build-system)
bde2171d 2935 (native-inputs
bb06aa34 2936 `(("python-nose" ,python-nose)
c616b5d3 2937 ("python-mock" ,python-mock)
bde2171d 2938 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2939 ("python-pyjwt" ,python-pyjwt)
2940 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2941 (home-page "https://github.com/idan/oauthlib")
2942 (synopsis "OAuth implementation for Python")
2943 (description
2944 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2945OAuth request-signing logic.")
3f641af0 2946 (license license:bsd-3)
59f151ec 2947 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2948
2949(define-public python2-oauthlib
59f151ec 2950 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2951 (package
2952 (inherit base)
00e10c6e 2953 (native-inputs `(("python2-unittest2" ,python2-unittest2)
59f151ec 2954 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2955
2956(define-public python-itsdangerous
2957 (package
2958 (name "python-itsdangerous")
2959 (version "0.24")
2960 (source
2961 (origin
2962 (method url-fetch)
2963 (uri (string-append
2964 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2965 version ".tar.gz"))
2966 (sha256
2967 (base32
2968 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2969 (build-system python-build-system)
7bf837fd 2970 (home-page "https://github.com/mitsuhiko/itsdangerous")
ec5dbb5c
DT
2971 (synopsis "Python library for passing data to/from untrusted environments")
2972 (description
2973 "Itsdangerous provides various helpers to pass trusted data to untrusted
2974environments and back.")
f210e944 2975 (license license:bsd-3)))
ec5dbb5c
DT
2976
2977(define-public python2-itsdangerous
f210e944 2978 (package-with-python2 python-itsdangerous))
5731cae3 2979
8d12be1e
RW
2980(define-public python-pyyaml
2981 (package
2982 (name "python-pyyaml")
bf5e4bc4 2983 (version "3.12")
8d12be1e
RW
2984 (source
2985 (origin
2986 (method url-fetch)
bf5e4bc4 2987 (uri (pypi-uri "PyYAML" version))
8d12be1e
RW
2988 (sha256
2989 (base32
bf5e4bc4 2990 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
8d12be1e
RW
2991 (build-system python-build-system)
2992 (inputs
2993 `(("libyaml" ,libyaml)))
8d12be1e
RW
2994 (home-page "http://pyyaml.org/wiki/PyYAML")
2995 (synopsis "YAML parser and emitter for Python")
2996 (description
2997 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2998complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2999API, and sensible error messages. PyYAML supports standard YAML tags and
3000provides Python-specific tags that allow to represent an arbitrary Python
3001object.")
3002 (license license:expat)))
3003
3004(define-public python2-pyyaml
3005 (package-with-python2 python-pyyaml))
3006
5731cae3
DT
3007(define-public python-virtualenv
3008 (package
3009 (name "python-virtualenv")
58d04dba 3010 (version "15.0.3")
5731cae3
DT
3011 (source
3012 (origin
3013 (method url-fetch)
17804240 3014 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
3015 (sha256
3016 (base32
58d04dba 3017 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 3018 (build-system python-build-system)
17804240
EF
3019 (arguments
3020 `(#:phases
3021 (modify-phases %standard-phases
58d04dba
RW
3022 (replace 'check
3023 (lambda _
3024 ;; Disable failing test. See upstream bug report
3025 ;; https://github.com/pypa/virtualenv/issues/957
3026 (substitute* "tests/test_virtualenv.py"
3027 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
3028 (zero? (system* "py.test")))))))
e7881f3d 3029 (native-inputs
f3b98f4f 3030 `(("python-mock" ,python-mock)
17804240 3031 ("python-pytest" ,python-pytest)))
5731cae3
DT
3032 (home-page "https://virtualenv.pypa.io/")
3033 (synopsis "Virtual Python environment builder")
3034 (description
3035 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 3036 (license license:expat)))
5731cae3
DT
3037
3038(define-public python2-virtualenv
3039 (package-with-python2 python-virtualenv))
8176d4d5
DT
3040
3041(define-public python-markupsafe
3042 (package
3043 (name "python-markupsafe")
3044 (version "0.23")
3045 (source
3046 (origin
3047 (method url-fetch)
3048 (uri (string-append
3049 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
3050 version ".tar.gz"))
3051 (sha256
3052 (base32
3053 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
3054 (build-system python-build-system)
7bf837fd 3055 (home-page "https://github.com/mitsuhiko/markupsafe")
8176d4d5
DT
3056 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
3057 (description
3058 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
3059for Python.")
3f641af0 3060 (license license:bsd-3)))
8176d4d5
DT
3061
3062(define-public python2-markupsafe
3063 (package-with-python2 python-markupsafe))
fe34f0d1
DT
3064
3065(define-public python-jinja2
3066 (package
3067 (name "python-jinja2")
bac5fd21 3068 (version "2.9.6")
fe34f0d1
DT
3069 (source
3070 (origin
3071 (method url-fetch)
e98149b3 3072 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
3073 (sha256
3074 (base32
bac5fd21 3075 "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx"))))
fe34f0d1 3076 (build-system python-build-system)
bac5fd21
RW
3077 (arguments
3078 `(#:phases
3079 (modify-phases %standard-phases
3080 ;; These files cannot be built with Python < 3.6. See
3081 ;; https://github.com/pallets/jinja/issues/655
3082 ;; FIXME: Remove this when the "python" package is upgraded.
3083 (add-after 'unpack 'delete-incompatible-files
3084 (lambda _
3085 (for-each delete-file
3086 '("jinja2/asyncsupport.py"
3087 "jinja2/asyncfilters.py"))
3088 #t)))))
f22efa01 3089 (propagated-inputs
f3b98f4f 3090 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
3091 (home-page "http://jinja.pocoo.org/")
3092 (synopsis "Python template engine")
3093 (description
3094 "Jinja2 is a small but fast and easy to use stand-alone template engine
3095written in pure Python.")
3f641af0 3096 (license license:bsd-3)))
fe34f0d1
DT
3097
3098(define-public python2-jinja2
3099 (package-with-python2 python-jinja2))
3580ab8b 3100
f7d17ac7
EE
3101(define-public python-pystache
3102 (package
3103 (name "python-pystache")
3104 (version "0.5.4")
3105 (source (origin
3106 (method url-fetch)
3107 (uri (pypi-uri "pystache" version))
3108 (sha256
3109 (base32
3110 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
3111 (build-system python-build-system)
8bd5164b
MB
3112 (arguments
3113 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
f7d17ac7
EE
3114 (home-page "http://defunkt.io/pystache/")
3115 (synopsis "Python logic-less template engine")
3116 (description
3117 "Pystache is a Python implementation of the framework agnostic,
3118logic-free templating system Mustache.")
8bd5164b
MB
3119 (license license:expat)
3120 (properties `((python2-variant . ,(delay python2-pystache))))))
f7d17ac7
EE
3121
3122(define-public python2-pystache
8bd5164b
MB
3123 (package (inherit (package-with-python2
3124 (strip-python2-variant python-pystache)))
3125 (arguments
3126 `(#:python ,python-2
3127 #:phases
3128 (modify-phases %standard-phases
3129 (replace 'check
3130 (lambda _
3131 (zero? (system* "python" "test_pystache.py")))))))))
f7d17ac7 3132
1285119b
RW
3133(define-public python-joblib
3134 (package
3135 (name "python-joblib")
f34ef331 3136 (version "0.10.3")
1285119b
RW
3137 (source (origin
3138 (method url-fetch)
f34ef331 3139 (uri (pypi-uri "joblib" version))
1285119b
RW
3140 (sha256
3141 (base32
6aa5f1ca
HG
3142 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
3143 (modules '((guix build utils)))
3144 (snippet
3145 '(begin
3146 ;; Remove pre-compiled .pyc files from source.
3147 (for-each delete-file-recursively
3148 (find-files "." "__pycache__" #:directories? #t))
3149 (for-each delete-file (find-files "." "\\.pyc$"))
3150 #t))))
1285119b 3151 (build-system python-build-system)
a8dd960a
RW
3152 (arguments
3153 `(#:phases
3154 (modify-phases %standard-phases
3155 (add-before 'check 'disable-failing-tests
3156 (lambda _
3157 ;; This numpydoc tests fails for unknown reasons
3158 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
3159 ;; This numpydoc test depends on matplotlib, which is not a
3160 ;; required input.
3161 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
3162 ;; These tests fail to execute sys.executable
3163 (substitute* "joblib/test/test_parallel.py"
3164 (("import nose" line)
3165 (string-append "from nose.plugins.skip import SkipTest\n" line))
3166 (("def test_nested_parallel_warnings" line)
3167 (string-append "@SkipTest\n" line))
3168 (("def test_parallel_with_interactively_defined_functions" line)
3169 (string-append "@SkipTest\n" line)))
3170 #t)))))
f052ec9a 3171 ;; Provide nose to enable tests command
1285119b 3172 (native-inputs
f3b98f4f 3173 `(("python-nose" ,python-nose)
f34ef331
RW
3174 ("python-sphinx" ,python-sphinx)
3175 ("python-docutils" ,python-docutils)
3176 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
3177 (home-page "http://pythonhosted.org/joblib/")
3178 (synopsis "Using Python functions as pipeline jobs")
3179 (description
3180 "Joblib is a set of tools to provide lightweight pipelining in Python.
3181In particular, joblib offers: transparent disk-caching of the output values
3182and lazy re-evaluation (memoize pattern), easy simple parallel computing
3183logging and tracing of the execution.")
3f641af0 3184 (license license:bsd-3)))
1285119b
RW
3185
3186(define-public python2-joblib
3187 (package-with-python2 python-joblib))
3188
3580ab8b
DT
3189(define-public python-docutils
3190 (package
3191 (name "python-docutils")
00e0ca7c 3192 (version "0.13.1")
3580ab8b
DT
3193 (source
3194 (origin
3195 (method url-fetch)
00e0ca7c 3196 (uri (pypi-uri "docutils" version))
3580ab8b
DT
3197 (sha256
3198 (base32
00e0ca7c 3199 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 3200 (build-system python-build-system)
3580ab8b
DT
3201 (arguments
3202 '(#:tests? #f)) ; no setup.py test command
3203 (home-page "http://docutils.sourceforge.net/")
3204 (synopsis "Python Documentation Utilities")
3205 (description
3206 "Docutils is a modular system for processing documentation into useful
3207formats, such as HTML, XML, and LaTeX. For input Docutils supports
3208reStructuredText.")
3209 ;; Most of the source code is public domain, but some source files are
3210 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 3211 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
3212
3213(define-public python2-docutils
3214 (package-with-python2 python-docutils))
fb35b7c0
DT
3215
3216(define-public python-pygments
3217 (package
3218 (name "python-pygments")
7d2e758d 3219 (version "2.1.3")
fb35b7c0
DT
3220 (source
3221 (origin
3222 (method url-fetch)
9f442285 3223 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
3224 (sha256
3225 (base32
7d2e758d 3226 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
fb35b7c0 3227 (build-system python-build-system)
995cb99e
MB
3228 (arguments
3229 ;; FIXME: Tests require sphinx, which depends on this.
3230 '(#:tests? #f))
fb35b7c0
DT
3231 (home-page "http://pygments.org/")
3232 (synopsis "Syntax highlighting")
3233 (description
3234 "Pygments is a syntax highlighting package written in Python.")
3f641af0 3235 (license license:bsd-2)))
fb35b7c0
DT
3236
3237(define-public python2-pygments
3238 (package-with-python2 python-pygments))
9dd6078d 3239
5f94ec91
RW
3240(define-public python-sphinxcontrib-websupport
3241 (package
3242 (name "python-sphinxcontrib-websupport")
3243 (version "1.0.1")
3244 (source (origin
3245 (method url-fetch)
3246 (uri (pypi-uri "sphinxcontrib-websupport" version))
3247 (sha256
3248 (base32
3249 "1f9f0wjpi9nhikbyaz6d19s7qvzdf1nq2g5dsh640fma4q9rd1bs"))))
3250 (build-system python-build-system)
3251 (propagated-inputs
3252 `(("python-mock" ,python-mock)
3253 ("python-pytest" ,python-pytest)
3254 ("python-xapian-bindings" ,python-xapian-bindings)))
3255 ;; Needed for running the test suite
3256 (native-inputs
3257 `(("python-six" ,python-six)
3258 ("python-jinja2" ,python-jinja2)
3259 ("python-docutils" ,python-docutils)
3260 ("python-sphinx" ,python-sphinx)
3261 ("python-sqlalchemy" ,python-sqlalchemy)
3262 ("python-whoosh" ,python-whoosh)))
3263 (home-page "http://sphinx-doc.org/")
3264 (synopsis "Sphinx API for web applications")
3265 (description "This package provides a Python API to easily integrate
3266Sphinx documentation into your web application. It provides tools to
3267integrate Sphinx documents in web templates and to handle searches.")
3268 (license license:bsd-3)))
3269
9dd6078d
DT
3270(define-public python-sphinx
3271 (package
3272 (name "python-sphinx")
c227458a 3273 (version "1.5.1")
9dd6078d
DT
3274 (source
3275 (origin
3276 (method url-fetch)
9a8acd00 3277 (uri (pypi-uri "Sphinx" version))
9dd6078d
DT
3278 (sha256
3279 (base32
c227458a 3280 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
9dd6078d 3281 (build-system python-build-system)
03cb5f9e 3282 (arguments
c227458a
DM
3283 `(#:phases
3284 (modify-phases %standard-phases
3285 (replace 'check
3286 (lambda _
3287 ;; Requires Internet access.
3288 (delete-file "tests/test_build_linkcheck.py")
3289 (zero? (system* "make" "test")))))))
f22efa01 3290 (propagated-inputs
9a8acd00
DM
3291 `(("python-imagesize" ,python-imagesize)
3292 ("python-sphinx-alabaster-theme"
3293 ,python-sphinx-alabaster-theme)
3294 ("python-babel" ,python-babel)
3295 ("python-snowballstemmer" ,python-snowballstemmer)
9dd6078d 3296 ("python-docutils" ,python-docutils)
9a8acd00
DM
3297 ("python-jinja2" ,python-jinja2)
3298 ("python-pygments" ,python-pygments)
a10b9810 3299 ("python-requests" ,python-requests)
9a8acd00 3300 ("python-six" ,python-six)))
c227458a
DM
3301 (native-inputs
3302 `(("graphviz" ,graphviz)
3303 ("python-html5lib" ,python-html5lib)
3304 ("python-mock" ,python-mock)
a10b9810 3305 ("python-nose" ,python-nose)))
9dd6078d
DT
3306 (home-page "http://sphinx-doc.org/")
3307 (synopsis "Python documentation generator")
3308 (description "Sphinx is a tool that makes it easy to create documentation
3309for Python projects or other documents consisting of multiple reStructuredText
3310sources.")
9a8acd00
DM
3311 (license license:bsd-3)
3312 (properties `((python2-variant . ,(delay python2-sphinx))))))
9dd6078d 3313
e7304ab1
RW
3314(define-public python-sphinx-1.6
3315 (package (inherit python-sphinx)
3316 (name "python-sphinx")
3317 (version "1.6.3")
3318 (source (origin
3319 (method url-fetch)
3320 (uri (pypi-uri "Sphinx" version))
3321 (sha256
3322 (base32
3323 "1rj6f3i8hmrx2qlkshi5kp5xcy98dlynwlyl05yvflj5f66dp2xg"))))
3324 (arguments
3325 `(#:phases
3326 (modify-phases %standard-phases
3327 (replace 'check
3328 (lambda _
3329 ;; Requires Internet access.
3330 (delete-file "tests/test_build_linkcheck.py")
3331 (substitute* "tests/test_build_latex.py"
3332 (("@pytest.mark.sphinx\\('latex', testroot='images'\\)")
3333 "@pytest.mark.skip()"))
3334 (zero? (system* "make" "test")))))))
3335 (propagated-inputs
3336 `(("python-sphinxcontrib-websupport" ,python-sphinxcontrib-websupport)
3337 ,@(package-propagated-inputs python-sphinx)))
3338 (native-inputs
3339 `(("python-pytest" ,python-pytest-3.0)
3340 ("imagemagick" ,imagemagick) ; for "convert"
3341 ,@(package-native-inputs python-sphinx)))
3342 (properties '())))
3343
3061b331
MFM
3344(define-public python-sphinx-1.5.3
3345 (package
3346 (inherit python-sphinx)
3347 (name "python-sphinx")
3348 (version "1.5.3")
3349 (source
3350 (origin
3351 (method url-fetch)
3352 (uri (pypi-uri "Sphinx" version))
3353 (sha256
3354 (base32
3355 "0kw1axswbvaavr8ggyf4qr6hnisnrzlbkkcdada69vk1x9xjassg"))))
3356 (native-inputs
23b9168d 3357 `(("python-pytest" ,python-pytest-3.0)
3061b331
MFM
3358 ,@(package-native-inputs python-sphinx)))))
3359
9dd6078d 3360(define-public python2-sphinx
9a8acd00
DM
3361 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3362 (package
3363 (inherit base)
3364 (native-inputs `(("python2-mock" ,python2-mock)
c227458a 3365 ("python2-enum34" ,python2-enum34)
9a8acd00
DM
3366 ,@(package-native-inputs base)))
3367 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3368 ,@(package-propagated-inputs base))))))
6888830b 3369
ad320b20
RW
3370(define-public python-sphinx-rtd-theme
3371 (package
3372 (name "python-sphinx-rtd-theme")
af842d45 3373 (version "0.2.4")
ad320b20
RW
3374 (source
3375 (origin
3376 (method url-fetch)
af842d45 3377 (uri (pypi-uri "sphinx_rtd_theme" version))
ad320b20
RW
3378 (sha256
3379 (base32
af842d45 3380 "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
ad320b20 3381 (build-system python-build-system)
9893cff3 3382 (arguments '(#:tests? #f)) ; No tests.
9d3a15b4
LF
3383 (propagated-inputs
3384 `(("python-sphinx" ,python-sphinx)))
ad320b20
RW
3385 (home-page "https://github.com/snide/sphinx_rtd_theme/")
3386 (synopsis "ReadTheDocs.org theme for Sphinx")
3387 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 3388 (license license:expat)))
ad320b20
RW
3389
3390(define-public python2-sphinx-rtd-theme
3391 (package-with-python2 python-sphinx-rtd-theme))
3392
fe94cf0c
HG
3393(define-public python-rst.linker
3394 (package
3395 (name "python-rst.linker")
3396 (version "1.7")
3397 (source
3398 (origin
3399 (method url-fetch)
3400 (uri (pypi-uri "rst.linker" version))
3401 (sha256
3402 (base32
3403 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
3404 (build-system python-build-system)
3405 (propagated-inputs
22d7360b 3406 `(("python-dateutil" ,python-dateutil)
fe94cf0c
HG
3407 ("python-six" ,python-six)))
3408 (native-inputs
3409 `(("python-setuptools-scm" ,python-setuptools-scm)))
3410 ;; Test would require path.py, which would introduce a cyclic dependence.
3411 (arguments `(#:tests? #f))
3412 ;; Note: As of version 1.7 the documentation is not worth building.
3413 (home-page "https://github.com/jaraco/rst.linker")
3414 (synopsis "Sphinx plugin to add links and timestamps")
3415 (description "rst.linker allows to automatically replace text by a
3416reStructuredText external reference or timestamps. It's primary purpose is to
3417augment the changelog, but it can be used for other documents, too.")
3418 (license license:expat)))
3419
3420(define-public python2-rst.linker
3421 (package-with-python2 python-rst.linker))
3422
f4de5b3b
CAW
3423(define-public python-feedgenerator
3424 (package
3425 (name "python-feedgenerator")
d5c183d1 3426 (version "1.9")
f4de5b3b 3427 (source
f4de5b3b 3428 (origin
f0412aa2
EF
3429 (method url-fetch)
3430 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
3431 (sha256
3432 (base32
d5c183d1 3433 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
7c88bcf4
HG
3434 (modules '((guix build utils)))
3435 (snippet
3436 '(begin
3437 ;; Remove pre-compiled .pyc files from source.
3438 (for-each delete-file-recursively
3439 (find-files "." "__pycache__" #:directories? #t))
3440 (for-each delete-file (find-files "." "\\.pyc$"))
3441 #t))))
f4de5b3b 3442 (build-system python-build-system)
dae73d9b 3443 (propagated-inputs
f3b98f4f 3444 `(("python-pytz" ,python-pytz)
f4de5b3b 3445 ("python-six" ,python-six)))
f0412aa2 3446 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3447 (synopsis
3448 "Standalone version of Django's Atom/RSS feed generator")
3449 (description
3450 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3451which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3452 (license license:bsd-3)))
f4de5b3b
CAW
3453
3454(define-public python2-feedgenerator
3455 (package-with-python2 python-feedgenerator))
3456
59ad30e3
CAW
3457(define-public python-blinker
3458 (package
3459 (name "python-blinker")
7fb9ff4d 3460 (version "1.4")
59ad30e3
CAW
3461 (source
3462 (origin
3463 (method url-fetch)
7fb9ff4d 3464 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3465 (sha256
3466 (base32
7fb9ff4d 3467 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3468 (build-system python-build-system)
59ad30e3
CAW
3469 (home-page "http://pythonhosted.org/blinker/")
3470 (synopsis "Fast, simple object-to-object and broadcast signaling")
3471 (description
3472 "Blinker provides a fast dispatching system that allows any number of
3473interested parties to subscribe to events, or \"signals\".")
3474 (license license:expat)))
3475
3476(define-public python2-blinker
3477 (package-with-python2 python-blinker))
3478
b8050e71
CAW
3479(define-public pelican
3480 (package
3481 (name "pelican")
11f97c27 3482 (version "3.6.3")
b8050e71
CAW
3483 (source
3484 (origin
3485 (method url-fetch)
11f97c27 3486 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3487 (sha256
3488 (base32
11f97c27 3489 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3490 (build-system python-build-system)
f22efa01 3491 (propagated-inputs
b8050e71
CAW
3492 `(("python-feedgenerator" ,python-feedgenerator)
3493 ("python-jinja2" ,python-jinja2)
3494 ("python-pygments" ,python-pygments)
3495 ("python-docutils" ,python-docutils)
3496 ("python-pytz" ,python-pytz)
3497 ("python-blinker" ,python-blinker)
3498 ("python-unidecode" ,python-unidecode)
3499 ("python-six" ,python-six)
22d7360b 3500 ("python-dateutil" ,python-dateutil)))
b8050e71
CAW
3501 (home-page "http://getpelican.com/")
3502 (arguments
3503 `(;; XXX Requires a lot more packages to do unit tests :P
3504 #:tests? #f
3505 #:phases (modify-phases %standard-phases
3506 (add-before
3507 'install 'adjust-requires
3508 ;; Since feedgenerator is installed from git, it doesn't
3509 ;; conform to the version requirements.
3510 ;;
3511 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3512 ;; version requirement so setuptools doesn't get confused.
3513 (lambda _
3514 (substitute* "setup.py"
3515 (("['\"]feedgenerator.*?['\"]")
3516 "'feedgenerator'")))))))
3517 (synopsis "Python-based static site publishing system")
3518 (description
3519 "Pelican is a tool to generate a static blog from reStructuredText,
3520Markdown input files, and more. Pelican uses Jinja2 for templating
3521and is very extensible.")
3f641af0 3522 (license license:agpl3+)))
b8050e71 3523
240ca4aa
RW
3524(define-public python-scikit-learn
3525 (package
3526 (name "python-scikit-learn")
d7eea7d7 3527 (version "0.19.0")
240ca4aa
RW
3528 (source
3529 (origin
3530 (method url-fetch)
3531 (uri (string-append
3532 "https://github.com/scikit-learn/scikit-learn/archive/"
3533 version ".tar.gz"))
7e21b9fb 3534 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3535 (sha256
3536 (base32
d7eea7d7 3537 "0g7q4ri75mj93wpa9bp83a3jmrf3dm5va9h7k4zkbcxr6bgqka15"))))
240ca4aa
RW
3538 (build-system python-build-system)
3539 (arguments
3540 `(#:phases
4d25c486
MB
3541 (modify-phases %standard-phases
3542 (delete 'check)
3543 (add-after 'install 'check
3544 ;; Running tests from the source directory requires
3545 ;; an "inplace" build with paths relative to CWD.
3546 ;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
3547 ;; Use the installed version instead.
3548 (lambda* (#:key inputs outputs #:allow-other-keys)
3549 (add-installed-pythonpath inputs outputs)
3550 ;; some tests require access to "$HOME"
3551 (setenv "HOME" "/tmp")
3552 ;; Step out of the source directory just to be sure.
3553 (chdir "..")
3554 (zero? (system* "nosetests" "-v" "sklearn")))))))
240ca4aa 3555 (inputs
328bb95d
HG
3556 `(("openblas" ,openblas)))
3557 (native-inputs
8e401ab6
RW
3558 `(("python-nose" ,python-nose)
3559 ("python-cython" ,python-cython)))
240ca4aa
RW
3560 (propagated-inputs
3561 `(("python-numpy" ,python-numpy)
3562 ("python-scipy" ,python-scipy)))
3563 (home-page "http://scikit-learn.org/")
3564 (synopsis "Machine Learning in Python")
3565 (description
3566 "Scikit-learn provides simple and efficient tools for data
3567mining and data analysis.")
1b5241c5 3568 (license license:bsd-3)))
240ca4aa
RW
3569
3570(define-public python2-scikit-learn
1b5241c5 3571 (package-with-python2 python-scikit-learn))
240ca4aa 3572
12f8f9bb
RW
3573(define-public python-scikit-image
3574 (package
3575 (name "python-scikit-image")
3576 (version "0.11.3")
3577 (source
3578 (origin
3579 (method url-fetch)
3580 (uri (string-append
3581 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3582 version ".tar.gz"))
3583 (sha256
3584 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3585 (build-system python-build-system)
9026e689
MB
3586 (arguments
3587 ;; TODO: Some tests require running X11 server. Disable them?
3588 '(#:tests? #f))
b83e2333 3589 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3590 (propagated-inputs
3591 `(("python-matplotlib" ,python-matplotlib)
3592 ("python-networkx" ,python-networkx)
12f8f9bb 3593 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3594 ("python-pillow" ,python-pillow)))
3595 (native-inputs
b83e2333
HG
3596 `(("python-numpy" ,python-numpy)
3597 ("python-cython" ,python-cython)
3598 ("python-six" ,python-six)))
12f8f9bb
RW
3599 (home-page "http://scikit-image.org/")
3600 (synopsis "Image processing in Python")
3601 (description
e881752c 3602 "Scikit-image is a collection of algorithms for image processing.")
12733594 3603 (license license:bsd-3)))
12f8f9bb
RW
3604
3605(define-public python2-scikit-image
12733594 3606 (package-with-python2 python-scikit-image))
12f8f9bb 3607
5394a6a6
RW
3608(define-public python-redis
3609 (package
3610 (name "python-redis")
911a8faf 3611 (version "2.10.5")
5394a6a6
RW
3612 (source
3613 (origin
3614 (method url-fetch)
911a8faf 3615 (uri (pypi-uri "redis" version))
5394a6a6 3616 (sha256
911a8faf 3617 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
5394a6a6
RW
3618 (build-system python-build-system)
3619 ;; Tests require a running Redis server
3620 (arguments '(#:tests? #f))
cf8124b0
HG
3621 ;; As long as we are not running test, we do not need this input :-)
3622 ;;(native-inputs
3623 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3624 (home-page "https://github.com/andymccurdy/redis-py")
3625 (synopsis "Redis Python client")
3626 (description
3627 "This package provides a Python interface to the Redis key-value store.")
3628 (license license:expat)))
3629
3630(define-public python2-redis
3631 (package-with-python2 python-redis))
3632
748cef5b
RW
3633(define-public python-rq
3634 (package
3635 (name "python-rq")
eed206cb 3636 (version "0.7.1")
748cef5b
RW
3637 (source
3638 (origin
3639 (method url-fetch)
eed206cb 3640 (uri (pypi-uri "rq" version))
748cef5b 3641 (sha256
eed206cb 3642 (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
748cef5b
RW
3643 (build-system python-build-system)
3644 (propagated-inputs
3645 `(("python-click" ,python-click)
3646 ("python-redis" ,python-redis)))
748cef5b
RW
3647 (home-page "http://python-rq.org/")
3648 (synopsis "Simple job queues for Python")
3649 (description
3650 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3651processing them in the background with workers. It is backed by Redis and it
3652is designed to have a low barrier to entry.")
3f641af0 3653 (license license:bsd-2)))
748cef5b
RW
3654
3655(define-public python2-rq
3656 (package-with-python2 python-rq))
3657
6888830b
FB
3658(define-public python-cython
3659 (package
3660 (name "python-cython")
e3b861ce 3661 (version "0.26")
6888830b
FB
3662 (source
3663 (origin
3664 (method url-fetch)
56918e26 3665 (uri (pypi-uri "Cython" version))
6888830b
FB
3666 (sha256
3667 (base32
e3b861ce 3668 "0riciynnr0r68cvg6r3gbhi9x7h44pdwb7926m6n5vfs5p1f492c"))))
6888830b
FB
3669 (build-system python-build-system)
3670 ;; we need the full python package and not just the python-wrapper
3671 ;; because we need libpython3.3m.so
3672 (inputs
3673 `(("python" ,python)))
3674 (arguments
3675 `(#:phases
b92f651b
EF
3676 (modify-phases %standard-phases
3677 (add-before 'check 'set-HOME
3678 ;; some tests require access to "$HOME/.cython"
e3b861ce 3679 (lambda _ (setenv "HOME" "/tmp") #t))
b92f651b
EF
3680 (replace 'check
3681 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3682 (home-page "http://cython.org/")
3683 (synopsis "C extensions for Python")
3684 (description "Cython is an optimising static compiler for both the Python
3685programming language and the extended Cython programming language. It makes
3686writing C extensions for Python as easy as Python itself.")
3f641af0 3687 (license license:asl2.0)
48b311b1 3688 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3689
3690(define-public python2-cython
48b311b1
LC
3691 (package (inherit (package-with-python2
3692 (strip-python2-variant python-cython)))
6888830b
FB
3693 (name "python2-cython")
3694 (inputs
3695 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3696
ee5fb7ee
AV
3697;; The RPython toolchain currently does not support Python 3.
3698(define-public python2-rpython
3699 (package
3700 (name "python2-rpython")
3701 (version "0.1.4")
3702 (source
3703 (origin
3704 (method url-fetch)
3705 (uri (pypi-uri "rpython" version))
3706 (sha256
3707 (base32
3708 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3709 (build-system python-build-system)
3710 (arguments `(#:python ,python-2))
3711 (native-inputs
f3b98f4f 3712 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3713 (home-page "https://rpython.readthedocs.org")
3714 (synopsis "Framework for implementing interpreters and virtual machines")
3715 (description "RPython is a translation and support framework for
3716producing implementations of dynamic languages, emphasizing a clean separation
3717between language specification and implementation aspects.")
3718 (license license:expat)))
3719
7ccb71e0 3720(define-public python-numpy
0da98533 3721 (package
7ccb71e0
TD
3722 (name "python-numpy")
3723 (version "1.12.0")
0da98533
FB
3724 (source
3725 (origin
3726 (method url-fetch)
7ccb71e0
TD
3727 (uri (string-append
3728 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3729 (file-name (string-append name "-" version ".tar.gz"))
0da98533
FB
3730 (sha256
3731 (base32
7ccb71e0 3732 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
0da98533
FB
3733 (build-system python-build-system)
3734 (inputs
328bb95d 3735 `(("openblas" ,openblas)
cba256f8 3736 ("lapack" ,lapack)))
0da98533 3737 (native-inputs
7ccb71e0
TD
3738 `(("python-cython" ,python-cython)
3739 ("python-nose" ,python-nose)
2efabc55 3740 ("gfortran" ,gfortran)))
0da98533
FB
3741 (arguments
3742 `(#:phases
2efabc55
HG
3743 (modify-phases %standard-phases
3744 (add-before 'build 'set-environment-variables
3745 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3746 (call-with-output-file "site.cfg"
3747 (lambda (port)
cba256f8
RW
3748 (format port
3749 "[openblas]
dbdfe515
RW
3750libraries = openblas
3751library_dirs = ~a/lib
3752include_dirs = ~a/include
cba256f8 3753
2efabc55
HG
3754# backslash-n to make emacs happy
3755\n[lapack]
cba256f8
RW
3756lapack_libs = lapack
3757library_dirs = ~a/lib
3758include_dirs = ~a/include
3759"
3760 (assoc-ref inputs "openblas")
3761 (assoc-ref inputs "openblas")
3762 (assoc-ref inputs "lapack")
3763 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3764 ;; Use "gcc" executable, not "cc".
3765 (substitute* "numpy/distutils/system_info.py"
3766 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3767 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3768 #t))
6a843168
FB
3769 ;; Tests can only be run after the library has been installed and not
3770 ;; within the source directory.
2efabc55
HG
3771 (delete 'check)
3772 (add-after 'install 'check
3773 (lambda* (#:key outputs inputs #:allow-other-keys)
3774 ;; Make installed package available for running the tests
3775 (add-installed-pythonpath inputs outputs)
6a843168 3776 (with-directory-excursion "/tmp"
89b5c60e 3777 (zero? (system* "python" "-c"
2efabc55 3778 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3779 (home-page "http://www.numpy.org/")
3780 (synopsis "Fundamental package for scientific computing with Python")
3781 (description "NumPy is the fundamental package for scientific computing
e881752c 3782with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3783object, sophisticated (broadcasting) functions, tools for integrating C/C++
3784and Fortran code, useful linear algebra, Fourier transform, and random number
3785capabilities.")
3f641af0 3786 (license license:bsd-3)))
0da98533 3787
7ccb71e0
TD
3788(define-public python2-numpy
3789 (package-with-python2 python-numpy))
15bfe6d6 3790
460fccd4 3791(define-public python-munch
3792 (package
3793 (name "python-munch")
3794 (version "2.0.4")
3795 (source
3796 (origin
3797 (method url-fetch)
3798 (uri (pypi-uri "munch" version))
3799 (sha256
3800 (base32
3801 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3802 (build-system python-build-system)
3803 (home-page "https://github.com/Infinidat/munch")
3804 (synopsis "Dot-accessible dictionary")
3805 (description "Munch is a dot-accessible dictionary similar to JavaScript
3806objects.")
3807 (license license:expat)))
3808
3809(define-public python2-munch
3810 (package-with-python2 python-munch))
3811
beed6abc
RW
3812(define-public python-colormath
3813 (package
3814 (name "python-colormath")
3815 (version "2.1.1")
3816 (source
3817 (origin
3818 (method url-fetch)
3819 (uri (pypi-uri "colormath" version))
3820 (sha256
3821 (base32
3822 "01wp5xwm0a89wdm1dc9rr1ij90idzdiiipxdj1yslhqzkhnjnfh0"))))
3823 (build-system python-build-system)
3824 (propagated-inputs
3825 `(("python-networkx" ,python-networkx)
3826 ("python-numpy" ,python-numpy)))
3827 (home-page "https://github.com/gtaylor/python-colormath")
3828 (synopsis "Color math and conversion library")
3829 (description
3830 "This is a Python library for color math and conversions.")
3831 (license license:bsd-3)))
3832
3833(define-public python2-colormath
3834 (package-with-python2 python-colormath))
3835
4a7d2009
RW
3836(define-public python-spectra
3837 (package
3838 (name "python-spectra")
3839 (version "0.0.8")
3840 (source
3841 (origin
3842 (method url-fetch)
3843 (uri (pypi-uri "spectra" version))
3844 (sha256
3845 (base32
3846 "0n87kzhpkml2s2q91rdkl8wz2kkv5b0bkrgww45lxa5vq34qh6w5"))))
3847 (build-system python-build-system)
3848 (arguments
3849 `(#:phases
3850 (modify-phases %standard-phases
3851 (replace 'check
3852 (lambda _
3853 (zero? (system* "nosetests" "-v")))))))
3854 (propagated-inputs
3855 `(("python-colormath" ,python-colormath)))
3856 (native-inputs
3857 `(("python-nose" ,python-nose)))
3858 (home-page "http://github.com/jsvine/spectra")
3859 (synopsis "Color scales and color conversion")
3860 (description
3861 "This package provides a Python library intended to make color math,
3862color scales, and color space conversion easy. It has support for:
3863
3864@enumerate
3865@item Color scales
3866@item Color ranges
3867@item Color blending
3868@item Brightening/darkening colors
3869@item Saturating/desaturating colors
3870@item Conversion to/from multiple color spaces.
3871@end enumerate\n")
3872 (license license:expat)))
3873
3874(define-public python2-spectra
3875 (package-with-python2 python-spectra))
3876
3a1bfe18
RW
3877(define-public python2-fastlmm
3878 (package
3879 (name "python2-fastlmm")
154d0016 3880 (version "0.2.21")
3a1bfe18
RW
3881 (source
3882 (origin
3883 (method url-fetch)
b074e7d4 3884 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3885 (sha256
3886 (base32
154d0016 3887 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3888 (build-system python-build-system)
3889 (arguments
3890 `(#:python ,python-2)) ; only Python 2.7 is supported
3891 (propagated-inputs
3892 `(("python2-numpy" ,python2-numpy)
3893 ("python2-scipy" ,python2-scipy)
3894 ("python2-matplotlib" ,python2-matplotlib)
3895 ("python2-pandas" ,python2-pandas)
3896 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3897 ("python2-pysnptools" ,python2-pysnptools)))
3898 (native-inputs
3899 `(("unzip" ,unzip)
2efabc55 3900 ("python2-cython" ,python2-cython)
1b6d7c3f
MB
3901 ("python2-mock" ,python2-mock)
3902 ("python2-nose" ,python2-nose)))
3a1bfe18
RW
3903 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3904 (synopsis "Perform genome-wide association studies on large data sets")
3905 (description
3906 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3907Models, is a program for performing both single-SNP and SNP-set genome-wide
3908association studies (GWAS) on extremely large data sets.")
3f641af0 3909 (license license:asl2.0)))
3a1bfe18 3910
7ccb71e0
TD
3911(define-public python-numpy-documentation
3912 (package
3913 (name "python-numpy-documentation")
3914 (version (package-version python-numpy))
3915 (source (package-source python-numpy))
3916 (build-system python-build-system)
2ee8869a 3917 (native-inputs
7ccb71e0
TD
3918 `(("python-matplotlib" ,python-matplotlib)
3919 ("python-numpy" ,python-numpy)
3920 ("pkg-config" ,pkg-config)
2efabc55
HG
3921 ("python-sphinx" ,python-sphinx)
3922 ("python-numpydoc" ,python-numpydoc)
8b89c171
RW
3923 ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
3924 texlive-fonts-ec
3925 texlive-generic-ifxetex
3926 texlive-generic-pdftex
3927 texlive-latex-amsfonts
3928 texlive-latex-capt-of
3929 texlive-latex-cmap
3930 texlive-latex-environ
3931 texlive-latex-eqparbox
3932 texlive-latex-etoolbox
3933 texlive-latex-expdlist
3934 texlive-latex-fancyhdr
3935 texlive-latex-fancyvrb
3936 texlive-latex-fncychap
3937 texlive-latex-float
3938 texlive-latex-framed
3939 texlive-latex-geometry
3940 texlive-latex-graphics
3941 texlive-latex-hyperref
3942 texlive-latex-mdwtools
3943 texlive-latex-multirow
3944 texlive-latex-oberdiek
3945 texlive-latex-parskip
3946 texlive-latex-preview
3947 texlive-latex-tabulary
3948 texlive-latex-threeparttable
3949 texlive-latex-titlesec
3950 texlive-latex-trimspaces
3951 texlive-latex-ucs
3952 texlive-latex-upquote
3953 texlive-latex-url
3954 texlive-latex-varwidth
3955 texlive-latex-wrapfig)))
2ee8869a
FB
3956 ("texinfo" ,texinfo)
3957 ("perl" ,perl)
7ccb71e0
TD
3958 ("scipy-sphinx-theme"
3959 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3960 (method git-fetch)
3961 (uri (git-reference
3962 (url "https://github.com/scipy/scipy-sphinx-theme.git")
67416769 3963 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
7ccb71e0
TD
3964 (sha256
3965 (base32
67416769 3966 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
7ccb71e0 3967 ,@(package-native-inputs python-numpy)))
2ee8869a 3968 (arguments
7ccb71e0
TD
3969 `(#:tests? #f ; we're only generating the documentation
3970 #:phases
3971 (modify-phases %standard-phases
3972 (delete 'build)
3973 (replace 'install
3974 (lambda* (#:key inputs outputs #:allow-other-keys)
3975 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3976 (doc (string-append
3977 data "/doc/" ,name "-"
3978 ,(package-version python-numpy)))
3979 (info-reader (string-append data "/info"))
3980 (html (string-append doc "/html"))
3981 (scipy-sphinx-theme "scipy-sphinx-theme")
3982 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3983 (pyver ,(string-append "PYVER=")))
8b89c171
RW
3984
3985 ;; FIXME: this is needed to for texlive-union to generate
3986 ;; fonts, which are not found.
3987 (setenv "HOME" "/tmp")
3988
7ccb71e0
TD
3989 (with-directory-excursion "doc"
3990 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3991 (mkdir-p html)
3992 (system* "make" "html" pyver)
3993 (system* "make" "latex" "PAPER=a4" pyver)
3994 (system* "make" "-C" "build/latex"
3995 "all-pdf" "PAPER=a4" pyver)
3996 ;; FIXME: Generation of the info file fails.
3997 ;; (system* "make" "info" pyver)
3998 ;; (mkdir-p info)
3999 ;; (copy-file "build/texinfo/numpy.info"
4000 ;; (string-append info "/numpy.info"))
4001 (for-each (lambda (file)
4002 (copy-file (string-append "build/latex" file)
4003 (string-append doc file)))
4004 '("/numpy-ref.pdf" "/numpy-user.pdf"))
4005 (with-directory-excursion "build/html"
4006 (for-each (lambda (file)
4007 (let* ((dir (dirname file))
4008 (tgt-dir (string-append html "/" dir)))
4009 (unless (equal? "." dir)
4010 (mkdir-p tgt-dir))
4011 (install-file file html)))
4012 (find-files "." ".*")))))
4013 #t)))))
4014 (home-page (package-home-page python-numpy))
4015 (synopsis "Documentation for the python-numpy package")
4016 (description (package-description python-numpy))
4017 (license (package-license python-numpy))))
2ee8869a 4018
7ccb71e0
TD
4019(define-public python2-numpy-documentation
4020 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
4021 (package
4022 (inherit numpy-documentation)
4023 (native-inputs `(("python2-functools32" ,python2-functools32)
4024 ,@(package-native-inputs numpy-documentation))))))
2ee8869a 4025
0151a8df 4026(define-public python-pygit2
4027 (package
4028 (name "python-pygit2")
8c0c0c4d 4029 (version "0.26.0")
0151a8df 4030 (source
4031 (origin
4032 (method url-fetch)
4033 (uri (pypi-uri "pygit2" version))
4034 (sha256
4035 (base32
8c0c0c4d 4036 "1cbc488ra3kg7r3qky17ms0szi3cda2d96qfkv1l9djsy9hnvw57"))
bb6043fe
MB
4037 (patches
4038 (search-patches "python-pygit2-disable-network-tests.patch"))))
0151a8df 4039 (build-system python-build-system)
4040 (propagated-inputs
4041 `(("python-six" ,python-six)
4042 ("python-cffi" ,python-cffi)
4043 ("libgit2" ,libgit2)
4044 ("python-tox" ,python-tox)))
4045 (home-page "https://github.com/libgit2/pygit2")
4046 (synopsis "Python bindings for libgit2")
4047 (description "Pygit2 is a set of Python bindings to the libgit2 shared
4048library, libgit2 implements Git plumbing.")
4049 ;; GPL2.0 only, with linking exception.
4050 (license license:gpl2)))
4051
4052(define-public python2-pygit2
4053 (package-with-python2 python-pygit2))
4054
15bfe6d6
FB
4055(define-public python-pyparsing
4056 (package
4057 (name "python-pyparsing")
9e5ee6b6 4058 (version "2.2.0")
15bfe6d6
FB
4059 (source
4060 (origin
4061 (method url-fetch)
de67e922
LF
4062 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
4063 "/pyparsing-" version
15bfe6d6
FB
4064 "/pyparsing-" version ".tar.gz"))
4065 (sha256
4066 (base32
9e5ee6b6 4067 "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8"))))
15bfe6d6
FB
4068 (build-system python-build-system)
4069 (outputs '("out" "doc"))
4070 (arguments
4071 `(#:tests? #f ; no test target
15bfe6d6 4072 #:phases
007176e7
MB
4073 (modify-phases %standard-phases
4074 (add-after 'install 'install-doc
4075 (lambda* (#:key outputs #:allow-other-keys)
4076 (let* ((doc (string-append (assoc-ref outputs "doc")
4077 "/share/doc/" ,name "-" ,version))
4078 (html-doc (string-append doc "/html"))
4079 (examples (string-append doc "/examples")))
4080 (mkdir-p html-doc)
4081 (mkdir-p examples)
4082 (for-each
4083 (lambda (dir tgt)
4084 (map (lambda (file)
4085 (install-file file tgt))
4086 (find-files dir ".*")))
4087 (list "docs" "htmldoc" "examples")
4088 (list doc html-doc examples))
4089 #t))))))
15bfe6d6
FB
4090 (home-page "http://pyparsing.wikispaces.com")
4091 (synopsis "Python parsing class library")
4092 (description
4093 "The pyparsing module is an alternative approach to creating and
4094executing simple grammars, vs. the traditional lex/yacc approach, or the use
4095of regular expressions. The pyparsing module provides a library of classes
4096that client code uses to construct the grammar directly in Python code.")
bd3fa666 4097 (license license:expat)))
15bfe6d6
FB
4098
4099(define-public python2-pyparsing
4100 (package-with-python2 python-pyparsing))
4101
ec00de35
FB
4102(define-public python-numpydoc
4103 (package
4104 (name "python-numpydoc")
4105 (version "0.5")
4106 (source
4107 (origin
4108 (method url-fetch)
89b5c60e 4109 (uri (string-append
ec00de35
FB
4110 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
4111 version ".tar.gz"))
4112 (sha256
4113 (base32
5e4d8f67
AE
4114 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
4115 (modules '((guix build utils)))
4116 (snippet
4117 '(begin
4118 ;; Drop a test requiring matplotlib, which we cannot add as an
4119 ;; input since it would create a circular dependency: Extend the
4120 ;; test for Python 3, where it is already dropped, to Python 2.
4121 (substitute* "numpydoc/tests/test_plot_directive.py"
4122 (("3") "2"))))))
ec00de35 4123 (build-system python-build-system)
fe4a8da4 4124 (propagated-inputs
213d1745
HG
4125 `(("python-sphinx" ,python-sphinx)))
4126 (native-inputs
4127 `(("python-nose" ,python-nose)))
ec00de35
FB
4128 (home-page "https://pypi.python.org/pypi/numpydoc")
4129 (synopsis
4130 "Numpy's Sphinx extensions")
4131 (description
4132 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 4133 (license license:bsd-2)))
ec00de35
FB
4134
4135(define-public python2-numpydoc
5e4d8f67 4136 (package-with-python2 python-numpydoc))
1c65314c 4137
1e656049
RW
4138(define-public python-numexpr
4139 (package
4140 (name "python-numexpr")
2ee57340 4141 (version "2.6.1")
1e656049
RW
4142 (source
4143 (origin
4144 (method url-fetch)
26112c0a 4145 (uri (pypi-uri "numexpr" version))
1e656049
RW
4146 (sha256
4147 (base32
2ee57340 4148 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
4149 (build-system python-build-system)
4150 (arguments `(#:tests? #f)) ; no tests included
4151 (propagated-inputs
4152 `(("python-numpy" ,python-numpy)))
4153 (home-page "https://github.com/pydata/numexpr")
4154 (synopsis "Fast numerical expression evaluator for NumPy")
4155 (description
4156 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
4157expressions that operate on arrays are accelerated and use less memory than
4158doing the same calculation in Python. In addition, its multi-threaded
4159capabilities can make use of all your cores, which may accelerate
4160computations, most specially if they are not memory-bounded (e.g. those using
4161transcendental functions).")
f210e944 4162 (license license:expat)))
1e656049
RW
4163
4164(define-public python2-numexpr
f210e944 4165 (package-with-python2 python-numexpr))
1e656049 4166
361d982c
MB
4167(define-public python-cycler
4168 (package
4169 (name "python-cycler")
4170 (version "0.10.0")
4171 (source (origin
4172 (method url-fetch)
4173 (uri (pypi-uri "cycler" version))
4174 (sha256
4175 (base32
4176 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
4177 (build-system python-build-system)
4178 (arguments
4179 ;; XXX: The current version requires 'coveralls' which we don't have.
4180 ;; Enable this for the next release which uses 'python-pytest'.
4181 '(#:tests? #f))
4182 (propagated-inputs
4183 `(("python-six" ,python-six)))
4184 (home-page "http://matplotlib.org/cycler/")
4185 (synopsis "Composable keyword argument iterator")
4186 (description
4187 "When using @code{matplotlib} and plotting more than one line, it is
4188common to want to be able to want to be able to cycle over one or more artist
4189styles; but the plotting logic can quickly become involved.
4190To address this and enable easy cycling over arbitrary @code{kwargs}, the
4191@code{Cycler} class was developed.")
4192 (license license:bsd-3)))
4193
4194(define-public python2-cycler
4195 (package-with-python2 python-cycler))
4196
2aa6d3ae
TD
4197(define-public python-colorspacious
4198 (package
4199 (name "python-colorspacious")
4200 (version "1.1.0")
4201 (source
4202 (origin
4203 (method url-fetch)
4204 (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
4205 version ".tar.gz"))
4206 (file-name (string-append name "-" version))
4207 (sha256
4208 (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
4209 (build-system python-build-system)
4210 (propagated-inputs
4211 `(("python-numpy" ,python-numpy)))
ba062b3e
TD
4212 (native-inputs
4213 `(("python-nose" ,python-nose)))
4214 (arguments
4215 `(#:phases
4216 (modify-phases %standard-phases
4217 (replace 'check
4218 (lambda _
4219 (zero? (system* "nosetests" "--all-modules" "-v" "colorspacious")))))))
2aa6d3ae
TD
4220 (home-page "https://github.com/njsmith/colorspacious")
4221 (synopsis "Python library for colorspace conversions")
4222 (description "@code{colorspacious} is a Python library that lets you
4223convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
4224 (license license:expat)))
4225
4226(define-public python2-colorspacious
4227 (package-with-python2 python-colorspacious))
4228
1c65314c
FB
4229(define-public python-matplotlib
4230 (package
4231 (name "python-matplotlib")
71d20587 4232 (version "2.0.2")
1c65314c
FB
4233 (source
4234 (origin
4235 (method url-fetch)
71d20587 4236 (uri (pypi-uri "matplotlib" version))
1c65314c
FB
4237 (sha256
4238 (base32
71d20587 4239 "1w8z2a1l7s72p1byfz7g03wqhygqxi8w82619dqb3a1lm97w9yqg"))))
1c65314c 4240 (build-system python-build-system)
25f9a068 4241 (propagated-inputs ; the following packages are all needed at run time
4535a93a
TD
4242 `(("python-cycler" ,python-cycler)
4243 ("python-pyparsing" ,python-pyparsing)
25f9a068
FB
4244 ("python-pygobject" ,python-pygobject)
4245 ("gobject-introspection" ,gobject-introspection)
1bbc659f 4246 ("python-tkinter" ,python "tk")
22d7360b 4247 ("python-dateutil" ,python-dateutil)
7ccb71e0 4248 ("python-numpy" ,python-numpy)
ca33a3ad
HG
4249 ("python-pillow" ,python-pillow)
4250 ("python-pytz" ,python-pytz)
4251 ("python-six" ,python-six)
25f9a068
FB
4252 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
4253 ;; from 'gtk+') provides the required 'typelib' files used by
4254 ;; 'gobject-introspection'. The location of these files is set with the
4255 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
4256 ;; is done automatically by a 'native-search-path' procedure. However,
4257 ;; at run-time the user must set this variable as follows:
4258 ;;
4259 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
4260 ("gtk+" ,gtk+)
4261 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
4262 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
4263 ;; object. For this reason we need to import both libraries.
4264 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
4265 ("python-pycairo" ,python-pycairo)
4266 ("python-cairocffi" ,python-cairocffi)))
1c65314c 4267 (inputs
ca33a3ad 4268 `(("libpng" ,libpng)
1c65314c
FB
4269 ("imagemagick" ,imagemagick)
4270 ("freetype" ,freetype)
25f9a068
FB
4271 ("cairo" ,cairo)
4272 ("glib" ,glib)
1c65314c 4273 ;; FIXME: Add backends when available.
1c65314c 4274 ;("python-wxpython" ,python-wxpython)
4535a93a 4275 ("python-pyqt" ,python-pyqt)
1bbc659f
FB
4276 ("tcl" ,tcl)
4277 ("tk" ,tk)))
1c65314c
FB
4278 (native-inputs
4279 `(("pkg-config" ,pkg-config)
ca33a3ad 4280 ("python-nose" ,python-nose)
4535a93a 4281 ("python-mock" ,python-mock)))
1c65314c
FB
4282 (arguments
4283 `(#:phases
42b7009a
DM
4284 (modify-phases %standard-phases
4285 (add-before 'build 'configure-environment
4286 (lambda* (#:key outputs inputs #:allow-other-keys)
4287 (let ((cairo (assoc-ref inputs "cairo"))
4288 (gtk+ (assoc-ref inputs "gtk+")))
4289 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
4290 ;; has not effect.
4291 (setenv "LD_LIBRARY_PATH"
4292 (string-append cairo "/lib:" gtk+ "/lib"))
4293 (setenv "HOME" (getcwd))
4294 (call-with-output-file "setup.cfg"
4295 (lambda (port)
4296 (format port "[directories]~%
1bbc659f 4297basedirlist = ~a,~a~%
57b7b8cd 4298 [rc_options]~%
1bbc659f
FB
4299backend = TkAgg~%"
4300 (assoc-ref inputs "tcl")
4535a93a
TD
4301 (assoc-ref inputs "tk")))))
4302 #t)))))
1c65314c
FB
4303 (home-page "http://matplotlib.org")
4304 (synopsis "2D plotting library for Python")
4305 (description
4306 "Matplotlib is a Python 2D plotting library which produces publication
4307quality figures in a variety of hardcopy formats and interactive environments
4308across platforms. Matplotlib can be used in Python scripts, the python and
4309ipython shell, web application servers, and six graphical user interface
4310toolkits.")
3f641af0 4311 (license license:psfl)
57b7b8cd 4312 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 4313
764c077b 4314(define-public python2-matplotlib
57b7b8cd
LC
4315 (let ((matplotlib (package-with-python2
4316 (strip-python2-variant python-matplotlib))))
764c077b 4317 (package (inherit matplotlib)
88c26834
AE
4318 ;; Make sure to use special packages for Python 2 instead
4319 ;; of those automatically rewritten by package-with-python2.
89b5c60e 4320 (propagated-inputs
7ca0dbc3 4321 `(("python2-pycairo" ,python2-pycairo)
4535a93a 4322 ("python2-functools32" ,python2-functools32)
764c077b 4323 ("python2-pygobject-2" ,python2-pygobject-2)
4535a93a 4324 ("python2-subprocess32" ,python2-subprocess32)
1bbc659f
FB
4325 ("python2-tkinter" ,python-2 "tk")
4326 ,@(fold alist-delete (package-propagated-inputs matplotlib)
4327 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 4328
4535a93a
TD
4329(define-public python-matplotlib-documentation
4330 (package
4331 (name "python-matplotlib-documentation")
4332 (version (package-version python-matplotlib))
4333 (source (package-source python-matplotlib))
4334 (build-system python-build-system)
4335 (native-inputs
4336 `(("python-matplotlib" ,python-matplotlib)
4337 ("python-colorspacious" ,python-colorspacious)
4338 ("python-sphinx" ,python-sphinx)
4339 ("python-numpydoc" ,python-numpydoc)
4340 ("python-ipython" ,python-ipython)
1eaaea41
TD
4341 ("python-mock" ,python-mock)
4342 ("graphviz" ,graphviz)
4535a93a
TD
4343 ("texlive" ,texlive)
4344 ("texinfo" ,texinfo)
4345 ,@(package-native-inputs python-matplotlib)))
4346 (arguments
4347 `(#:tests? #f ; we're only generating documentation
4348 #:phases
4349 (modify-phases %standard-phases
1eaaea41
TD
4350 (replace 'build
4351 (lambda _
4352 (chdir "doc")
4353 ;; Produce pdf in 'A4' format.
4354 (substitute* "conf.py"
4355 (("latex_paper_size = 'letter'") "")
4356 ;; latex_paper_size is deprecated -> set paper size using
4357 ;; latex_elements
4358 (("latex_elements\\['pointsize'\\] = '11pt'" match)
4359 ;; insert at a point where latex_elements{} is defined:
4360 (string-append match "\nlatex_elements['papersize'] = 'a4paper'")))
4361 (zero? (system* "python" "make.py" "html" "latex" "texinfo"))))
4535a93a 4362 (replace 'install
42b7009a 4363 (lambda* (#:key inputs outputs #:allow-other-keys)
4535a93a 4364 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
1eaaea41 4365 (doc (string-append data "/doc/python-matplotlib-" ,version))
42b7009a
DM
4366 (info (string-append data "/info"))
4367 (html (string-append doc "/html")))
1eaaea41
TD
4368 (mkdir-p html)
4369 (mkdir-p info)
4370 (copy-recursively "build/html" html)
4371 (symlink (string-append html "/_images")
4372 (string-append info "/matplotlib-figures"))
4373 (with-directory-excursion "build/texinfo"
4374 (substitute* "matplotlib.texi"
4375 (("@image\\{([^,]*)" all file)
4376 (string-append "@image{matplotlib-figures/" file)))
18b31516 4377 (symlink (string-append html "/_images")
1eaaea41
TD
4378 "./matplotlib-figures")
4379 (system* "makeinfo" "--no-split"
4380 "-o" "matplotlib.info" "matplotlib.texi"))
4381 (copy-file "build/texinfo/matplotlib.info"
4382 (string-append info "/matplotlib.info"))
4383 (copy-file "build/latex/Matplotlib.pdf"
4384 (string-append doc "/Matplotlib.pdf")))
4535a93a
TD
4385 #t)))))
4386 (home-page (package-home-page python-matplotlib))
4387 (synopsis "Documentation for the python-matplotlib package")
4388 (description (package-description python-matplotlib))
4389 (license (package-license python-matplotlib))))
1c65314c 4390
4535a93a
TD
4391(define-public python2-matplotlib-documentation
4392 (package-with-python2 python-matplotlib-documentation))
94914805 4393
0dde6232
RW
4394(define-public python2-pysnptools
4395 (package
4396 (name "python2-pysnptools")
a800018e 4397 (version "0.3.9")
0dde6232
RW
4398 (source
4399 (origin
4400 (method url-fetch)
3f2e9675 4401 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
4402 (sha256
4403 (base32
a800018e 4404 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
4405 (build-system python-build-system)
4406 (arguments
4407 `(#:python ,python-2)) ; only Python 2.7 is supported
4408 (propagated-inputs
4409 `(("python2-numpy" ,python2-numpy)
4410 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
4411 ("python2-pandas" ,python2-pandas)))
4412 (native-inputs
4413 `(("python2-cython" ,python2-cython)))
0dde6232 4414 (native-inputs
f3b98f4f 4415 `(("unzip" ,unzip)))
0dde6232
RW
4416 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
4417 (synopsis "Library for reading and manipulating genetic data")
4418 (description
4419 "PySnpTools is a library for reading and manipulating genetic data. It
4420can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4421those files. It can also efficiently manipulate ranges of integers using set
4422operators such as union, intersection, and difference.")
3f641af0 4423 (license license:asl2.0)))
0dde6232 4424
c9b1b4f9
RW
4425(define-public python-rpy2
4426 (package
4427 (name "python-rpy2")
deee5dda 4428 (version "2.9.0")
c9b1b4f9
RW
4429 (source
4430 (origin
4431 (method url-fetch)
ec3bcbc7 4432 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
4433 (sha256
4434 (base32
deee5dda 4435 "0bqihjrdqwj5r1h86shvfb1p5hfr4a6klv1v54bzfr9r144w3rni"))))
c9b1b4f9 4436 (build-system python-build-system)
444464ec 4437 (arguments
deee5dda
RW
4438 '(#:modules ((ice-9 ftw)
4439 (srfi srfi-1)
4440 (srfi srfi-26)
4441 (guix build utils)
4442 (guix build python-build-system))
4443 #:phases
444464ec 4444 (modify-phases %standard-phases
deee5dda
RW
4445 ;; Without this phase the test loader cannot find the directories, in
4446 ;; which it is supposed to look for test files.
4447 (add-after 'unpack 'fix-tests
4448 (lambda* (#:key outputs #:allow-other-keys)
4449 (substitute* "rpy/tests.py"
4450 (("loader.discover\\(")
4451 "loader.discover(rpy_root + '/' +"))
4452 #t))
4453 (replace 'check
444464ec 4454 (lambda* (#:key outputs inputs #:allow-other-keys)
deee5dda
RW
4455 (let ((cwd (getcwd)))
4456 (setenv "PYTHONPATH"
4457 (string-append cwd "/build/"
4458 (find (cut string-prefix? "lib" <>)
4459 (scandir (string-append cwd "/build")))
4460 ":"
4461 (getenv "PYTHONPATH"))))
444464ec 4462 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
482d9591 4463 (propagated-inputs
deee5dda
RW
4464 `(("python-six" ,python-six)
4465 ("python-jinja2" ,python-jinja2)
4466 ("python-pytz" ,python-pytz)))
c9b1b4f9 4467 (inputs
482d9591 4468 `(("readline" ,readline)
c9b1b4f9
RW
4469 ("icu4c" ,icu4c)
4470 ("pcre" ,pcre)
2d7c4ae3 4471 ("r-minimal" ,r-minimal)
deee5dda
RW
4472 ("r-survival" ,r-survival)
4473 ("r-ggplot2" ,r-ggplot2)
4474 ("r-rsqlite" ,r-rsqlite)
4475 ("r-dplyr" ,r-dplyr)
4476 ("r-dbplyr" ,r-dbplyr)
4477 ("python-numpy" ,python-numpy)))
c9b1b4f9 4478 (native-inputs
f3b98f4f 4479 `(("zlib" ,zlib)))
c9b1b4f9
RW
4480 (home-page "http://rpy.sourceforge.net/")
4481 (synopsis "Python interface to the R language")
4482 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
4483low-level interface to R from Python, a proposed high-level interface,
4484including wrappers to graphical libraries, as well as R-like structures and
4485functions.")
c92483bd
RW
4486 ;; Any of these licenses can be picked for the R interface. The whole
4487 ;; project is released under GPLv2+ according to the license declaration
4488 ;; in "setup.py".
4489 (license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
c9b1b4f9 4490
bb986599
FB
4491(define-public python-scipy
4492 (package
4493 (name "python-scipy")
09efef33 4494 (version "0.19.1")
bb986599
FB
4495 (source
4496 (origin
4497 (method url-fetch)
09efef33 4498 (uri (pypi-uri "scipy" version))
bb986599
FB
4499 (sha256
4500 (base32
09efef33 4501 "1rl411bvla6q7qfdb47fpdnyjhfgzl6smpha33n9ar1klykjr6m1"))))
bb986599 4502 (build-system python-build-system)
dd86c0d1 4503 (propagated-inputs
bb986599
FB
4504 `(("python-numpy" ,python-numpy)
4505 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
4506 ("python-pyparsing" ,python-pyparsing)))
4507 (inputs
4508 `(("lapack" ,lapack)
719b01c1 4509 ("openblas" ,openblas)))
bb986599 4510 (native-inputs
35093253
TD
4511 `(("python-cython" ,python-cython)
4512 ("python-nose" ,python-nose)
dd86c0d1 4513 ("python-sphinx" ,python-sphinx)
5248d49e 4514 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 4515 ("gfortran" ,gfortran)
bb986599
FB
4516 ("perl" ,perl)))
4517 (outputs '("out" "doc"))
4518 (arguments
4519 `(#:phases
16ca6aaa 4520 (modify-phases %standard-phases
16ca6aaa
MB
4521 (add-before 'build 'configure-openblas
4522 (lambda* (#:key inputs #:allow-other-keys)
4523 (call-with-output-file "site.cfg"
4524 (lambda (port)
4525 (format port
4526 "[blas]
719b01c1
RW
4527libraries = openblas
4528library_dirs = ~a/lib
4529include_dirs = ~a/include
d548e6aa
HG
4530
4531# backslash-n to make emacs happy
4532\n[atlas]
719b01c1
RW
4533library_dirs = ~a/lib
4534atlas_libs = openblas
4535"
16ca6aaa
MB
4536 (assoc-ref inputs "openblas")
4537 (assoc-ref inputs "openblas")
4538 (assoc-ref inputs "openblas"))))
db967b64 4539 #t))
35093253
TD
4540 (add-after 'install 'install-doc
4541 (lambda* (#:key inputs outputs #:allow-other-keys)
4542 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4543 (doc (string-append data "/doc/" ,name "-" ,version))
4544 (html (string-append doc "/html"))
4545 (pyver ,(string-append "PYVER=")))
4546 ;; Make installed package available for building the
4547 ;; documentation
4548 (add-installed-pythonpath inputs outputs)
4549 (with-directory-excursion "doc"
4550 ;; Fix generation of images for mathematical expressions.
4551 (substitute* (find-files "source" "conf\\.py")
4552 (("pngmath_use_preview = True")
4553 "pngmath_use_preview = False"))
4554 (mkdir-p html)
4555 (system* "make" "html" pyver)
4556 (with-directory-excursion "build/html"
4557 (for-each (lambda (file)
4558 (let* ((dir (dirname file))
4559 (tgt-dir (string-append html "/" dir)))
4560 (install-file file html)))
4561 (find-files "." ".*")))))
4562 #t))
4563 (add-after 'unpack 'fix-tests
4564 (lambda _
4565 (substitute* "scipy/integrate/tests/test_quadpack.py"
4566 (("libm.so") "libm.so.6"))
4567 #t))
4568 ;; Tests can only be run after the library has been installed and not
4569 ;; within the source directory.
4570 (delete 'check)
4571 (add-after 'install 'check
4572 (lambda* (#:key inputs outputs #:allow-other-keys)
d548e6aa 4573 (add-installed-pythonpath inputs outputs)
35093253
TD
4574 (with-directory-excursion "/tmp"
4575 (zero? (system* "python" "-c"
4576 "import scipy; scipy.test('full')")))
4577 #t)))))
bb986599
FB
4578 (home-page "http://www.scipy.org/")
4579 (synopsis "The Scipy library provides efficient numerical routines")
4580 (description "The SciPy library is one of the core packages that make up
4581the SciPy stack. It provides many user-friendly and efficient numerical
4582routines such as routines for numerical integration and optimization.")
9200fe14 4583 (properties `((python2-variant . ,(delay python2-scipy))))
3f641af0 4584 (license license:bsd-3)))
bb986599 4585
764c077b 4586(define-public python2-scipy
35093253
TD
4587 (package-with-python2
4588 (strip-python2-variant python-scipy)))
bb986599 4589
e537c917
CB
4590(define-public python-sockjs-tornado
4591 (package
4592 (name "python-sockjs-tornado")
4593 (version "1.0.3")
4594 (source
4595 (origin
4596 (method url-fetch)
4597 (uri (pypi-uri "sockjs-tornado" version))
4598 (sha256
4599 (base32
4600 "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
4601 (build-system python-build-system)
4602 (arguments
4603 `(;; There are no tests, and running the test phase requires missing
4604 ;; dependencies
4605 #:tests? #f))
4606 (propagated-inputs
4607 `(("python-tornado" ,python-tornado)))
4608 (home-page "http://github.com/mrjoes/sockjs-tornado/")
4609 (synopsis
4610 "SockJS python server implementation on top of Tornado framework")
4611 (description
4612 "SockJS-tornado provides the server side counterpart to a SockJS client
4613library, through the Tornado framework.
4614
4615SockJS provides a low latency, full duplex, cross-domain communication channel
4616between a web browser and web server.")
4617 (license license:expat)))
4618
4619(define-public python2-sockjs-tornado
4620 (package-with-python2 python-sockjs-tornado))
4621
73acc193 4622(define-public python-socksipy-branch
4623 (package
4624 (name "python-socksipy-branch")
4625 (version "1.01")
4626 (source
4627 (origin
4628 (method url-fetch)
4629 (uri (pypi-uri "SocksiPy-branch" version))
4630 (sha256
4631 (base32
4632 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4633 (build-system python-build-system)
4634 (arguments
4635 `(#:tests? #f)) ; There are no tests
4636 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4637 (synopsis "Python SOCKS module")
4638 (description
4639 "SocksiPy - A Python SOCKS client module. It provides a
4640socket-like interface that supports connections to any TCP
4641service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4642The original version was developed by Dan Haim, this is a
4643branch created by Mario Vilas to address some open issues,
4644as the original project seems to have been abandoned circa 2007.")
4645 (license license:bsd-3)))
4646
4647(define-public python2-socksipy-branch
4648 (package-with-python2 python-socksipy-branch))
4649
94914805
EB
4650(define-public python-sqlalchemy
4651 (package
4652 (name "python-sqlalchemy")
a4ba286b 4653 (version "1.0.12")
94914805
EB
4654 (source
4655 (origin
4656 (method url-fetch)
4657 (uri (string-append "https://pypi.python.org/packages/source/S/"
4658 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
4659 (sha256
4660 (base32
a4ba286b 4661 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
4662 (build-system python-build-system)
4663 (native-inputs
4664 `(("python-cython" ,python-cython) ;for c extensions
4665 ("python-pytest" ,python-pytest)
4666 ("python-mock" ,python-mock))) ;for tests
4667 (arguments
4668 `(#:phases (alist-replace
4669 'check
4670 (lambda _ (zero? (system* "py.test")))
4671 %standard-phases)))
4672 (home-page "http://www.sqlalchemy.org")
4673 (synopsis "Database abstraction library")
4674 (description
4675 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4676gives application developers the full power and flexibility of SQL. It
4677provides a full suite of well known enterprise-level persistence patterns,
4678designed for efficient and high-performing database access, adapted into a
4679simple and Pythonic domain language.")
3f641af0 4680 (license license:x11)))
94914805
EB
4681
4682(define-public python2-sqlalchemy
4683 (package-with-python2 python-sqlalchemy))
c937562e 4684
4a093330
DM
4685(define-public python-pycodestyle
4686 (package
4687 (name "python-pycodestyle")
9b801661 4688 (version "2.3.1")
4a093330
DM
4689 (source
4690 (origin
4691 (method url-fetch)
4692 (uri (pypi-uri "pycodestyle" version))
4693 (sha256
4694 (base32
9b801661 4695 "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"))))
4a093330
DM
4696 (build-system python-build-system)
4697 (home-page "https://pycodestyle.readthedocs.io/")
4698 (synopsis "Python style guide checker")
4699 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4700Python code against some of the style conventions in
4701@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4702 (license license:expat)))
4a093330
DM
4703
4704(define-public python2-pycodestyle
f210e944 4705 (package-with-python2 python-pycodestyle))
b91912c4
DM
4706
4707(define-public python-orderedmultidict
4708 (package
4709 (name "python-orderedmultidict")
9e2802cb 4710 (version "0.7.11")
b91912c4
DM
4711 (source
4712 (origin
4713 (method url-fetch)
4714 (uri (pypi-uri "orderedmultidict" version))
4715 (sha256
4716 (base32
9e2802cb 4717 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
b91912c4
DM
4718 (build-system python-build-system)
4719 (arguments
4720 `(#:phases
4721 (modify-phases %standard-phases
4722 (add-after 'unpack 'fix-tests
4723 (lambda _
4724 ;; The package uses nosetest for running the tests.
4725 ;; Adding this initfile allows to run the test suite
4726 ;; without requiring nosetest.
4727 (zero? (system* "touch" "tests/__init__.py")))))))
4728 (propagated-inputs
4729 `(("python-six" ,python-six)))
4730 (native-inputs
4731 `(("python-pycodestyle" ,python-pycodestyle)))
4732 (home-page "https://github.com/gruns/orderedmultidict")
4733 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4734 (description "This package contains a library for ordered multivalue
4735dictionaries. A multivalue dictionary is a dictionary that can store
4736multiple values for the same key. An ordered multivalue dictionary is a
4737multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4738 (license license:unlicense)))
b91912c4
DM
4739
4740(define-public python2-orderedmultidict
f210e944 4741 (package-with-python2 python-orderedmultidict))
9dede065
DM
4742
4743(define-public python-furl
4744 (package
4745 (name "python-furl")
4746 (version "0.5.6")
4747 (source
4748 (origin
4749 (method url-fetch)
4750 (uri (pypi-uri "furl" version))
4751 (sha256
4752 (base32
4753 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4754 (build-system python-build-system)
4755 (propagated-inputs
4756 `(("python-six" ,python-six)
4757 ("python-orderedmultidict" ,python-orderedmultidict)))
4758 (native-inputs
4759 `(("python-pycodestyle" ,python-pycodestyle)))
4760 (home-page "https://github.com/gruns/furl")
4761 (synopsis "URL manipulation in Python")
4762 (description "Furl provides an easy-to-use alternative to the
4763@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4764 (license license:unlicense)))
9dede065
DM
4765
4766(define-public python2-furl
f210e944 4767 (package-with-python2 python-furl))
462bf271 4768
4e52739c
MB
4769(define-public python-flaky
4770 (package
4771 (name "python-flaky")
4772 (version "3.4.0")
4773 (source (origin
4774 (method url-fetch)
4775 (uri (pypi-uri "flaky" version))
4776 (sha256
4777 (base32
4778 "18pkmf79rfkfpy1d2rrx3v55nxj762ilyk9rvd6s6dccxw58imsa"))))
4779 (build-system python-build-system)
4780 (arguments
4781 ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
4782 '(#:tests? #f))
4783 (home-page "https://github.com/box/flaky")
4784 (synopsis "Automatically rerun flaky tests")
4785 (description
4786 "Flaky is a plugin for @code{nose} or @code{py.test} that automatically
4787reruns flaky tests.
4788
4789Ideally, tests reliably pass or fail, but sometimes test fixtures must rely
4790on components that aren't 100% reliable. With flaky, instead of removing
f1ddfe4f 4791those tests or marking them to @code{@@skip}, they can be automatically
4e52739c
MB
4792retried.")
4793 (license license:asl2.0)))
4794
4795(define-public python2-flaky
4796 (package-with-python2 python-flaky))
4797
462bf271
DM
4798(define-public python-flask-babel
4799 (package
4800 (name "python-flask-babel")
4801 (version "0.11.1")
4802 (source
4803 (origin
4804 (method url-fetch)
4805 (uri (pypi-uri "Flask-Babel" version))
4806 (sha256
4807 (base32
4808 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4809 (build-system python-build-system)
4810 (propagated-inputs
4811 `(("python-flask" ,python-flask)
4812 ("python-babel" ,python-babel)
4813 ("python-jinja2" ,python-jinja2)
4814 ("python-pytz" ,python-pytz)))
4815 (home-page "https://github.com/python-babel/flask-babel")
4816 (synopsis "Add i18n/l10n support to Flask applications")
4817 (description "This package implements internationalization and localization
4818support for Flask. This is based on the Python babel module as well as pytz -
4819both of which are installed automatically if you install this library.")
f210e944 4820 (license license:bsd-3)))
462bf271
DM
4821
4822(define-public python2-flask-babel
f210e944 4823 (package-with-python2 python-flask-babel))
4a093330 4824
de2966cf
EF
4825(define-public python-sqlalchemy-utils
4826 (package
4827 (name "python-sqlalchemy-utils")
fd2662e9 4828 (version "0.32.13")
de2966cf
EF
4829 (source
4830 (origin
4831 (method url-fetch)
4832 (uri (pypi-uri "SQLAlchemy-Utils" version))
4833 (sha256
4834 (base32
fd2662e9 4835 "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
de2966cf 4836 (build-system python-build-system)
35d56b7b
MB
4837 (arguments
4838 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
4839 ;; #:phases
4840 ;; (modify-phases %standard-phases
4841 ;; (replace 'check
4842 ;; (lambda _
4843 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
c22b4f87 4844 (propagated-inputs
de2966cf
EF
4845 `(("python-six" ,python-six)
4846 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb 4847 (native-inputs
22d7360b 4848 `(("python-dateutil" ,python-dateutil)
35d56b7b
MB
4849 ("python-flexmock" ,python-flexmock)
4850 ("python-psycopg2" ,python-psycopg2)
4851 ("python-pytest" ,python-pytest)
4852 ("python-pytz" ,python-pytz)))
de2966cf
EF
4853 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4854 (synopsis "Various utility functions for SQLAlchemy")
4855 (description
4856 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4857for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4858
4859You might also want to install the following optional dependencies:
4860@enumerate
4861@item @code{python-passlib}
4862@item @code{python-babel}
4863@item @code{python-cryptography}
4864@item @code{python-pytz}
4865@item @code{python-psycopg2}
4866@item @code{python-furl}
4867@item @code{python-flask-babel}
4868@end enumerate
4869")
de2966cf
EF
4870 (license license:bsd-3)))
4871
4872(define-public python2-sqlalchemy-utils
f210e944 4873 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4874
af5a4602
CAW
4875(define-public python-alembic
4876 (package
4877 (name "python-alembic")
4418990d 4878 (version "0.8.10")
af5a4602
CAW
4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (pypi-uri "alembic" version))
4883 (sha256
4884 (base32
4418990d 4885 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
af5a4602
CAW
4886 (build-system python-build-system)
4887 (native-inputs
4888 `(("python-mock" ,python-mock)
4889 ("python-pytest-cov" ,python-pytest-cov)))
4890 (propagated-inputs
4891 `(("python-sqlalchemy" ,python-sqlalchemy)
4892 ("python-mako" ,python-mako)
4893 ("python-editor" ,python-editor)))
4894 (home-page "http://bitbucket.org/zzzeek/alembic")
4895 (synopsis
4896 "Database migration tool for SQLAlchemy")
4897 (description
4898 "Alembic is a lightweight database migration tool for usage with the
4899SQLAlchemy Database Toolkit for Python.")
f210e944 4900 (license license:expat)))
af5a4602
CAW
4901
4902(define-public python2-alembic
f210e944 4903 (package-with-python2 python-alembic))
af5a4602 4904
138adbbe
TD
4905(define-public python-autopep8
4906 (package
4907 (name "python-autopep8")
4908 (version "1.2.4")
4909 (source
4910 (origin
4911 (method url-fetch)
4912 (uri (pypi-uri "autopep8" version))
4913 (sha256
4914 (base32
4915 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4916 (build-system python-build-system)
4917 (propagated-inputs
4918 `(("python-pep8" ,python-pep8)))
4919 (home-page "https://github.com/hhatto/autopep8")
4920 (synopsis "Format Python code according to the PEP 8 style guide")
4921 (description
4922 "@code{autopep8} automatically formats Python code to conform to
4923the PEP 8 style guide. It uses the pycodestyle utility to determine
4924what parts of the code needs to be formatted. @code{autopep8} is
4925capable of fixing most of the formatting issues that can be reported
4926by pycodestyle.")
4927 (license (license:non-copyleft
4928 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4929
4930(define-public python2-autopep8
4931 (package-with-python2 python-autopep8))
4932
1671c07c
EB
4933(define-public python-distutils-extra
4934 (package
4935 (name "python-distutils-extra")
4936 (version "2.38")
4937 (source
4938 (origin
4939 (method url-fetch)
4940 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4941 version "/+download/python-distutils-extra-"
4942 version ".tar.gz"))
4943 (sha256
4944 (base32
4945 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4946 (build-system python-build-system)
1671c07c
EB
4947 (home-page "https://launchpad.net/python-distutils-extra/")
4948 (synopsis "Enhancements to Python's distutils")
4949 (description
4950 "The python-distutils-extra module enables you to easily integrate
4951gettext support, themed icons, and scrollkeeper-based documentation into
4952Python's distutils.")
3f641af0 4953 (license license:gpl2)))
1671c07c
EB
4954
4955(define-public python2-distutils-extra
4956 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4957
4958(define-public python2-elib.intl
4959 (package
4960 (name "python2-elib.intl")
4961 (version "0.0.3")
4962 (source
4963 (origin
4964 ;; This project doesn't tag releases or publish tarballs, so we take
4965 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4966 (method git-fetch)
4967 (uri (git-reference
4968 (url "https://github.com/dieterv/elib.intl.git")
4969 (commit "d09997cfef")))
4970 (sha256
4971 (base32
4972 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4973 (build-system python-build-system)
ea5456c8
EB
4974 (arguments
4975 ;; incompatible with Python 3 (exception syntax)
4976 `(#:python ,python-2
b41a05ce 4977 #:tests? #f))
ea5456c8
EB
4978 (home-page "https://github.com/dieterv/elib.intl")
4979 (synopsis "Enhanced internationalization for Python")
4980 (description
4981 "The elib.intl module provides enhanced internationalization (I18N)
4982services for your Python modules and applications.")
3f641af0 4983 (license license:lgpl3+)))
ea5456c8 4984
c937562e
EB
4985(define-public python-pillow
4986 (package
4987 (name "python-pillow")
aba5182c 4988 (version "3.3.3")
c937562e
EB
4989 (source
4990 (origin
4991 (method url-fetch)
f1d9231d 4992 (uri (pypi-uri "Pillow" version))
a9681c74 4993 (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
c937562e
EB
4994 (sha256
4995 (base32
aba5182c 4996 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4997 (build-system python-build-system)
4998 (native-inputs
f3b98f4f 4999 `(("python-nose" ,python-nose)))
c937562e 5000 (inputs
5ff408d9
SB
5001 `(("freetype" ,freetype)
5002 ("lcms" ,lcms)
c937562e
EB
5003 ("zlib" ,zlib)
5004 ("libjpeg" ,libjpeg)
5005 ("openjpeg" ,openjpeg)
5ff408d9
SB
5006 ("libtiff" ,libtiff)
5007 ("libwebp" ,libwebp)))
c937562e 5008 (arguments
e5358a6b 5009 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
5010 (add-after
5011 'install 'check-installed
6151120a 5012 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
5013 (begin
5014 (setenv "HOME" (getcwd))
6151120a
HG
5015 ;; Make installed package available for running the
5016 ;; tests
5017 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
5018 (and (zero? (system* "python" "selftest.py"
5019 "--installed"))
5020 (zero? (system* "python" "test-installed.py"))))))
5021 (delete 'check))))
c937562e
EB
5022 (home-page "https://pypi.python.org/pypi/Pillow")
5023 (synopsis "Fork of the Python Imaging Library")
5024 (description
5025 "The Python Imaging Library adds image processing capabilities to your
5026Python interpreter. This library provides extensive file format support, an
5027efficient internal representation, and fairly powerful image processing
5028capabilities. The core image library is designed for fast access to data
5029stored in a few basic pixel formats. It should provide a solid foundation for
5030a general image processing tool.")
3f641af0 5031 (license (license:x11-style
c937562e
EB
5032 "http://www.pythonware.com/products/pil/license.htm"
5033 "The PIL Software License"))))
5034
5035(define-public python2-pillow
5036 (package-with-python2 python-pillow))
bb986599 5037
a415f036
FB
5038(define-public python-pycparser
5039 (package
5040 (name "python-pycparser")
5043b20d 5041 (version "2.17")
a415f036
FB
5042 (source
5043 (origin
5044 (method url-fetch)
38eb6919 5045 (uri (pypi-uri "pycparser" version))
a415f036
FB
5046 (sha256
5047 (base32
5043b20d 5048 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
a415f036
FB
5049 (outputs '("out" "doc"))
5050 (build-system python-build-system)
5051 (native-inputs
f3b98f4f 5052 `(("pkg-config" ,pkg-config)))
a415f036 5053 (arguments
89b5c60e 5054 `(#:phases
819939cb
TGR
5055 (modify-phases %standard-phases
5056 (replace 'check
5057 (lambda _
5058 (with-directory-excursion "tests"
5059 (zero? (system* "python" "all_tests.py")))))
5060 (add-after 'install 'install-doc
5061 (lambda* (#:key outputs #:allow-other-keys)
5062 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5063 (doc (string-append data "/doc/" ,name "-" ,version))
5064 (examples (string-append doc "/examples")))
5065 (mkdir-p examples)
5066 (for-each (lambda (file)
5067 (copy-file (string-append "." file)
5068 (string-append doc file)))
5069 '("/README.rst" "/CHANGES" "/LICENSE"))
5070 (copy-recursively "examples" examples)))))))
a415f036
FB
5071 (home-page "https://github.com/eliben/pycparser")
5072 (synopsis "C parser in Python")
5073 (description
5074 "Pycparser is a complete parser of the C language, written in pure Python
5075using the PLY parsing library. It parses C code into an AST and can serve as
5076a front-end for C compilers or analysis tools.")
3f641af0 5077 (license license:bsd-3)))
a415f036
FB
5078
5079(define-public python2-pycparser
5080 (package-with-python2 python-pycparser))
57c3f716
FB
5081
5082(define-public python-cffi
5083 (package
5084 (name "python-cffi")
029933cf 5085 (version "1.10.0")
57c3f716
FB
5086 (source
5087 (origin
5088 (method url-fetch)
2d3a437c 5089 (uri (pypi-uri "cffi" version))
89b5c60e 5090 (sha256
029933cf 5091 (base32 "1mffyilq4qycm8gs4wkgb18rnqil8a9blqq77chdlshzxc8jkc5k"))))
57c3f716
FB
5092 (build-system python-build-system)
5093 (outputs '("out" "doc"))
5094 (inputs
5095 `(("libffi" ,libffi)))
5096 (propagated-inputs ; required at run-time
5097 `(("python-pycparser" ,python-pycparser)))
5098 (native-inputs
5099 `(("pkg-config" ,pkg-config)
5100 ("python-sphinx" ,python-sphinx)
f3b98f4f 5101 ("python-pytest" ,python-pytest)))
57c3f716 5102 (arguments
295f32f3
MB
5103 `(#:modules ((ice-9 ftw)
5104 (srfi srfi-26)
5105 (guix build utils)
5106 (guix build python-build-system))
5107 #:phases
5108 (modify-phases %standard-phases
5109 (replace 'check
5110 (lambda _
5111 (setenv "PYTHONPATH"
5112 (string-append
5113 (getenv "PYTHONPATH")
5114 ":" (getcwd) "/build/"
5115 (car (scandir "build" (cut string-prefix? "lib." <>)))))
029933cf
MB
5116
5117 ;; XXX The "normal" approach of setting CC and friends does
5118 ;; not work here. Is this the correct way of doing things?
5119 (substitute* "testing/embedding/test_basic.py"
5120 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
5121 (string-append "c = distutils.ccompiler.new_compiler();"
5122 "c.set_executables(compiler='gcc',"
5123 "compiler_so='gcc',linker_exe='gcc',"
5124 "linker_so='gcc -shared')")))
5125 (substitute* "testing/cffi0/test_ownlib.py"
5126 (("'cc testownlib") "'gcc testownlib"))
5127 (zero? (system* "py.test" "-v" "c/" "testing/"))))
295f32f3
MB
5128 (add-after 'install 'install-doc
5129 (lambda* (#:key outputs #:allow-other-keys)
5130 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5131 (doc (string-append data "/doc/" ,name "-" ,version))
5132 (html (string-append doc "/html")))
5133 (with-directory-excursion "doc"
5134 (system* "make" "html")
5135 (mkdir-p html)
5136 (copy-recursively "build/html" html))
5137 (copy-file "LICENSE" (string-append doc "/LICENSE"))
5138 #t))))))
57c3f716
FB
5139 (home-page "http://cffi.readthedocs.org")
5140 (synopsis "Foreign function interface for Python")
5141 (description
5142 "Foreign Function Interface for Python calling C code.")
bd3fa666 5143 (license license:expat)))
57c3f716
FB
5144
5145(define-public python2-cffi
5146 (package-with-python2 python-cffi))
6fa14469
FB
5147
5148(define-public python-xcffib
5149 (package
5150 (name "python-xcffib")
8347c122 5151 (version "0.5.1")
6fa14469
FB
5152 (source
5153 (origin
5154 (method url-fetch)
8347c122 5155 (uri (pypi-uri "xcffib" version))
6fa14469
FB
5156 (sha256
5157 (base32
8347c122 5158 "09gbnmr5vn58mm8xi3fmd7fz6743cks6c46dphnxzwax6zsxmy60"))))
6fa14469
FB
5159 (build-system python-build-system)
5160 (inputs
482d9591 5161 `(("libxcb" ,libxcb)))
6fa14469 5162 (propagated-inputs
482d9591
HG
5163 `(("python-cffi" ,python-cffi) ; used at run time
5164 ("python-six" ,python-six)))
6fa14469 5165 (arguments
e46bf223 5166 `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
e2816ac7
MB
5167 #:tests? #f
5168 #:phases
c8cd850c 5169 (modify-phases %standard-phases
e46bf223
JMSG
5170 (add-after 'unpack 'fix-libxcb-path
5171 (lambda* (#:key inputs #:allow-other-keys)
5172 (let ((libxcb (assoc-ref inputs "libxcb")))
5173 (substitute* '("xcffib/__init__.py")
5174 (("^soname = \"") (string-append "soname = \"" libxcb "/lib/")))
5175 #t)))
c8cd850c
MB
5176 (add-after 'install 'install-doc
5177 (lambda* (#:key outputs #:allow-other-keys)
5178 (let ((doc (string-append (assoc-ref outputs "out") "/share"
5179 "/doc/" ,name "-" ,version)))
5180 (mkdir-p doc)
5181 (copy-file "README.md"
5182 (string-append doc "/README.md"))
5183 #t))))))
6fa14469
FB
5184 (home-page "https://github.com/tych0/xcffib")
5185 (synopsis "XCB Python bindings")
5186 (description
5187 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
5188support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 5189 (license license:expat)))
6fa14469
FB
5190
5191(define-public python2-xcffib
5192 (package-with-python2 python-xcffib))
5193
9e099723
FB
5194(define-public python-cairocffi
5195 (package
5196 (name "python-cairocffi")
80f78e8f 5197 (version "0.8.0")
9e099723
FB
5198 (source
5199 (origin
5200 (method url-fetch)
5201 ;; The archive on pypi is missing the 'utils' directory!
3015d455 5202 (uri (string-append "https://github.com/Kozea/cairocffi/archive/v"
9e099723 5203 version ".tar.gz"))
f586c877 5204 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
5205 (sha256
5206 (base32
80f78e8f 5207 "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
9e099723
FB
5208 (build-system python-build-system)
5209 (outputs '("out" "doc"))
5210 (inputs
5211 `(("gdk-pixbuf" ,gdk-pixbuf)
5212 ("cairo" ,cairo)))
5213 (native-inputs
5214 `(("pkg-config" ,pkg-config)
5215 ("python-sphinx" ,python-sphinx)
f3b98f4f 5216 ("python-docutils" ,python-docutils)))
9e099723
FB
5217 (propagated-inputs
5218 `(("python-xcffib" ,python-xcffib))) ; used at run time
5219 (arguments
a792e1aa
MB
5220 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
5221 #:tests? #f
5222 #:phases
6734c7ba
MB
5223 (modify-phases %standard-phases
5224 (add-after 'install 'install-doc
5225 (lambda* (#:key inputs outputs #:allow-other-keys)
5226 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5227 (doc (string-append data "/doc/" ,name "-" ,version))
5228 (html (string-append doc "/html")))
5229 (setenv "LD_LIBRARY_PATH"
5230 (string-append (assoc-ref inputs "cairo") "/lib" ":"
5231 (assoc-ref inputs "gdk-pixbuf") "/lib"))
5232 (setenv "LANG" "en_US.UTF-8")
5233 (mkdir-p html)
5234 (for-each (lambda (file)
5235 (copy-file (string-append "." file)
5236 (string-append doc file)))
5237 '("/README.rst" "/CHANGES" "/LICENSE"))
5238 (system* "python" "setup.py" "build_sphinx")
5239 (copy-recursively "docs/_build/html" html)
5240 #t))))))
3015d455 5241 (home-page "https://github.com/Kozea/cairocffi")
9e099723
FB
5242 (synopsis "Python bindings and object-oriented API for Cairo")
5243 (description
5244 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
5245Python bindings and object-oriented API for cairo. Cairo is a 2D vector
5246graphics library with support for multiple backends including image buffers,
5247PNG, PostScript, PDF, and SVG file output.")
3f641af0 5248 (license license:bsd-3)))
9e099723
FB
5249
5250(define-public python2-cairocffi
5251 (package-with-python2 python-cairocffi))
5252
3cff95cb
RW
5253(define-public python-decorator
5254 (package
5255 (name "python-decorator")
d79fa7da 5256 (version "4.0.10")
3cff95cb
RW
5257 (source
5258 (origin
5259 (method url-fetch)
e21338be 5260 (uri (pypi-uri "decorator" version))
3cff95cb 5261 (sha256
d79fa7da 5262 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
3cff95cb
RW
5263 (build-system python-build-system)
5264 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 5265 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
5266 (synopsis "Python module to simplify usage of decorators")
5267 (description
5268 "The aim of the decorator module is to simplify the usage of decorators
5269for the average programmer, and to popularize decorators usage giving examples
5270of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
5271etc. The core of this module is a decorator factory.")
5272 (license license:expat)))
5273
5274(define-public python2-decorator
5275 (package-with-python2 python-decorator))
5276
2c0499ad
RW
5277(define-public python-drmaa
5278 (package
5279 (name "python-drmaa")
7c427932 5280 (version "0.7.7")
2c0499ad
RW
5281 (source
5282 (origin
5283 (method url-fetch)
d92621cf 5284 (uri (pypi-uri "drmaa" version))
2c0499ad 5285 (sha256
7c427932 5286 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
2c0499ad
RW
5287 (build-system python-build-system)
5288 ;; The test suite requires libdrmaa which is provided by the cluster
5289 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
5290 ;; should be set to the path of the libdrmaa library.
5291 (arguments '(#:tests? #f))
5292 (native-inputs
f3b98f4f 5293 `(("python-nose" ,python-nose)))
2c0499ad
RW
5294 (home-page "https://pypi.python.org/pypi/drmaa")
5295 (synopsis "Python bindings for the DRMAA library")
5296 (description
5297 "A Python package for Distributed Resource Management (DRM) job
5298submission and control. This package is an implementation of the DRMAA 1.0
5299Python language binding specification.")
3f641af0 5300 (license license:bsd-3)))
2c0499ad
RW
5301
5302(define-public python2-drmaa
5303 (package-with-python2 python-drmaa))
5304
a70b03d4
TD
5305(define-public python-grako
5306 (package
5307 (name "python-grako")
5308 (version "3.99.9")
5309 (source
5310 (origin
5311 (method url-fetch)
5312 (uri
5313 (pypi-uri "grako" version ".zip"))
5314 (sha256
5315 (base32
5316 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
5317 (build-system python-build-system)
5318 (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
5319 (native-inputs
5320 `(("unzip" ,unzip)
5321 ("python-pytest" ,python-pytest-3.0)
5322 ("python-pytest-runner" ,python-pytest-runner)))
5323 (home-page "https://bitbucket.org/neogeny/grako")
5324 (synopsis "EBNF parser generator")
5325 (description
5326 "Grako takes a grammar in a variation of EBNF as input, and outputs a
5327memoizing PEG/Packrat parser in Python.")
5328 (license license:bsd-3)))
5329
5330(define-public python2-grako
5331 (package-with-python2 python-grako))
5332
d05c6da0
RW
5333(define-public python-gridmap
5334 (package
5335 (name "python-gridmap")
5336 (version "0.13.0")
5337 (source
5338 (origin
5339 (method url-fetch)
5340 (uri (string-append
5341 "https://github.com/pygridtools/gridmap/archive/v"
5342 version ".tar.gz"))
5343 (file-name (string-append name "-" version ".tar.gz"))
5344 (sha256
5345 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
5346 (build-system python-build-system)
ad348f9f
MB
5347 (arguments
5348 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
f22efa01 5349 (propagated-inputs
d05c6da0
RW
5350 `(("python-psutil" ,python-psutil)
5351 ("python-drmaa" ,python-drmaa)
5352 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
5353 (home-page "https://github.com/pygridtools/gridmap")
5354 (synopsis "Create jobs on a cluster directly from Python")
5355 (description
5356 "Gridmap is a Python package to allow you to easily create jobs on the
5357cluster directly from Python. You can directly map Python functions onto the
5358cluster without needing to write any wrapper code yourself.")
3f641af0 5359 (license license:gpl3+)))
d05c6da0
RW
5360
5361(define-public python2-gridmap
5362 (package-with-python2 python-gridmap))
5363
84342e2f
SR
5364(define-public python-honcho
5365 (package
5366 (name "python-honcho")
5367 (version "1.0.1")
5368 (source
5369 (origin
5370 (method url-fetch)
5371 (uri (string-append
5372 "https://github.com/nickstenning/honcho/archive/v"
5373 version ".tar.gz"))
5374 (file-name (string-append name "-" version ".tar.gz"))
5375 (sha256
5376 (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
5377 (build-system python-build-system)
5378 (native-inputs
5379 `(("python-pytest" ,python-pytest-3.0)
5380 ("python-mock" ,python-mock)
5381 ("python-tox" ,python-tox)
5382 ("which" ,which))) ;for tests
5383 (propagated-inputs
5384 `(("python-jinja2" ,python-jinja2)))
5385 (arguments
5386 `(#:phases
5387 (modify-phases %standard-phases
5388 (delete 'check)
5389 (add-after 'install 'check
5390 (lambda* (#:key outputs inputs #:allow-other-keys)
5391 ;; fix honcho path in testsuite
5392 (substitute* "tests/conftest.py"
5393 (("'honcho'") (string-append "'" (assoc-ref outputs "out")
5394 "/bin/honcho" "'")))
5395 ;; It's easier to run tests after install.
5396 ;; Make installed package available for running the tests
5397 (add-installed-pythonpath inputs outputs)
5398 (zero? (system* "py.test" "-v")))))))
5399 (home-page "https://github.com/nickstenning/honcho")
5400 (synopsis "Manage Procfile-based applications")
5401 (description
5402 "A Procfile is a file which describes how to run an application
5403consisting of serveral processes. honcho starts all listed processes.
5404The output of all running processes is collected by honcho and
5405displayed.")
5406 (license license:expat)))
5407
5408(define-public python2-honcho
5409 (package-with-python2 python-honcho))
5410
cb6d5c54
RW
5411(define-public python-pexpect
5412 (package
5413 (name "python-pexpect")
ed118043 5414 (version "4.2.1")
cb6d5c54
RW
5415 (source
5416 (origin
5417 (method url-fetch)
ed118043 5418 (uri (pypi-uri "pexpect" version))
cb6d5c54 5419 (sha256
ed118043 5420 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
cb6d5c54
RW
5421 (build-system python-build-system)
5422 (arguments
5423 `(#:phases
5424 (modify-phases %standard-phases
ed118043
MB
5425 (add-before 'check 'prepare-tests
5426 (lambda _
5427 (substitute* (find-files "tests")
5428 (("/bin/ls") (which "ls"))
5429 (("/bin/echo") (which "echo"))
5430 (("/bin/which") (which "which"))
5431 ;; Many tests try to use the /bin directory which
5432 ;; is not present in the build environment.
5433 ;; Use one that's non-empty and unlikely to change.
5434 (("/bin'") "/dev'"))
5435 ;; XXX: Socket connection test gets "Connection reset by peer".
5436 ;; Why does it not work? Delete for now.
5437 (delete-file "tests/test_socket.py")
5438 #t))
3ee9355e 5439 (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
cb6d5c54 5440 (native-inputs
ed118043 5441 `(("python-nose" ,python-nose)
350a3084 5442 ("python-pytest" ,python-pytest-3.0)
ed118043 5443 ("man-db" ,man-db)
dc4f697f
LC
5444 ("which" ,which)
5445 ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
ed118043
MB
5446 (propagated-inputs
5447 `(("python-ptyprocess" ,python-ptyprocess)))
cb6d5c54
RW
5448 (home-page "http://pexpect.readthedocs.org/")
5449 (synopsis "Controlling interactive console applications")
5450 (description
5451 "Pexpect is a pure Python module for spawning child applications;
5452controlling them; and responding to expected patterns in their output.
5453Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
5454child application and control it as if a human were typing commands.")
3f641af0 5455 (license license:isc)))
cb6d5c54
RW
5456
5457(define-public python2-pexpect
5458 (package-with-python2 python-pexpect))
5459
229ad120
RW
5460(define-public python-setuptools-scm
5461 (package
5462 (name "python-setuptools-scm")
5b1f31ff 5463 (version "1.15.0")
229ad120
RW
5464 (source (origin
5465 (method url-fetch)
383af6b0 5466 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
5467 (sha256
5468 (base32
5b1f31ff 5469 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
229ad120
RW
5470 (build-system python-build-system)
5471 (home-page "https://github.com/pypa/setuptools_scm/")
5472 (synopsis "Manage Python package versions in SCM metadata")
5473 (description
383af6b0 5474 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
5475@dfn{software configuration management} (SCM) metadata instead of declaring
5476them as the version argument or in a SCM managed file.")
5477 (license license:expat)))
5478
5479(define-public python2-setuptools-scm
5480 (package-with-python2 python-setuptools-scm))
5481
b74270ee
RW
5482(define-public python-pathpy
5483 (package
5484 (name "python-pathpy")
5485 (version "8.1.1")
5486 (source
5487 (origin
5488 (method url-fetch)
5489 (uri (string-append "https://pypi.python.org/packages/source/p/"
5490 "path.py/path.py-" version ".tar.gz"))
5491 (sha256
5492 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 5493 (outputs '("out" "doc"))
b74270ee
RW
5494 (build-system python-build-system)
5495 (propagated-inputs
5496 `(("python-appdirs" ,python-appdirs)))
5497 (native-inputs
f3b98f4f 5498 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
5499 ("python-sphinx" ,python-sphinx)
5500 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
5501 ("python-pytest" ,python-pytest)
5502 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
5503 (arguments
5504 `(#:phases
5505 (modify-phases %standard-phases
5506 (add-after 'build 'build-doc
5507 (lambda _
5508 (setenv "LANG" "en_US.UTF-8")
5509 (zero? (system* "python" "setup.py" "build_sphinx"))))
5510 (add-after 'install 'install-doc
5511 (lambda* (#:key outputs #:allow-other-keys)
5512 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5513 (doc (string-append data "/doc/" ,name "-" ,version))
5514 (html (string-append doc "/html")))
5515 (mkdir-p html)
5516 (for-each (lambda (file)
5517 (copy-file file (string-append doc "/" file)))
5518 '("README.rst" "CHANGES.rst"))
5519 (copy-recursively "build/sphinx/html" html)))))))
7bf837fd 5520 (home-page "https://github.com/jaraco/path.py")
b74270ee
RW
5521 (synopsis "Python module wrapper for built-in os.path")
5522 (description
5523 "@code{path.py} implements path objects as first-class entities, allowing
5524common operations on files to be invoked on those path objects directly.")
5525 (license license:expat)))
5526
5527(define-public python2-pathpy
5528 (package-with-python2 python-pathpy))
5529
0d34e01b
RW
5530(define-public python-pickleshare
5531 (package
5532 (name "python-pickleshare")
5533 (version "0.5")
5534 (source
5535 (origin
5536 (method url-fetch)
5537 (uri (string-append "https://pypi.python.org/packages/source/p/"
5538 "pickleshare/pickleshare-" version ".tar.gz"))
5539 (sha256
5540 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
5541 (build-system python-build-system)
5542 (propagated-inputs
5543 `(("python-pathpy" ,python-pathpy)))
5544 (home-page "https://github.com/vivainio/pickleshare")
5545 (synopsis "Tiny key value database with concurrency support")
5546 (description
5547 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
5548Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
5549shelve, many processes can access the database simultaneously. Changing a
5550value in database is immediately visible to other processes accessing the same
5551database. Concurrency is possible because the values are stored in separate
5552files. Hence the “database” is a directory where all files are governed by
5553PickleShare.")
5554 (license license:expat)))
5555
5556(define-public python2-pickleshare
5557 (package-with-python2 python-pickleshare))
5558
cd6e5189
RW
5559(define-public python-simplegeneric
5560 (package
5561 (name "python-simplegeneric")
5562 (version "0.8.1")
5563 (source
5564 (origin
5565 (method url-fetch)
5566 (uri (string-append "https://pypi.python.org/packages/source/s/"
5567 "simplegeneric/simplegeneric-" version ".zip"))
5568 (sha256
5569 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5570 (build-system python-build-system)
5571 (native-inputs
f3b98f4f 5572 `(("unzip" ,unzip)))
cd6e5189
RW
5573 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5574 (synopsis "Python module for simple generic functions")
5575 (description
5576 "The simplegeneric module lets you define simple single-dispatch generic
5577functions, akin to Python’s built-in generic functions like @code{len()},
5578@code{iter()} and so on. However, instead of using specially-named methods,
5579these generic functions use simple lookup tables, akin to those used by
5580e.g. @code{pickle.dump()} and other generic functions found in the Python
5581standard library.")
3f641af0 5582 (license license:zpl2.1)))
cd6e5189
RW
5583
5584(define-public python2-simplegeneric
5585 (package-with-python2 python-simplegeneric))
5586
ddc7d8ed 5587(define-public python-ipython-genutils
c4abbac3 5588 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
5589 (package
5590 (name "python-ipython-genutils")
5591 (version "0.1.0")
5592 (source
5593 (origin
5594 (method url-fetch)
5595 (uri (string-append "https://pypi.python.org/packages/source/i/"
5596 "ipython_genutils/ipython_genutils-"
5597 version ".tar.gz"))
5598 (sha256
5599 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5600 (build-system python-build-system)
5601 (arguments `(#:tests? #f)) ; no tests
5602 (home-page "http://ipython.org")
5603 (synopsis "Vestigial utilities from IPython")
5604 (description
c4abbac3
HG
5605 "This package provides retired utilities from IPython. No packages
5606outside IPython/Jupyter should depend on it.
5607
5608This package shouldn't exist. It contains some common utilities shared by
5609Jupyter and IPython projects during The Big Split. As soon as possible, those
5610packages will remove their dependency on this, and this package will go
5611away.")
3f641af0 5612 (license license:bsd-3)))
ddc7d8ed
RW
5613
5614(define-public python2-ipython-genutils
5615 (package-with-python2 python-ipython-genutils))
5616
2b10eb48
RW
5617(define-public python-traitlets
5618 (package
5619 (name "python-traitlets")
a5ba1481 5620 (version "4.2.0")
2b10eb48
RW
5621 (source
5622 (origin
5623 (method url-fetch)
cc0c4fde 5624 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
5625 (sha256
5626 (base32
a5ba1481 5627 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
5628 (build-system python-build-system)
5629 (arguments
5630 `(#:phases
5631 (modify-phases %standard-phases
5632 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5633 (propagated-inputs
5634 `(("python-ipython-genutils" ,python-ipython-genutils)
5635 ("python-decorator" ,python-decorator)))
5636 (native-inputs
cc0c4fde
EF
5637 `(("python-mock" ,python-mock)
5638 ("python-nose" ,python-nose)))
2b10eb48
RW
5639 (home-page "http://ipython.org")
5640 (synopsis "Configuration system for Python applications")
5641 (description
5642 "Traitlets is a framework that lets Python classes have attributes with
5643type checking, dynamically calculated default values, and ‘on change’
5644callbacks. The package also includes a mechanism to use traitlets for
5645configuration, loading values from files or from command line arguments. This
5646is a distinct layer on top of traitlets, so you can use traitlets in your code
5647without using the configuration machinery.")
3f641af0 5648 (license license:bsd-3)))
2b10eb48
RW
5649
5650(define-public python2-traitlets
5651 (package-with-python2 python-traitlets))
5652
4263b06f
RW
5653(define-public python-jupyter-core
5654 (package
5655 (name "python-jupyter-core")
45cc957c 5656 (version "4.2.1")
4263b06f
RW
5657 (source
5658 (origin
5659 (method url-fetch)
5660 (uri (string-append (pypi-uri "jupyter_core" version)))
5661 (sha256
5662 (base32
45cc957c 5663 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
4263b06f
RW
5664 (build-system python-build-system)
5665 ;; FIXME: not sure how to run the tests
5666 (arguments `(#:tests? #f))
5667 (propagated-inputs
5668 `(("python-traitlets" ,python-traitlets)))
5669 (home-page "http://jupyter.org/")
5670 (synopsis "Jupyter base package")
5671 (description
5672 "Jupyter core is the base package on which Jupyter projects rely.")
5673 (license license:bsd-3)))
5674
5675(define-public python2-jupyter-core
5676 (package-with-python2 python-jupyter-core))
5677
9ff01f2d
RW
5678(define-public python-jupyter-client
5679 (package
5680 (name "python-jupyter-client")
5681 (version "4.4.0")
5682 (source
5683 (origin
5684 (method url-fetch)
5685 (uri (pypi-uri "jupyter_client" version))
5686 (sha256
5687 (base32
5688 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
5689 (build-system python-build-system)
5690 ;; Tests fail because of missing native python kernel which I assume is
5691 ;; provided by the ipython package, which we cannot use because it would
5692 ;; cause a dependency cycle.
5693 (arguments `(#:tests? #f))
5694 (propagated-inputs
5695 `(("python-pyzmq" ,python-pyzmq)
5696 ("python-traitlets" ,python-traitlets)
5697 ("python-jupyter-core" ,python-jupyter-core)))
5698 (home-page "http://jupyter.org/")
5699 (synopsis "Jupyter protocol implementation and client libraries")
5700 (description
5701 "The @code{jupyter_client} package contains the reference implementation
5702of the Jupyter protocol. It also provides client and kernel management APIs
5703for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5704installing @code{kernelspec}s for use with Jupyter frontends.")
5705 (license license:bsd-3)))
5706
5707(define-public python2-jupyter-client
5708 (package-with-python2 python-jupyter-client))
5709
ab526102
RW
5710(define-public python-ipykernel
5711 (package
5712 (name "python-ipykernel")
f165648e 5713 (version "4.5.2")
ab526102
RW
5714 (source
5715 (origin
5716 (method url-fetch)
5717 (uri (pypi-uri "ipykernel" version))
5718 (sha256
f165648e 5719 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
ab526102
RW
5720 (build-system python-build-system)
5721 ;; The tests load a submodule of IPython. However, IPython itself depends
5722 ;; on ipykernel.
5723 (arguments `(#:tests? #f))
5724 (propagated-inputs
5725 ;; imported at runtime during connect
5726 `(("python-jupyter-client" ,python-jupyter-client)))
5727 (home-page "http://ipython.org")
5728 (synopsis "IPython Kernel for Jupyter")
5729 (description
5730 "This package provides the IPython kernel for Jupyter.")
5731 (license license:bsd-3)))
5732
5733(define-public python2-ipykernel
5734 (package-with-python2 python-ipykernel))
5735
5ff6effc
RW
5736(define-public python-testpath
5737 (package
5738 (name "python-testpath")
5739 (version "0.2")
5740 (source
5741 (origin
5742 (method url-fetch)
5743 (uri (string-append "https://github.com/jupyter/testpath/archive/"
5744 version ".tar.gz"))
5745 (file-name (string-append name "-" version ".tar.gz"))
5746 (sha256
5747 (base32
5748 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
5749 (build-system python-build-system)
5750 (arguments
5751 `(#:tests? #f ; this package does not even have a setup.py
b320f7bf
TD
5752 #:modules ((guix build python-build-system)
5753 (guix build utils)
5754 (srfi srfi-1))
5755 #:imported-modules (,@%python-build-system-modules
5756 (srfi srfi-1))
5ff6effc
RW
5757 #:phases
5758 (modify-phases %standard-phases
5759 (delete 'install)
5760 (replace 'build
b320f7bf
TD
5761 (lambda* (#:key inputs outputs #:allow-other-keys)
5762 (let* ((version (last
5763 (string-split (assoc-ref inputs "python") #\-)))
5764 (x.y (string-join (take (string-split version #\.) 2)
5765 "."))
5766 (dir (string-append
5767 (assoc-ref outputs "out")
5768 "/lib/python" x.y "/site-packages/testpath")))
5769 (mkdir-p dir)
5770 (copy-recursively "testpath" dir))
5771 #t)))))
5ff6effc
RW
5772 (home-page "https://github.com/takluyver/testpath")
5773 (synopsis "Test utilities for code working with files and commands")
5774 (description
5775 "Testpath is a collection of utilities for Python code working with files
5776and commands. It contains functions to check things on the filesystem, and
5777tools for mocking system commands and recording calls to those.")
5778 (license license:expat)))
5779
5780(define-public python2-testpath
5781 (package-with-python2 python-testpath))
5782
ae1ab9fe
FB
5783(define-public python-ipython
5784 (package
5785 (name "python-ipython")
fb25d348 5786 (version "5.2.2")
ae1ab9fe
FB
5787 (source
5788 (origin
fceac880 5789 (method url-fetch)
accd5f99 5790 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 5791 (sha256
fb25d348 5792 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
ae1ab9fe
FB
5793 (build-system python-build-system)
5794 (outputs '("out" "doc"))
3a0b1b9a
FB
5795 (propagated-inputs
5796 `(("python-pyzmq" ,python-pyzmq)
fb25d348 5797 ("python-prompt-toolkit" ,python-prompt-toolkit)
accd5f99 5798 ("python-terminado" ,python-terminado)
ae1ab9fe 5799 ("python-matplotlib" ,python-matplotlib)
5d26e542 5800 ("python-numpy" ,python-numpy)
ae1ab9fe 5801 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
5802 ("python-jinja2" ,python-jinja2)
5803 ("python-mistune" ,python-mistune)
accd5f99
RW
5804 ("python-pexpect" ,python-pexpect)
5805 ("python-pickleshare" ,python-pickleshare)
5806 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 5807 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
5808 ("python-traitlets" ,python-traitlets)
5809 ("python-ipykernel" ,python-ipykernel)
fb25d348 5810 ("python-nbformat" ,python-nbformat)
accd5f99
RW
5811 ("python-pygments" ,python-pygments)))
5812 (inputs
5813 `(("readline" ,readline)
5814 ("which" ,which)))
ae1ab9fe 5815 (native-inputs
fb25d348
TD
5816 `(("graphviz" ,graphviz)
5817 ("pkg-config" ,pkg-config)
accd5f99
RW
5818 ("python-requests" ,python-requests) ;; for tests
5819 ("python-testpath" ,python-testpath)
5820 ("python-nose" ,python-nose)
ae1ab9fe 5821 ("python-sphinx" ,python-sphinx)
fb25d348 5822 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
2584beae
RW
5823 ;; FIXME: It's possible that a smaller union would work just as well.
5824 ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
5825 texlive-fonts-ec
5826 texlive-generic-ifxetex
5827 texlive-generic-pdftex
5828 texlive-latex-amsfonts
5829 texlive-latex-capt-of
5830 texlive-latex-cmap
5831 texlive-latex-environ
5832 texlive-latex-eqparbox
5833 texlive-latex-etoolbox
5834 texlive-latex-expdlist
5835 texlive-latex-fancyhdr
5836 texlive-latex-fancyvrb
5837 texlive-latex-fncychap
5838 texlive-latex-float
5839 texlive-latex-framed
5840 texlive-latex-geometry
5841 texlive-latex-graphics
5842 texlive-latex-hyperref
5843 texlive-latex-mdwtools
5844 texlive-latex-multirow
5845 texlive-latex-oberdiek
5846 texlive-latex-parskip
5847 texlive-latex-preview
5848 texlive-latex-tabulary
5849 texlive-latex-threeparttable
5850 texlive-latex-titlesec
5851 texlive-latex-trimspaces
5852 texlive-latex-ucs
5853 texlive-latex-upquote
5854 texlive-latex-url
5855 texlive-latex-varwidth
5856 texlive-latex-wrapfig)))
f3b98f4f 5857 ("texinfo" ,texinfo)))
ae1ab9fe 5858 (arguments
89b5c60e 5859 `(#:phases
3a0b1b9a
FB
5860 (modify-phases %standard-phases
5861 (add-after
5862 'install 'install-doc
5863 (lambda* (#:key inputs outputs #:allow-other-keys)
5864 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5865 (doc (string-append data "/doc/" ,name "-" ,version))
5866 (html (string-append doc "/html"))
5867 (man1 (string-append data "/man/man1"))
5868 (info (string-append data "/info"))
fb25d348
TD
5869 (examples (string-append doc "/examples"))
5870 (python-arg (string-append "PYTHON=" (which "python"))))
afd3d931 5871 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
5872 ;; Make installed package available for running the tests
5873 (add-installed-pythonpath inputs outputs)
3a0b1b9a 5874 (with-directory-excursion "docs"
accd5f99
RW
5875 ;; FIXME: pdf fails to build
5876 ;;(system* "make" "pdf" "PAPER=a4")
fb25d348
TD
5877 (system* "make" python-arg "html")
5878 (system* "make" python-arg "info"))
3a0b1b9a
FB
5879 (copy-recursively "docs/man" man1)
5880 (copy-recursively "examples" examples)
accd5f99 5881 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
5882 ;; (copy-file "docs/build/latex/ipython.pdf"
5883 ;; (string-append doc "/ipython.pdf"))
5884 (mkdir-p info)
5885 (copy-file "docs/build/texinfo/ipython.info"
5886 (string-append info "/ipython.info"))
5887 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5888 ;; Tests can only be run after the library has been installed and not
5889 ;; within the source directory.
5890 (delete 'check)
5891 (add-after
5892 'install 'check
eee5cd04 5893 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
5894 (if tests?
5895 (with-directory-excursion "/tmp"
eee5cd04
HG
5896 ;; Make installed package available for running the tests
5897 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
5898 (setenv "HOME" "/tmp/") ;; required by a test
5899 (zero? (system* (string-append (assoc-ref outputs "out")
5900 "/bin/iptest"))))
5901 #t)))
5902 (add-before
5903 'install 'fix-tests
5904 (lambda* (#:key inputs #:allow-other-keys)
5905 (substitute* "./IPython/utils/_process_posix.py"
5906 (("/usr/bin/env', 'which") (which "which")))
5907 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5908 (("#!/usr/bin/env python")
5909 (string-append "#!" (which "python"))))
5910 ;; Disable 1 failing test
5911 (substitute* "./IPython/core/tests/test_magic.py"
5912 (("def test_dirops\\(\\):" all)
5913 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
5914 (home-page "http://ipython.org")
5915 (synopsis "IPython is a tool for interactive computing in Python")
5916 (description
5917 "IPython provides a rich architecture for interactive computing with:
5918Powerful interactive shells, a browser-based notebook, support for interactive
5919data visualization, embeddable interpreters and tools for parallel
5920computing.")
135ba811
EF
5921 (license license:bsd-3)
5922 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
5923
5924(define-public python2-ipython
135ba811 5925 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
5926 (package
5927 (inherit ipython)
3a0b1b9a 5928 ;; FIXME: add pyreadline once available.
fb25d348
TD
5929 (propagated-inputs
5930 `(("python2-backports-shutil-get-terminal-size"
5931 ,python2-backports-shutil-get-terminal-size)
5932 ("python2-pathlib2" ,python2-pathlib2)
5933 ,@(package-propagated-inputs ipython)))
e62600fe 5934 (native-inputs
135ba811 5935 `(("python2-mock" ,python2-mock)
77a6932a 5936 ,@(package-native-inputs ipython))))))
03411993
AE
5937
5938(define-public python-isodate
5939 (package
5940 (name "python-isodate")
b6785c2e 5941 (version "0.5.4")
03411993
AE
5942 (source
5943 (origin
5944 (method url-fetch)
b6785c2e 5945 (uri (pypi-uri "isodate" version))
03411993
AE
5946 (sha256
5947 (base32
b6785c2e 5948 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5949 (build-system python-build-system)
03411993
AE
5950 (home-page
5951 "http://cheeseshop.python.org/pypi/isodate")
5952 (synopsis
5953 "Python date parser and formatter")
5954 (description
5955 "Python-isodate is a python module for parsing and formatting
5956ISO 8601 dates, time and duration.")
3f641af0 5957 (license license:bsd-3)))
03411993
AE
5958
5959(define-public python2-isodate
5960 (package-with-python2 python-isodate))
673ab897
AE
5961
5962(define-public python-html5lib
5963 (package
5964 (name "python-html5lib")
a14061aa 5965 (version "1.0b10")
673ab897
AE
5966 (source
5967 (origin
5968 (method url-fetch)
fee04c19 5969 (uri (pypi-uri "html5lib" version))
673ab897
AE
5970 (sha256
5971 (base32
a14061aa 5972 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5973 (build-system python-build-system)
3dd75476 5974 (propagated-inputs
4eb6ed28
MB
5975 `(("python-six" ,python-six)
5976 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5977 (arguments
5978 `(#:test-target "check"))
5979 (home-page
5980 "https://github.com/html5lib/html5lib-python")
5981 (synopsis
5982 "Python HTML parser based on the WHATWG HTML specifcation")
5983 (description
5984 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5985and written in Python.")
bd3fa666 5986 (license license:expat)))
673ab897
AE
5987
5988(define-public python2-html5lib
5989 (package-with-python2 python-html5lib))
e99f4211 5990
8ee62c97
RW
5991;; Needed for python-bleach, a dependency of python-notebook
5992(define-public python-html5lib-0.9
5993 (package
5994 (inherit python-html5lib)
5995 (version "0.999")
5996 (source
5997 (origin
5998 (method url-fetch)
5999 (uri (pypi-uri "html5lib" version))
6000 (sha256
6001 (base32
6002 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
6003
6004(define-public python2-html5lib-0.9
6005 (package-with-python2 python-html5lib-0.9))
6006
13be557d
RJ
6007(define-public python-html5-parser
6008 (package
6009 (name "python-html5-parser")
6010 (version "0.4.4")
6011 (source (origin
6012 (method url-fetch)
6013 (uri (pypi-uri "html5-parser" version))
6014 (sha256
6015 (base32
6016 "1d8sxhl41ffh7qlk7wlsy17xw6slzx5v1yna9s72wx5qrpaa3wxr"))))
6017 (build-system python-build-system)
6018 (native-inputs
6019 `(("pkg-config" ,pkg-config)))
6020 (inputs
6021 `(("libxml2" ,libxml2)))
6022 (propagated-inputs
6023 `(("python-lxml" ,python-lxml)
6024 ("python-beautifulsoup4" ,python-beautifulsoup4)))
6025 (home-page "https://html5-parser.readthedocs.io")
6026 (synopsis "Fast C-based HTML5 parsing for Python")
6027 (description "This package provides a fast implementation of the HTML5
6028parsing spec for Python. Parsing is done in C using a variant of the gumbo
6029parser. The gumbo parse tree is then transformed into an lxml tree, also in
6030C, yielding parse times that can be a thirtieth of the html5lib parse times.")
6031 ;; src/as-python-tree.[c|h] are licensed GPL3. The other files
6032 ;; indicate ASL2.0, including the LICENSE file for the whole project.
6033 (license (list license:asl2.0 license:gpl3))))
6034
6035(define-public python2-html5-parser
6036 (package-with-python2 python-html5-parser))
6037
adbca19e
MB
6038(define-public python-webencodings
6039 (package
6040 (name "python-webencodings")
6041 (version "0.5")
6042 (source (origin
6043 (method url-fetch)
6044 (uri (pypi-uri "webencodings" version))
6045 (sha256
6046 (base32
6047 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
6048 (build-system python-build-system)
6049 (arguments
6050 '(#:phases
6051 (modify-phases %standard-phases
6052 (replace 'check
6053 (lambda _
6054 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
6055 (native-inputs
6056 `(("python-pytest" ,python-pytest)))
6057 (home-page "https://github.com/SimonSapin/python-webencodings")
6058 (synopsis "Character encoding aliases for legacy web content")
6059 (description
6060 "In order to be compatible with legacy web content when interpreting
6061something like @code{Content-Type: text/html; charset=latin1}, tools need
6062to use a particular set of aliases for encoding labels as well as some
6063overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
6064the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
6065or @code{UTF-16} BOM takes precedence over any other encoding declaration.
6066The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
6067defines all such details so that implementations do not have to
6068reverse-engineer each other.
6069
6070This module implements the Encoding standard and has encoding labels and
6071BOM detection, but the actual implementation for encoders and decoders
6072is Python’s.")
6073 (license license:bsd-3)))
6074
6075(define-public python2-webencodings
6076 (package-with-python2 python-webencodings))
6077
e99f4211
MW
6078(define-public python-urwid
6079 (package
6080 (name "python-urwid")
51ff41f6 6081 (version "1.3.1")
e99f4211
MW
6082 (source
6083 (origin
6084 (method url-fetch)
b97c1bfd 6085 (uri (pypi-uri "urwid" version))
e99f4211
MW
6086 (sha256
6087 (base32
51ff41f6 6088 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 6089 (build-system python-build-system)
b97c1bfd
LF
6090 (arguments
6091 `(#:phases
6092 (modify-phases %standard-phases
6093 ;; Disable failing test. Bug filed upstream:
6094 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 6095 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
6096 (add-after 'unpack 'disable-failing-test
6097 (lambda _
6098 (substitute* "urwid/tests/test_event_loops.py"
6099 (("test_remove_watch_file")
6100 "disable_remove_watch_file")))))))
e99f4211
MW
6101 (home-page "http://urwid.org")
6102 (synopsis "Console user interface library for Python")
6103 (description
6104 "Urwid is a curses-based UI/widget library for Python. It includes many
6105features useful for text console applications.")
3f641af0 6106 (license license:lgpl2.1+)))
e99f4211
MW
6107
6108(define-public python2-urwid
e9379305
MC
6109 (let ((python2-urwid (package-with-python2 python-urwid)))
6110 (package
6111 (inherit python2-urwid)
6112 (arguments
6113 (append
4fdab173
KK
6114 `(;; Explicitly using Python 2 is necessary due the argument list being
6115 ;; built from only the 'delete-test_vterm.py' phase and python-urwid's
6116 ;; package arguments, which by default assumes the use of Python 3.
6117 #:python ,python-2
6118 #:phases
e9379305
MC
6119 (modify-phases %standard-phases
6120 ;; Disable the vterm tests because of non-deterministic failures
6121 ;; with Python 2. See https://github.com/urwid/urwid/issues/230.
6122 (add-after 'unpack 'delete-test_vterm.py
6123 (delete-file "urwid/tests/test_vterm.py"))))
6124 (package-arguments python-urwid))))))
d95a56c6 6125
5220022a
JL
6126(define-public python-openid
6127 (package
6128 (name "python-openid")
6129 (version "3.0.10")
6130 (source
6131 (origin
6132 (method url-fetch)
6133 (uri (pypi-uri "python3-openid" version))
6134 (sha256
6135 (base32
6136 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
6137 (build-system python-build-system)
0660d327
DM
6138 (arguments
6139 `(#:phases
6140 (modify-phases %standard-phases
6141 (replace 'check
6142 (lambda _
6143 (zero? (system* "./admin/runtests")))))))
f048db5a 6144 (properties `((python2-variant . ,(delay python2-openid))))
0660d327
DM
6145 (propagated-inputs
6146 `(("python-defusedxml" ,python-defusedxml)))
6147 (native-inputs
6148 `(("python-psycopg2" ,python-psycopg2)
6149 ("python-django" ,python-django)))
5220022a
JL
6150 (home-page "https://github.com/necaris/python3-openid")
6151 (synopsis "OpenID support for servers and consumers")
6152 (description "This library provides OpenID authentication for Python, both
6153for clients and servers.")
6154 (license license:asl2.0)))
6155
3ef00f56 6156(define-public python2-openid
6157 (package
6158 (name "python2-openid")
6159 (version "2.2.5")
6160 (source
6161 (origin
6162 (method url-fetch)
6163 (uri (pypi-uri "python-openid" version))
6164 (sha256
6165 (base32
6166 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
6167 (build-system python-build-system)
6168 (arguments
6169 ;; Python 3 support is in `python3-openid`, a separate package.
6170 `(#:python ,python-2))
6171 (home-page "https://github.com/openid/python-openid")
6172 (synopsis "OpenID support for servers and consumers")
6173 (description "This library provides OpenID authentication for Python, both
6174for clients and servers.")
6175 (license license:asl2.0)))
6176
47d0b292
TS
6177(define-public python-urwidtrees
6178 (package
6179 (name "python-urwidtrees")
37ec4623 6180 (version "1.0.2")
47d0b292
TS
6181 (source
6182 (origin
6183 (method url-fetch)
37ec4623
TS
6184 ;; package author intends on distributing via github rather than pypi:
6185 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
6186 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
6187 version ".tar.gz"))
6188 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
6189 (sha256
6190 (base32
37ec4623 6191 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
6192 (build-system python-build-system)
6193 (arguments
6194 '(#:tests? #f)) ; no tests
f22efa01 6195 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
6196 (home-page "https://github.com/pazz/urwidtrees")
6197 (synopsis "Tree widgets for urwid")
6198 (description "Urwidtrees is a Widget Container API for the @code{urwid}
6199toolkit. Use it to build trees of widgets.")
3f641af0 6200 (license license:gpl3+)))
47d0b292
TS
6201
6202(define-public python2-urwidtrees
6203 (package-with-python2 python-urwidtrees))
6204
d95a56c6
PAR
6205(define-public python-dbus
6206 (package
6207 (name "python-dbus")
6208 (version "1.2.0")
6209 (source
6210 (origin
6211 (method url-fetch)
6212 (uri (string-append
5cc3096c 6213 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
6214 version ".tar.gz"))
6215 (sha256
6216 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
6217 (build-system gnu-build-system)
6717c879
SB
6218 (arguments
6219 '(#:phases
6220 (modify-phases %standard-phases
6221 (add-before
6222 'check 'pre-check
6223 (lambda _
6224 ;; XXX: For the missing '/etc/machine-id'.
6225 (substitute* "test/run-test.sh"
6226 (("DBUS_FATAL_WARNINGS=1")
6227 "DBUS_FATAL_WARNINGS=0"))
6228 #t)))))
d95a56c6
PAR
6229 (native-inputs
6230 `(("pkg-config" ,pkg-config)))
6231 (inputs
6232 `(("python" ,python)
2e88d113 6233 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
6234 (synopsis "Python bindings for D-bus")
6235 (description "python-dbus provides bindings for libdbus, the reference
6236implementation of D-Bus.")
6237 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 6238 (license license:expat)))
b52af02b
MW
6239
6240(define-public python2-dbus
6241 (package (inherit python-dbus)
6242 (name "python2-dbus")
6243 (inputs `(("python" ,python-2)
6244 ,@(alist-delete "python"
6245 (package-inputs python-dbus)
6246 equal?)))
6247 ;; FIXME: on Python 2, the test_utf8 fails with:
6248 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
6249 (arguments `(#:tests? #f))))
a6ac8332
AE
6250
6251(define-public python-apsw
6252 (package
6253 (name "python-apsw")
917708c2 6254 (version "3.9.2-r1")
a6ac8332
AE
6255 (source
6256 (origin
6257 (method url-fetch)
917708c2 6258 (uri (pypi-uri "apsw" version))
a6ac8332
AE
6259 (sha256
6260 (base32
917708c2 6261 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
6262 (build-system python-build-system)
6263 (inputs
f3b98f4f 6264 `(("sqlite" ,sqlite)))
a6ac8332
AE
6265 (arguments
6266 `(#:phases
154d207c 6267 (modify-phases %standard-phases
cfd34f43
JL
6268 (replace 'build
6269 (lambda _
6270 (zero?
6271 (system* "python" "setup.py" "build" "--enable-all-extensions"))))
6272 (add-after 'build 'build-test-helper
6273 (lambda _
6274 (zero?
6275 (system
6276 (string-append "gcc -fPIC -shared -o ./testextension.sqlext "
6277 "-I. -Isqlite3 src/testextension.c") ))))
154d207c
MB
6278 (delete 'check)
6279 (add-after 'install 'check
6280 (lambda* (#:key inputs outputs #:allow-other-keys)
6281 (add-installed-pythonpath inputs outputs)
6282 (zero? (system* "python" "setup.py" "test")))))))
a6ac8332
AE
6283 (home-page "https://github.com/rogerbinns/apsw/")
6284 (synopsis "Another Python SQLite Wrapper")
6285 (description "APSW is a Python wrapper for the SQLite
6286embedded relational database engine. In contrast to other wrappers such as
6287pysqlite it focuses on being a minimal layer over SQLite attempting just to
6288translate the complete SQLite API into Python.")
abde5f37 6289 (license license:zlib)))
a6ac8332
AE
6290
6291(define-public python2-apsw
6292 (package-with-python2 python-apsw))
26b307e2
AE
6293
6294(define-public python-lxml
6295 (package
6296 (name "python-lxml")
2054b522 6297 (version "3.8.0")
26b307e2
AE
6298 (source
6299 (origin
6300 (method url-fetch)
97bbc480 6301 (uri (pypi-uri "lxml" version))
26b307e2 6302 (sha256
d58a3203 6303 (base32
2054b522 6304 "15nvf6n285n282682qyw3wihsncb0x5amdhyi4b83bfa2nz74vvk"))))
26b307e2
AE
6305 (build-system python-build-system)
6306 (inputs
6307 `(("libxml2" ,libxml2)
f3b98f4f 6308 ("libxslt" ,libxslt)))
26b307e2
AE
6309 (home-page "http://lxml.de/")
6310 (synopsis
6311 "Python XML processing library")
6312 (description
6313 "The lxml XML toolkit is a Pythonic binding for the C libraries
6314libxml2 and libxslt.")
3f641af0 6315 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
6316
6317(define-public python2-lxml
6318 (package-with-python2 python-lxml))
4ed20663 6319
b32a1e47
CAW
6320;; beautifulsoup4 has a totally different namespace than 3.x,
6321;; and pypi seems to put it under its own name, so I guess we should too
6322(define-public python-beautifulsoup4
6323 (package
6324 (name "python-beautifulsoup4")
80e8d851 6325 (version "4.5.3")
b32a1e47
CAW
6326 (source
6327 (origin
6328 (method url-fetch)
6329 (uri (pypi-uri "beautifulsoup4" version))
6330 (sha256
6331 (base32
80e8d851 6332 "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"))))
b32a1e47 6333 (build-system python-build-system)
5f37f0b6
LF
6334 (arguments
6335 `(#:phases
6336 (modify-phases %standard-phases
6337 ;; The Python 2 source is the definitive source of beautifulsoup4. We
6338 ;; must use this conversion script when building with Python 3. The
6339 ;; conversion script also runs the tests.
6340 ;; For more information, see the file 'convert-py3k' in the source
6341 ;; distribution.
6342 (replace 'check
6343 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
6344 (home-page
6345 "http://www.crummy.com/software/BeautifulSoup/bs4/")
6346 (synopsis
6347 "Python screen-scraping library")
6348 (description
6349 "Beautiful Soup is a Python library designed for rapidly setting up
6350screen-scraping projects. It offers Pythonic idioms for navigating,
6351searching, and modifying a parse tree, providing a toolkit for
6352dissecting a document and extracting what you need. It automatically
6353converts incoming documents to Unicode and outgoing documents to UTF-8.")
ee94ca11
MB
6354 (license license:expat)
6355 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
b32a1e47
CAW
6356
6357(define-public python2-beautifulsoup4
6358 (package
6359 (inherit (package-with-python2
6360 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 6361 (arguments `(#:python ,python-2))))
b32a1e47 6362
4dcb135e 6363(define-public python-cssutils
092e86f5 6364 (package
4dcb135e 6365 (name "python-cssutils")
58d1d816 6366 (version "1.0.1")
092e86f5
AE
6367 (source
6368 (origin
6369 (method url-fetch)
58d1d816 6370 (uri (pypi-uri "cssutils" version))
092e86f5 6371 (sha256
58d1d816
EF
6372 (base32
6373 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
6374 (build-system python-build-system)
6375 (native-inputs
4dcb135e 6376 `(("unzip" ,unzip))) ; for unpacking the source
092e86f5 6377 (arguments
4dcb135e 6378 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
092e86f5
AE
6379 (home-page "http://cthedot.de/cssutils/")
6380 (synopsis
6381 "CSS Cascading Style Sheets library for Python")
6382 (description
6383 "Cssutils is a Python package for parsing and building CSS
6384Cascading Style Sheets. Currently it provides a DOM only and no rendering
6385options.")
3f641af0 6386 (license license:lgpl3+)))
880ff77c 6387
4dcb135e
EB
6388(define-public python2-cssutils
6389 (package-with-python2 python-cssutils))
6390
880ff77c
AE
6391(define-public python-cssselect
6392 (package
6393 (name "python-cssselect")
d5ccd9ab 6394 (version "0.9.2")
880ff77c
AE
6395 (source
6396 (origin
6397 (method url-fetch)
d5ccd9ab 6398 (uri (pypi-uri "cssselect" version))
880ff77c 6399 (sha256
d5ccd9ab
EF
6400 (base32
6401 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 6402 (build-system python-build-system)
880ff77c
AE
6403 (arguments
6404 ;; tests fail with message
6405 ;; AttributeError: 'module' object has no attribute 'tests'
6406 `(#:tests? #f))
6407 (home-page
6408 "https://pythonhosted.org/cssselect/")
6409 (synopsis
6410 "CSS3 selector parser and translator to XPath 1.0")
6411 (description
6412 "Cssselect ia a Python module that parses CSS3 Selectors and translates
6413them to XPath 1.0 expressions. Such expressions can be used in lxml or
6414another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 6415 (license license:bsd-3)))
880ff77c
AE
6416
6417(define-public python2-cssselect
6418 (package-with-python2 python-cssselect))
60357f99 6419
03702173 6420(define-public python-openid-cla
6421 (package
6422 (name "python-openid-cla")
6423 (version "1.2")
6424 (source
6425 (origin
6426 (method url-fetch)
6427 (uri (pypi-uri "python-openid-cla" version))
6428 (sha256
6429 (base32
6430 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
6431 (build-system python-build-system)
019ccdb6 6432 (arguments '(#:tests? #f)) ; No tests.
03702173 6433 (home-page "https://github.com/puiterwijk/python-openid-cla/")
6434 (synopsis "Implementation of the OpenID CLA extension for python-openid")
6435 (description "@code{openid-cla} is an implementation of the OpenID
6436contributor license agreement extension for python-openid.")
6437 (license license:bsd-3)))
6438
6439(define-public python2-openid-cla
6440 (package-with-python2 python-openid-cla))
6441
a0e41de4 6442(define-public python-openid-teams
6443 (package
6444 (name "python-openid-teams")
6445 (version "1.1")
6446 (source
6447 (origin
6448 (method url-fetch)
6449 (uri (pypi-uri "python-openid-teams" version))
6450 (sha256
6451 (base32
6452 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
6453 (build-system python-build-system)
ac72d3d2 6454 (arguments '(#:tests? #f)) ; No tests.
a0e41de4 6455 (home-page "https://github.com/puiterwijk/python-openid-teams/")
6456 (synopsis "Implementation of the OpenID teams extension for python-openid")
6457 (description
6458 "@code{openid-teams} is an implementation of the OpenID
6459teams extension for python-openid.")
6460 (license license:bsd-3)))
6461
6462(define-public python2-openid-teams
6463 (package-with-python2 python-openid-teams))
6464
60357f99
AE
6465(define-public python-netifaces
6466 (package
6467 (name "python-netifaces")
6468 (version "0.10.4")
6469 (source
6470 (origin
6471 (method url-fetch)
6472 (uri (string-append
6473 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
6474 version
6475 ".tar.gz"))
6476 (sha256
6477 (base32
6478 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
6479 (build-system python-build-system)
60357f99
AE
6480 (home-page
6481 "https://bitbucket.org/al45tair/netifaces")
6482 (synopsis
6483 "Python module for portable network interface information")
6484 (description
6485 "Netifaces is a Python module providing information on network
6486interfaces in an easy and portable manner.")
6487 (license license:expat)))
6488
6489(define-public python2-netifaces
6490 (package-with-python2 python-netifaces))
92cb152b 6491
32f77c04
RW
6492(define-public python-networkx
6493 (package
6494 (name "python-networkx")
a4d9609c 6495 (version "1.11")
32f77c04
RW
6496 (source
6497 (origin
6498 (method url-fetch)
a4d9609c 6499 (uri (pypi-uri "networkx" version))
32f77c04 6500 (sha256
a4d9609c 6501 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
6502 (build-system python-build-system)
6503 ;; python-decorator is needed at runtime
6504 (propagated-inputs
6505 `(("python-decorator" ,python-decorator)))
6506 (native-inputs
f3b98f4f 6507 `(("python-nose" ,python-nose)))
32f77c04
RW
6508 (home-page "http://networkx.github.io/")
6509 (synopsis "Python module for creating and manipulating graphs and networks")
6510 (description
6511 "NetworkX is a Python package for the creation, manipulation, and study
6512of the structure, dynamics, and functions of complex networks.")
3f641af0 6513 (license license:bsd-3)))
32f77c04
RW
6514
6515(define-public python2-networkx
6516 (package-with-python2 python-networkx))
6517
92cb152b
RW
6518(define-public snakemake
6519 (package
6520 (name "snakemake")
1fb9b678 6521 (version "3.13.3")
92cb152b
RW
6522 (source
6523 (origin
6524 (method url-fetch)
7b93d866 6525 (uri (pypi-uri "snakemake" version))
92cb152b 6526 (sha256
1fb9b678 6527 (base32 "1nixb944r4hlskwkzc4wjs34b40xpxpw9gmhhm5p09gvmm22ap5d"))))
92cb152b 6528 (build-system python-build-system)
7b93d866
MB
6529 (arguments
6530 ;; TODO: Package missing test dependencies.
e61bc976
RW
6531 '(#:tests? #f
6532 #:phases
6533 (modify-phases %standard-phases
6534 ;; For cluster execution Snakemake will call Python. Since there is
6535 ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
6536 ;; this by calling the snakemake wrapper instead.
6537 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6538 (lambda* (#:key outputs #:allow-other-keys)
6539 (substitute* "snakemake/executors.py"
6540 (("\\{sys.executable\\} -m snakemake")
6541 (string-append (assoc-ref outputs "out")
6542 "/bin/snakemake")))
6543 #t)))))
4f9998c6
RW
6544 (propagated-inputs
6545 `(("python-wrapt" ,python-wrapt)
6546 ("python-requests" ,python-requests)))
7b93d866 6547 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
92cb152b
RW
6548 (synopsis "Python-based execution environment for make-like workflows")
6549 (description
6550 "Snakemake aims to reduce the complexity of creating workflows by
6551providing a clean and modern domain specific specification language (DSL) in
6552Python style, together with a fast and comfortable execution environment.")
6553 (license license:expat)))
a1920bc9 6554
35de1fbd
RW
6555(define-public python-seaborn
6556 (package
6557 (name "python-seaborn")
ccc18762 6558 (version "0.7.1")
35de1fbd
RW
6559 (source
6560 (origin
6561 (method url-fetch)
fc899d4f 6562 (uri (pypi-uri "seaborn" version))
35de1fbd 6563 (sha256
ccc18762 6564 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
35de1fbd 6565 (build-system python-build-system)
6f976df6
MB
6566 (arguments
6567 '(#:tests? #f)) ; Tests requires a running X11 server.
35de1fbd
RW
6568 (propagated-inputs
6569 `(("python-pandas" ,python-pandas)
6570 ("python-matplotlib" ,python-matplotlib)
6571 ("python-scipy" ,python-scipy)))
35de1fbd
RW
6572 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
6573 (synopsis "Statistical data visualization")
6574 (description
6575 "Seaborn is a library for making attractive and informative statistical
6576graphics in Python. It is built on top of matplotlib and tightly integrated
6577with the PyData stack, including support for numpy and pandas data structures
6578and statistical routines from scipy and statsmodels.")
3f641af0 6579 (license license:bsd-3)
fc899d4f 6580 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
6581
6582(define-public python2-seaborn
fc899d4f
EF
6583 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
6584 (package
6585 (inherit base)
6586 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 6587 ,@(package-propagated-inputs base))))))
35de1fbd 6588
58a35665
MB
6589(define-public python-mpmath
6590 (package
6591 (name "python-mpmath")
6592 (version "0.19")
6593 (source (origin
6594 (method url-fetch)
6595 (uri (string-append "http://mpmath.org/files/mpmath-"
6596 version ".tar.gz"))
6597 (sha256
6598 (base32
6599 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
6600 (build-system python-build-system)
6601 (arguments
6602 '(#:phases
6603 (modify-phases %standard-phases
6604 (replace 'check
6605 (lambda _
6606 (zero?
6607 (system* "python" "mpmath/tests/runtests.py" "-local")))))))
6608 (home-page "http://mpmath.org")
6609 (synopsis "Arbitrary-precision floating-point arithmetic in python")
6610 (description
6611 "@code{mpmath} can be used as an arbitrary-precision substitute for
6612Python's float/complex types and math/cmath modules, but also does much
6613more advanced mathematics.")
6614 (license license:bsd-3)))
6615
6616(define-public python2-mpmath
6617 (package-with-python2 python-mpmath))
35de1fbd 6618
90fc547f
RW
6619(define-public python-sympy
6620 (package
6621 (name "python-sympy")
52f622ef 6622 (version "1.0")
90fc547f
RW
6623 (source
6624 (origin
6625 (method url-fetch)
6626 (uri (string-append
6627 "https://github.com/sympy/sympy/releases/download/sympy-"
6628 version "/sympy-" version ".tar.gz"))
6629 (sha256
52f622ef 6630 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
90fc547f 6631 (build-system python-build-system)
52f622ef
MB
6632 (propagated-inputs
6633 `(("python-mpmath" ,python-mpmath)))
90fc547f
RW
6634 (home-page "http://www.sympy.org/")
6635 (synopsis "Python library for symbolic mathematics")
6636 (description
6637 "SymPy is a Python library for symbolic mathematics. It aims to become a
6638full-featured computer algebra system (CAS) while keeping the code as simple
6639as possible in order to be comprehensible and easily extensible.")
3f641af0 6640 (license license:bsd-3)))
90fc547f
RW
6641
6642(define-public python2-sympy
6643 (package-with-python2 python-sympy))
6644
e8c9b010
SR
6645(define-public python-q
6646 (package
6647 (name "python-q")
6648 (version "2.6")
6649 (source
6650 (origin
6651 (method url-fetch)
6652 (uri (pypi-uri "q" version))
6653 (sha256
6654 (base32
6655 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
6656 (build-system python-build-system)
6657 (home-page "https://github.com/zestyping/q")
6658 (synopsis "Quick-and-dirty debugging output for tired programmers")
6659 (description
6660 "q is a Python module for \"print\" style of debugging Python code. It
6661provides convenient short API for print out of values, tracebacks, and
6662falling into the Python interpreter.")
f210e944 6663 (license license:asl2.0)))
e8c9b010
SR
6664
6665(define-public python2-q
f210e944 6666 (package-with-python2 python-q))
e8c9b010 6667
a1920bc9
FB
6668(define-public python-testlib
6669 (package
6670 (name "python-testlib")
6671 (version "0.6.5")
6672 (source
6673 (origin
6674 (method url-fetch)
6675 (uri (string-append
6676 "https://pypi.python.org/packages/source/t/testlib/testlib-"
6677 version ".zip"))
6678 (sha256
6679 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
6680 (build-system python-build-system)
a1920bc9 6681 (native-inputs
632735f2 6682 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
6683 (synopsis "Python micro test suite harness")
6684 (description "A micro unittest suite harness for Python.")
6685 (home-page "https://github.com/trentm/testlib")
1cb9c006 6686 (license license:expat)))
a1920bc9
FB
6687
6688(define-public python2-testlib
6689 (package-with-python2 python-testlib))
db62afa5
LC
6690
6691(define-public python2-xlib
6692 (package
6693 (name "python2-xlib")
6694 (version "0.14")
6695 (source (origin
6696 (method url-fetch)
de67e922
LF
6697 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6698 "/" version "/"
db62afa5
LC
6699 "python-xlib-" version ".tar.gz"))
6700 (sha256
6701 (base32
6702 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6703 (build-system python-build-system)
6704 (arguments
6705 `(#:python ,python-2 ;Python 2 only
6706 #:tests? #f)) ;no tests
db62afa5
LC
6707 (home-page "http://python-xlib.sourceforge.net/")
6708 (synopsis "Python X11 client library")
6709 (description
6710 "The Python X Library is intended to be a fully functional X client
6711library for Python programs. It is useful to implement low-level X clients.
6712It is written entirely in Python.")
3f641af0 6713 (license license:gpl2+)))
0234ca06
DT
6714
6715(define-public python-singledispatch
6716 (package
6717 (name "python-singledispatch")
6718 (version "3.4.0.3")
6719 (source
6720 (origin
6721 (method url-fetch)
bdb67d84 6722 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
6723 (sha256
6724 (base32
6725 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6726 (build-system python-build-system)
5e1c9d24
HG
6727 (native-inputs
6728 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
6729 (home-page
6730 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6731 (synopsis "Backport of singledispatch feature from Python 3.4")
6732 (description
6733 "This library brings functools.singledispatch from Python 3.4 to Python
67342.6-3.3.")
6735 (license license:expat)))
6736
6737(define-public python2-singledispatch
6738 (package-with-python2 python-singledispatch))
feaae484 6739
310d218f
RW
6740(define-public python-tornado
6741 (package
6742 (name "python-tornado")
6fdeb324 6743 (version "4.5.1")
310d218f
RW
6744 (source
6745 (origin
6746 (method url-fetch)
a724924b 6747 (uri (pypi-uri "tornado" version))
310d218f 6748 (sha256
6fdeb324 6749 (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
310d218f 6750 (build-system python-build-system)
3fe2c209
MB
6751 (arguments
6752 '(;; FIXME: Two tests error out with:
6753 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
6754 ;; #:phases
6755 ;; (modify-phases %standard-phases
6756 ;; (replace 'check
6757 ;; (lambda _
6758 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
6759 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
6760 ;; (zero? (system* "python" "-m" "tornado.test")))))
6761 #:tests? #f))
310d218f 6762 (native-inputs
b455439b 6763 `(("python-certifi" ,python-certifi)))
f22efa01 6764 (propagated-inputs
b455439b 6765 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 6766 (home-page "http://www.tornadoweb.org/")
310d218f
RW
6767 (synopsis "Python web framework and asynchronous networking library")
6768 (description
6769 "Tornado is a Python web framework and asynchronous networking library,
6770originally developed at FriendFeed. By using non-blocking network I/O,
6771Tornado can scale to tens of thousands of open connections, making it ideal
6772for long polling, WebSockets, and other applications that require a long-lived
6773connection to each user.")
3f641af0 6774 (license license:asl2.0)
b455439b 6775 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
6776
6777(define-public python2-tornado
b455439b 6778 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 6779 (package (inherit tornado)
f22efa01 6780 (propagated-inputs
310d218f
RW
6781 `(("python2-backport-ssl-match-hostname"
6782 ,python2-backport-ssl-match-hostname)
b455439b 6783 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 6784 ,@(package-propagated-inputs tornado))))))
310d218f 6785
c795bc79
CB
6786(define-public python-tornado-http-auth
6787 (package
6788 (name "python-tornado-http-auth")
6789 (version "1.1.0")
6790 (source
6791 (origin
6792 (method url-fetch)
6793 (uri (pypi-uri "tornado-http-auth" version))
6794 (sha256
6795 (base32
6796 "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
6797 (build-system python-build-system)
6798 (propagated-inputs
6799 `(("python-tornado" ,python-tornado)))
6800 (home-page
6801 "https://github.com/gvalkov/tornado-http-auth")
6802 (synopsis
6803 "Digest and basic authentication module for Tornado")
6804 (description
6805 "Provides support for adding authentication to services using the Tornado
6806web framework, either via the basic or digest authentication schemes.")
6807 (license license:asl2.0)))
6808
6b59fc10
EF
6809;; the python- version can be removed with python-3.5
6810(define-public python-backports-abc
6811 (package
6812 (name "python-backports-abc")
27f9148e 6813 (version "0.5")
6b59fc10
EF
6814 (source
6815 (origin
6816 (method url-fetch)
6817 (uri (pypi-uri "backports_abc" version))
6818 (sha256
6819 (base32
27f9148e 6820 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6b59fc10 6821 (build-system python-build-system)
6b59fc10 6822 (home-page "https://github.com/cython/backports_abc")
66e07664 6823 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
6824 (description
6825 "Python-backports-abc provides a backport of additions to the
6826'collections.abc' module in Python-3.5.")
3f641af0 6827 (license license:psfl)))
6b59fc10
EF
6828
6829(define-public python2-backports-abc
6830 (package-with-python2 python-backports-abc))
6831
4ff9e868
OP
6832(define-public python-backports-csv
6833 (package
6834 (name "python-backports-csv")
6835 (version "1.0.5")
6836 (source
6837 (origin
6838 (method url-fetch)
6839 (uri (pypi-uri "backports.csv" version))
6840 (sha256
6841 (base32
6842 "1imzbrradkfn8s2m1qcimyn74dn1mz2p3j381jljn166rf2i6hlc"))))
6843 (build-system python-build-system)
6844 (home-page "https://github.com/ryanhiebert/backports.csv")
6845 (synopsis "Backport of Python 3's csv module for Python 2")
6846 (description
6847 "Provides a backport of Python 3's @code{csv} module for parsing
6848comma separated values. The API of the @code{csv} module in Python 2
6849is drastically different from the @code{csv} module in Python 3.
6850This is due, for the most part, to the difference between str in
6851Python 2 and Python 3.")
6852 (license license:psfl)))
6853
6854(define-public python2-backports-csv
6855 (package-with-python2 python-backports-csv))
6856
ec074213
TD
6857(define-public python2-backports-shutil-get-terminal-size
6858 (package
6859 (name "python2-backports-shutil-get-terminal-size")
6860 (version "1.0.0")
6861 (source
6862 (origin
6863 (method url-fetch)
6864 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6865 (sha256
6866 (base32
6867 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6868 (build-system python-build-system)
6869 (arguments
c0446791
MB
6870 `(#:python ,python-2
6871 #:phases
6872 (modify-phases %standard-phases
6873 (replace 'check
6874 (lambda _
6875 (zero? (system* "py.test" "-v")))))))
6876 (native-inputs
6877 `(("python2-pytest" ,python2-pytest)))
ec074213
TD
6878 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6879 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6880 (description
6881 "This package provides a backport of the @code{get_terminal_size
6882function} from Python 3.3's @code{shutil}.
6883Unlike the original version it is written in pure Python rather than C,
6884so it might be a tiny bit slower.")
6885 (license license:expat)))
6886
feaae484
SB
6887(define-public python-waf
6888 (package
6889 (name "python-waf")
27bf00e6 6890 (version "1.9.8")
feaae484
SB
6891 (source (origin
6892 (method url-fetch)
bae67829 6893 (uri (string-append "https://waf.io/"
feaae484
SB
6894 "waf-" version ".tar.bz2"))
6895 (sha256
6896 (base32
27bf00e6 6897 "0wl4cnmp06lfxqjxaan58bqxn27smhydz0sg5prrfbl3bsw4gv6q"))))
feaae484
SB
6898 (build-system python-build-system)
6899 (arguments
6900 '(#:phases
6901 (modify-phases %standard-phases
6902 (replace 'build
7dd55dfe
EF
6903 (lambda _
6904 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 6905 (replace 'check
7dd55dfe
EF
6906 (lambda _
6907 (zero? (system* "python" "waf" "--version"))))
feaae484 6908 (replace 'install
7dd55dfe
EF
6909 (lambda _
6910 (copy-file "waf" %output))))))
27bf00e6 6911 (home-page "https://waf.io/")
feaae484
SB
6912 (synopsis "Python-based build system")
6913 (description
6914 "Waf is a Python-based framework for configuring, compiling and installing
6915applications.")
3f641af0 6916 (license license:bsd-3)))
feaae484
SB
6917
6918(define-public python2-waf
6919 (package-with-python2 python-waf))
45203542
RW
6920
6921(define-public python-pyzmq
6922 (package
6923 (name "python-pyzmq")
3655ee76 6924 (version "15.1.0")
45203542
RW
6925 (source
6926 (origin
6927 (method url-fetch)
3655ee76 6928 (uri (pypi-uri "pyzmq" version))
45203542 6929 (sha256
3655ee76 6930 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
6931 (build-system python-build-system)
6932 (arguments
6933 `(#:configure-flags
6934 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6935 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6936 ;; --inplace' for 'python setup.py test' to work.
6937 #:tests? #f))
6938 (inputs
6939 `(("zeromq" ,zeromq)))
6940 (native-inputs
6941 `(("pkg-config" ,pkg-config)
f3b98f4f 6942 ("python-nose" ,python-nose)))
7bf837fd 6943 (home-page "https://github.com/zeromq/pyzmq")
45203542
RW
6944 (synopsis "Python bindings for 0MQ")
6945 (description
6946 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 6947 (license license:bsd-4)))
45203542
RW
6948
6949(define-public python2-pyzmq
6950 (package-with-python2 python-pyzmq))
d889e6c4
CR
6951
6952(define-public python-pep8
6953 (package
6954 (name "python-pep8")
db251311 6955 (version "1.7.0")
d889e6c4
CR
6956 (source
6957 (origin
6958 (method url-fetch)
db251311 6959 (uri (pypi-uri "pep8" version))
d889e6c4
CR
6960 (sha256
6961 (base32
db251311 6962 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 6963 (build-system python-build-system)
d889e6c4
CR
6964 (home-page "http://pep8.readthedocs.org/")
6965 (synopsis "Python style guide checker")
6966 (description
6967 "This tools checks Python code against some of the style conventions in
6968PEP 8.")
6969 (license license:expat)))
6970
6971(define-public python2-pep8
6972 (package-with-python2 python-pep8))
e31d7f44
CR
6973
6974(define-public python-pyflakes
6975 (package
6976 (name "python-pyflakes")
2abc3972 6977 (version "1.0.0")
e31d7f44
CR
6978 (source
6979 (origin
6980 (method url-fetch)
2abc3972 6981 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
6982 (sha256
6983 (base32
2abc3972 6984 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 6985 (build-system python-build-system)
e31d7f44
CR
6986 (home-page
6987 "https://github.com/pyflakes/pyflakes")
6988 (synopsis "Passive checker of Python programs")
6989 (description
6990 "Pyflakes statically checks Python source code for common errors.")
6991 (license license:expat)))
a59e017c 6992
7261d9eb
CR
6993(define-public python2-pyflakes
6994 (package-with-python2 python-pyflakes))
6995
a59e017c
CR
6996(define-public python-mccabe
6997 (package
6998 (name "python-mccabe")
c6ebd40d 6999 (version "0.4.0")
a59e017c
CR
7000 (source
7001 (origin
7002 (method url-fetch)
c6ebd40d 7003 (uri (pypi-uri "mccabe" version))
a59e017c
CR
7004 (sha256
7005 (base32
c6ebd40d 7006 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 7007 (build-system python-build-system)
328bb95d 7008 (native-inputs
c6ebd40d 7009 `(("python-pytest" ,python-pytest)
f3b98f4f 7010 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
7011 (home-page "https://github.com/flintwork/mccabe")
7012 (synopsis "McCabe checker, plugin for flake8")
7013 (description
7014 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
7015complexity of Python source code.")
7362371d 7016 (license license:expat)))
a59e017c
CR
7017
7018(define-public python2-mccabe
7019 (package-with-python2 python-mccabe))
e8df8f47 7020
7477fbb1
CR
7021(define-public python-mccabe-0.2.1
7022 (package (inherit python-mccabe)
7023 (version "0.2.1")
7024 (source
7025 (origin
7026 (method url-fetch)
7027 (uri (pypi-uri "mccabe" version))
7028 (sha256
7029 (base32
f3b98f4f 7030 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
7031
7032(define-public python2-mccabe-0.2.1
7033 (package-with-python2 python-mccabe-0.2.1))
7034
e8df8f47
CR
7035;; Flake8 2.4.1 requires an older version of pep8.
7036;; This should be removed ASAP.
7037(define-public python-pep8-1.5.7
7038 (package (inherit python-pep8)
7039 (version "1.5.7")
7040 (source
7041 (origin
7042 (method url-fetch)
7043 (uri (string-append
7044 "https://pypi.python.org/packages/source/p/pep8/pep8-"
7045 version
7046 ".tar.gz"))
7047 (sha256
7048 (base32
73e3060d
MB
7049 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
7050 (arguments
7051 ;; XXX Tests not compatible with Python 3.5.
7052 '(#:tests? #f))))
e8df8f47
CR
7053
7054(define-public python2-pep8-1.5.7
7055 (package-with-python2 python-pep8-1.5.7))
7056
7057;; Flake8 2.4.1 requires an older version of pyflakes.
7058;; This should be removed ASAP.
7059(define-public python-pyflakes-0.8.1
7060 (package (inherit python-pyflakes)
7061 (version "0.8.1")
7062 (source
7063 (origin
7064 (method url-fetch)
7065 (uri (string-append
7066 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
7067 version
7068 ".tar.gz"))
7069 (sha256
7070 (base32
0d84e1ef
MB
7071 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
7072 (arguments
7073 ;; XXX Tests not compatible with Python 3.5.
7074 '(#:tests? #f))))
e8df8f47
CR
7075
7076(define-public python2-pyflakes-0.8.1
7261d9eb 7077 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
7078
7079(define-public python-flake8
7080 (package
7081 (name "python-flake8")
43789136 7082 (version "2.5.4")
e8df8f47
CR
7083 (source
7084 (origin
7085 (method url-fetch)
1b995533 7086 (uri (pypi-uri "flake8" version))
e8df8f47
CR
7087 (sha256
7088 (base32
011271c7
HG
7089 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
7090 (modules '((guix build utils)))
7091 (snippet
7092 '(begin
7093 ;; Remove pre-compiled .pyc files from source.
7094 (for-each delete-file-recursively
7095 (find-files "." "__pycache__" #:directories? #t))
7096 (for-each delete-file (find-files "." "\\.pyc$"))
7097 #t))))
e8df8f47 7098 (build-system python-build-system)
482d9591 7099 (propagated-inputs
f3b98f4f 7100 `(("python-pep8" ,python-pep8)
43789136 7101 ("python-pyflakes" ,python-pyflakes)
482d9591 7102 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
7103 (native-inputs
7104 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
7105 ("python-nose" ,python-nose)))
7106 (home-page "https://gitlab.com/pycqa/flake8")
7107 (synopsis
7108 "The modular source code checker: pep8, pyflakes and co")
7109 (description
7110 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
7111 (license license:expat)))
7112
7113(define-public python2-flake8
7114 (package-with-python2 python-flake8))
61b9ac53 7115
1f42d824
MFM
7116(define-public python-flake8-polyfill
7117 (package
7118 (name "python-flake8-polyfill")
7119 (version "1.0.1")
7120 (source
7121 (origin
7122 (method url-fetch)
7123 (uri (pypi-uri "flake8-polyfill" version))
7124 (sha256
7125 (base32
7126 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
7127 (build-system python-build-system)
2c1cad7a
MB
7128 (arguments
7129 '(#:phases
7130 (modify-phases %standard-phases
7131 (replace 'check
7132 (lambda _
7133 (setenv "PYTHONPATH"
7134 (string-append (getcwd) "/build/lib:"
7135 (getenv "PYTHONPATH")))
7136 (zero? (system* "py.test" "-v")))))))
7137 (native-inputs
7138 `(("python-flake8" ,python-flake8)
7139 ("python-mock" ,python-mock)
7140 ("python-pycodestyle" ,python-pycodestyle)
7141 ("python-pytest" ,python-pytest)))
1f42d824
MFM
7142 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
7143 (synopsis "Polyfill package for Flake8 plugins")
7144 (description
7145 "This package that provides some compatibility helpers for Flake8
7146plugins that intend to support Flake8 2.x and 3.x simultaneously.")
7147 (license license:expat)))
7148
7149(define-public python2-flake8-polyfill
7150 (package-with-python2 python-flake8-polyfill))
7151
61b9ac53
FB
7152(define-public python-mistune
7153 (package
7154 (name "python-mistune")
08b81336 7155 (version "0.7.3")
61b9ac53
FB
7156 (source
7157 (origin
7158 (method url-fetch)
eff8d773 7159 (uri (pypi-uri "mistune" version))
61b9ac53
FB
7160 (sha256
7161 (base32
08b81336 7162 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
61b9ac53 7163 (build-system python-build-system)
328bb95d 7164 (native-inputs
f3b98f4f 7165 `(("python-nose" ,python-nose)
61b9ac53
FB
7166 ("python-cython" ,python-cython)))
7167 (home-page "https://github.com/lepture/mistune")
7168 (synopsis "Markdown parser in pure Python")
7169 (description "This package provides a fast markdown parser in pure
7170Python.")
3f641af0 7171 (license license:bsd-3)))
61b9ac53
FB
7172
7173(define-public python2-mistune
7174 (package-with-python2 python-mistune))
6d992d07 7175
b9893908
EE
7176(define-public python-markdown
7177 (package
7178 (name "python-markdown")
4ffbe8c6 7179 (version "2.6.8")
b9893908
EE
7180 (source
7181 (origin
7182 (method url-fetch)
7183 (uri (pypi-uri "Markdown" version))
7184 (sha256
7185 (base32
4ffbe8c6 7186 "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a"))))
b9893908
EE
7187 (build-system python-build-system)
7188 (arguments
7189 `(#:phases
7190 (modify-phases %standard-phases
7191 (replace 'check
7192 (lambda _
7193 (zero? (system* "python" "run-tests.py")))))))
7194 (native-inputs
7195 `(("python-nose" ,python-nose)
7196 ("python-pyyaml" ,python-pyyaml)))
7197 (home-page "https://pythonhosted.org/Markdown/")
7198 (synopsis "Python implementation of Markdown")
7199 (description
7200 "This package provides a Python implementation of John Gruber's
7201Markdown. The library features international input, various Markdown
7202extensions, and several HTML output formats. A command line wrapper
7203markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 7204 (license license:bsd-3)))
b9893908
EE
7205
7206(define-public python2-markdown
7207 (package-with-python2 python-markdown))
7208
6d992d07
FB
7209(define-public python-ptyprocess
7210 (package
7211 (name "python-ptyprocess")
70fc93cb 7212 (version "0.5.1")
6d992d07
FB
7213 (source
7214 (origin
7215 (method url-fetch)
7216 (uri (string-append
7217 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
7218 version ".tar.gz"))
7219 (sha256
7220 (base32
70fc93cb 7221 "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
6d992d07 7222 (build-system python-build-system)
328bb95d 7223 (native-inputs
f3b98f4f 7224 `(("python-nose" ,python-nose)))
6d992d07
FB
7225 (arguments
7226 `(#:phases
7227 (modify-phases %standard-phases
7228 (replace 'check
7229 (lambda _
7230 (zero? (system* "nosetests")))))))
7231 (home-page "https://github.com/pexpect/ptyprocess")
7232 (synopsis "Run a subprocess in a pseudo terminal")
7233 (description
7234 "This package provides a Python library used to launch a subprocess in a
7235pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 7236 (license license:isc)))
6d992d07
FB
7237
7238(define-public python2-ptyprocess
7239 (package-with-python2 python-ptyprocess))
4aadb1df 7240
df893a38
MB
7241(define-public python-cram
7242 (package
7243 (name "python-cram")
7244 (version "0.7")
7245 (home-page "https://bitheap.org/cram/")
7246 (source (origin
7247 (method url-fetch)
7248 (uri (list (string-append home-page "cram-"
7249 version ".tar.gz")
7250 (pypi-uri "cram" version)))
7251 (sha256
7252 (base32
7253 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
7254 (arguments
7255 '(#:phases
7256 (modify-phases %standard-phases
7257 (add-after 'unpack 'patch-source
7258 (lambda _
7259 (substitute* (find-files "cram" ".*\\.py$")
7260 ;; Replace default shell path.
7261 (("/bin/sh") (which "sh")))
7262 (substitute* (find-files "tests" ".*\\.t$")
7263 (("md5") "md5sum")
7264 (("/bin/bash") (which "bash"))
7265 (("/bin/sh") (which "sh")))
7266 (substitute* "cram/_test.py"
7267 ;; This hack works around a bug triggered by substituting
7268 ;; the /bin/sh paths. "tests/usage.t" compares the output of
7269 ;; "cram -h", which breaks the output at 80 characters. This
7270 ;; causes the line showing the default shell to break into two
7271 ;; lines, but the test expects a single line...
7272 (("env\\['COLUMNS'\\] = '80'")
7273 "env['COLUMNS'] = '160'"))
7274 #t))
7275 (delete 'check)
7276 (add-after 'install 'check
7277 ;; The test phase uses the built library and executable.
7278 ;; It's easier to run it after install since the build
7279 ;; directory contains version-specific PATH.
7280 (lambda* (#:key inputs outputs #:allow-other-keys)
7281 (add-installed-pythonpath inputs outputs)
7282 (setenv "PATH" (string-append (getenv "PATH") ":"
7283 (assoc-ref outputs "out") "/bin"))
7284 (zero? (system* "make" "test")))))))
7285 (build-system python-build-system)
7286 (native-inputs
7287 `(("python-coverage" ,python-coverage)
7288 ("which" ,which)))
7289 (synopsis "Simple testing framework for command line applications")
7290 (description
7291 "Cram is a functional testing framework for command line applications.
7292Cram tests look like snippets of interactive shell sessions. Cram runs each
7293command and compares the command output in the test with the command’s actual
7294output.")
7295 (license license:gpl2+)))
7296
7297(define-public python2-cram
7298 (package-with-python2 python-cram))
7299
4aadb1df
FB
7300(define-public python-terminado
7301 (package
7302 (name "python-terminado")
783fb0a3 7303 (version "0.6")
4aadb1df
FB
7304 (source
7305 (origin
7306 (method url-fetch)
783fb0a3 7307 (uri (pypi-uri "terminado" version))
4aadb1df
FB
7308 (sha256
7309 (base32
783fb0a3 7310 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
7311 (build-system python-build-system)
7312 (propagated-inputs
7313 `(("python-tornado" ,python-tornado)
7314 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
7315 (native-inputs
7316 `(("python-nose" ,python-nose)))
4aadb1df
FB
7317 (arguments
7318 `(#:phases
7319 (modify-phases %standard-phases
7320 (replace 'check
7321 (lambda _
7322 (zero? (system* "nosetests")))))))
7323 (home-page "https://github.com/takluyver/terminado")
7324 (synopsis "Terminals served to term.js using Tornado websockets")
7325 (description "This package provides a Tornado websocket backend for the
7326term.js Javascript terminal emulator library.")
3f641af0 7327 (license license:bsd-2)
783fb0a3 7328 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
7329
7330(define-public python2-terminado
783fb0a3 7331 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 7332 (package (inherit terminado)
783fb0a3
EF
7333 (propagated-inputs
7334 `(("python2-backport-ssl-match-hostname"
7335 ,python2-backport-ssl-match-hostname)
00e10c6e 7336 ,@(package-propagated-inputs terminado))))))
5faa5ce4 7337
789de5e2 7338(define-public python-straight-plugin
7339 (package
7340 (name "python-straight-plugin")
7341 (version "1.4.1")
7342 (source
7343 (origin
7344 (method url-fetch)
7345 (uri (pypi-uri "straight.plugin" version))
7346 (sha256
7347 (base32
7348 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
7349 (build-system python-build-system)
7350 (home-page "https://github.com/ironfroggy/straight.plugin")
7351 (synopsis "Simple namespaced plugin facility")
7352 (description "Straight Plugin provides a type of plugin you can create from
7353almost any existing Python modules, and an easy way for outside developers to
7354add functionality and customization to your projects with their own plugins.")
7355 (license license:expat)))
7356
7357(define-public python2-straight-plugin
7358 (package-with-python2 python-straight-plugin))
7359
d582eaac
SB
7360(define-public python-fonttools
7361 (package
7362 (name "python-fonttools")
7363 (version "2.5")
7364 (source (origin
7365 (method url-fetch)
7366 (uri (string-append
7367 "https://pypi.python.org/packages/source/F/FontTools/"
7368 "fonttools-" version ".tar.gz"))
7369 (sha256
7370 (base32
7371 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
7372 (build-system python-build-system)
9e8c6a37
HG
7373 (arguments
7374 '(#:test-target "check"
7375 #:phases
7376 (modify-phases %standard-phases
7377 (add-after 'unpack 'patch-setuppy
7378 ;; Remove the undocumented "extra_path" argument, which adds an
7379 ;; intervening directories between site-packages and the package
7380 ;; directory.
7381 (lambda _
7382 (substitute* "setup.py"
7383 (("^[ \t]*extra_path *= *'FontTools',") ""))
7384 #t)))))
7bf837fd 7385 (home-page "https://github.com/behdad/fonttools")
d582eaac
SB
7386 (synopsis "Tools to manipulate font files")
7387 (description
7388 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 7389supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
7390of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
7391also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
7392from an XML-based format.")
3f641af0
DC
7393 (license (license:non-copyleft
7394 "file://LICENSE.txt"
7395 "See LICENSE.txt in the distribution."))))
d582eaac
SB
7396
7397(define-public python2-fonttools
7398 (package-with-python2 python-fonttools))
75710da6 7399
5faa5ce4
RW
7400(define-public python-ly
7401 (package
7402 (name "python-ly")
5135354f 7403 (version "0.9.4")
5faa5ce4
RW
7404 (source
7405 (origin
7406 (method url-fetch)
5135354f
RW
7407 (uri (string-append "https://pypi.python.org/packages/57/4f/"
7408 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
7409 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
7410 (sha256
7411 (base32
5135354f 7412 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 7413 (build-system python-build-system)
972cf9be
MB
7414 (arguments
7415 ;; FIXME: Some tests need network access.
7416 '(#:tests? #f))
5faa5ce4
RW
7417 (synopsis "Tool and library for manipulating LilyPond files")
7418 (description "This package provides a Python library to parse, manipulate
7419or create documents in LilyPond format. A command line program ly is also
7420provided that can be used to do various manipulations with LilyPond files.")
7421 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 7422 (license license:gpl2+)))
7e7b27d9
CR
7423
7424(define-public python-appdirs
7425 (package
7426 (name "python-appdirs")
543782e1 7427 (version "1.4.3")
7e7b27d9
CR
7428 (source
7429 (origin
7430 (method url-fetch)
26b16fd9 7431 (uri (pypi-uri "appdirs" version))
7e7b27d9
CR
7432 (sha256
7433 (base32
543782e1 7434 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
7e7b27d9 7435 (build-system python-build-system)
7bf837fd 7436 (home-page "https://github.com/ActiveState/appdirs")
7e7b27d9
CR
7437 (synopsis
7438 "Determine platform-specific dirs, e.g. a \"user data dir\"")
7439 (description
7440 "This module provides a portable way of finding out where user data
7441should be stored on various operating systems.")
7442 (license license:expat)))
7443
7444(define-public python2-appdirs
7445 (package-with-python2 python-appdirs))
89b2e0b0
LF
7446
7447(define-public python-llfuse
7448 (package
7449 (name "python-llfuse")
4d31d143 7450 (version "1.2")
89b2e0b0
LF
7451 (source (origin
7452 (method url-fetch)
7453 (uri (string-append
7454 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
7455 "llfuse-" version ".tar.bz2"))
7456 (sha256
7457 (base32
4d31d143 7458 "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4"))))
89b2e0b0
LF
7459 (build-system python-build-system)
7460 (inputs
7461 `(("fuse" ,fuse)
7462 ("attr" ,attr)))
7463 (native-inputs
f3b98f4f 7464 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
7465 (synopsis "Python bindings for FUSE")
7466 (description
7467 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
7468 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 7469 (license license:lgpl2.0+)
cd0569c4 7470 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
7471
7472(define-public python2-llfuse
cd0569c4
LF
7473 (package (inherit (package-with-python2
7474 (strip-python2-variant python-llfuse)))
7475 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
7476
7477;; For attic-0.16
7478(define-public python-llfuse-0.41
7479 (package (inherit python-llfuse)
229b3661 7480 (version "0.41.1")
cd0569c4
LF
7481 (source (origin
7482 (method url-fetch)
7483 (uri (string-append
7484 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
7485 "llfuse-" version ".tar.bz2"))
7486 (sha256
7487 (base32
229b3661 7488 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
7489 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
7490 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 7491 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
7492
7493(define-public python-msgpack
7494 (package
7495 (name "python-msgpack")
aed625bd 7496 (version "0.4.8")
641c9871
LF
7497 (source (origin
7498 (method url-fetch)
ae831df4 7499 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
7500 (sha256
7501 (base32
aed625bd 7502 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 7503 (build-system python-build-system)
641c9871
LF
7504 (synopsis "MessagePack (de)serializer")
7505 (description "MessagePack is a fast, compact binary serialization format,
7506suitable for similar data to JSON. This package provides CPython bindings for
7507reading and writing MessagePack data.")
7508 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 7509 (license license:asl2.0)))
bd74be7b
LF
7510
7511(define-public python2-msgpack
f210e944 7512 (package-with-python2 python-msgpack))
641c9871 7513
6e5e39f4
CR
7514(define-public python-netaddr
7515 (package
7516 (name "python-netaddr")
e121be1e 7517 (version "0.7.19")
6e5e39f4
CR
7518 (source
7519 (origin
7520 (method url-fetch)
7521 (uri (string-append
7522 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
7523 version
7524 ".tar.gz"))
7525 (sha256
7526 (base32
e121be1e 7527 "1zdfadvpq4lmcqzr383gywxn4xyn355kj1n3lk9q2l03vmyfrbiq"))))
6e5e39f4
CR
7528 (build-system python-build-system)
7529 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
7530 (home-page "https://github.com/drkjam/netaddr/")
7531 (synopsis "Pythonic manipulation of network addresses")
7532 (description
7533 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
7534and MAC network addresses.")
3f641af0 7535 (license license:bsd-3)))
6e5e39f4
CR
7536
7537(define-public python2-netaddr
7538 (package-with-python2 python-netaddr))
8c692a52
CR
7539
7540(define-public python-wrapt
7541 (package
7542 (name "python-wrapt")
d25bee26 7543 (version "1.10.8")
8c692a52
CR
7544 (source
7545 (origin
7546 (method url-fetch)
d25bee26 7547 (uri (pypi-uri "wrapt" version))
8c692a52
CR
7548 (sha256
7549 (base32
d25bee26 7550 "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af"))))
8c692a52
CR
7551 (build-system python-build-system)
7552 (arguments
7553 ;; Tests are not included in the tarball, they are only available in the
7554 ;; git repository.
7555 `(#:tests? #f))
8c692a52
CR
7556 (home-page "https://github.com/GrahamDumpleton/wrapt")
7557 (synopsis "Module for decorators, wrappers and monkey patching")
7558 (description
7559 "The aim of the wrapt module is to provide a transparent object proxy for
7560 Python, which can be used as the basis for the construction of function
7561 wrappers and decorator functions.")
3f641af0 7562 (license license:bsd-2)))
8c692a52
CR
7563
7564(define-public python2-wrapt
7565 (package-with-python2 python-wrapt))
b85c85be
CR
7566
7567(define-public python-iso8601
7568 (package
7569 (name "python-iso8601")
fe84bc9a 7570 (version "0.1.11")
b85c85be
CR
7571 (source
7572 (origin
7573 (method url-fetch)
fe84bc9a 7574 (uri (pypi-uri "iso8601" version))
b85c85be 7575 (sha256
fe84bc9a
EF
7576 (base32
7577 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 7578 (build-system python-build-system)
63b02364
MB
7579 (native-inputs
7580 `(("python-pytest" ,python-pytest)))
b85c85be
CR
7581 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
7582 (synopsis "Module to parse ISO 8601 dates")
7583 (description
7584 "This module parses the most common forms of ISO 8601 date strings (e.g.
7585@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
7586 (license license:expat)))
7587
7588(define-public python2-iso8601
7589 (package-with-python2 python-iso8601))
5e412b63
CR
7590
7591(define-public python-monotonic
7592 (package
7593 (name "python-monotonic")
7594 (version "0.3")
7595 (source
7596 (origin
7597 (method url-fetch)
7598 (uri (string-append
7599 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
7600 version
7601 ".tar.gz"))
7602 (sha256
7603 (base32
7604 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
7605 (build-system python-build-system)
5e412b63
CR
7606 (home-page "https://github.com/atdt/monotonic")
7607 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
7608 (description
7609 "This module provides a monotonic() function which returns the value (in
7610fractional seconds) of a clock which never goes backwards.")
3f641af0 7611 (license license:asl2.0)))
5e412b63
CR
7612
7613(define-public python2-monotonic
7614 (package-with-python2 python-monotonic))
de34afac
CR
7615
7616(define-public python-webob
7617 (package
7618 (name "python-webob")
b8834c21 7619 (version "1.5.1")
de34afac
CR
7620 (source
7621 (origin
7622 (method url-fetch)
b8834c21 7623 (uri (pypi-uri "WebOb" version))
de34afac
CR
7624 (sha256
7625 (base32
b8834c21 7626 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 7627 (build-system python-build-system)
328bb95d 7628 (native-inputs
f3b98f4f 7629 `(("python-nose" ,python-nose)))
de34afac
CR
7630 (home-page "http://webob.org/")
7631 (synopsis "WSGI request and response object")
7632 (description
7633 "WebOb provides wrappers around the WSGI request environment, and an
7634object to help create WSGI responses.")
7635 (license license:expat)))
7636
7637(define-public python2-webob
7638 (package-with-python2 python-webob))
350ba0a3 7639
02a8a187
BW
7640(define-public python-xlrd
7641 (package
7642 (name "python-xlrd")
c2ad4d70 7643 (version "1.0.0")
02a8a187
BW
7644 (source (origin
7645 (method url-fetch)
e775f48e 7646 (uri (pypi-uri "xlrd" version))
02a8a187
BW
7647 (sha256
7648 (base32
c2ad4d70 7649 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
7650 (build-system python-build-system)
7651 (arguments
7652 `(#:phases
7653 (modify-phases %standard-phases
c2ad4d70 7654 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
7655 ;; run tests instead for now.
7656 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 7657 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
7658 (home-page "http://www.python-excel.org/")
7659 (synopsis "Library for extracting data from Excel files")
7660 (description "This packages provides a library to extract data from
c598e35c 7661spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
7662@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
7663Unicode-aware. It is not intended as an end-user tool.")
3f641af0 7664 (license license:bsd-3)))
02a8a187
BW
7665
7666(define-public python2-xlrd
7667 (package-with-python2 python-xlrd))
7668
350ba0a3
CR
7669(define-public python-prettytable
7670 (package
7671 (name "python-prettytable")
7672 (version "0.7.2")
7673 (source
7674 (origin
7675 (method url-fetch)
7676 (uri (string-append
7677 "https://pypi.python.org/packages/source/P/PrettyTable/"
7678 "prettytable-" version ".tar.bz2"))
7679 (sha256
7680 (base32
7681 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7682 (build-system python-build-system)
350ba0a3
CR
7683 (home-page "http://code.google.com/p/prettytable/")
7684 (synopsis "Display tabular data in an ASCII table format")
7685 (description
7686 "A library designed to represent tabular data in visually appealing ASCII
7687tables. PrettyTable allows for selection of which columns are to be printed,
7688independent alignment of columns (left or right justified or centred) and
7689printing of sub-tables by specifying a row range.")
3f641af0 7690 (license license:bsd-3)))
350ba0a3
CR
7691
7692(define-public python2-prettytable
7693 (package-with-python2 python-prettytable))
7a8ac75a 7694
9f8ee3fe
RW
7695(define-public python-tables
7696 (package
7697 (name "python-tables")
7698 (version "3.2.2")
7699 (source
7700 (origin
7701 (method url-fetch)
7702 (uri (pypi-uri "tables" version))
7703 (sha256
7704 (base32
bac23672
HG
7705 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
7706 (modules '((guix build utils)))
7707 (snippet
7708 '(begin
7709 ;; Remove pre-compiled .pyc files from source.
7710 (for-each delete-file-recursively
7711 (find-files "." "__pycache__" #:directories? #t))
7712 (for-each delete-file (find-files "." "\\.pyc$"))
7713 #t))))
9f8ee3fe
RW
7714 (build-system python-build-system)
7715 (arguments
7716 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7717 ;; or "check", so we must override the build and check phases.
7718 #:phases
7719 (modify-phases %standard-phases
7720 (add-after 'unpack 'use-gcc
7721 (lambda _
7722 (substitute* "setup.py"
7723 (("compiler = new_compiler\\(\\)" line)
7724 (string-append line
7725 "\ncompiler.set_executables(compiler='gcc',"
7726 "compiler_so='gcc',"
7727 "linker_exe='gcc',"
7728 "linker_so='gcc -shared')")))
7729 #t))
7730 (replace 'build
7731 (lambda* (#:key inputs #:allow-other-keys)
7732 (zero? (system* "python" "setup.py" "build"
7733 (string-append "--hdf5="
7734 (assoc-ref inputs "hdf5"))))))
7735 (replace 'check
7736 (lambda* (#:key inputs #:allow-other-keys)
7737 (zero? (system* "python" "setup.py" "check"
7738 (string-append "--hdf5="
7739 (assoc-ref inputs "hdf5")))))))))
7740 (propagated-inputs
7741 `(("python-numexpr" ,python-numexpr)
7742 ("python-numpy" ,python-numpy)))
7743 (native-inputs
f3b98f4f 7744 `(("python-cython" ,python-cython)
9f8ee3fe
RW
7745 ("pkg-config" ,pkg-config)))
7746 (inputs
7747 `(("hdf5" ,hdf5)
7748 ("bzip2" ,bzip2)
7749 ("zlib" ,zlib)))
7750 (home-page "http://www.pytables.org/")
7751 (synopsis "Hierarchical datasets for Python")
7752 (description "PyTables is a package for managing hierarchical datasets and
d1e4ad1b 7753designed to efficiently cope with extremely large amounts of data.")
3f641af0 7754 (license license:bsd-3)))
9f8ee3fe
RW
7755
7756(define-public python2-tables
7757 (package-with-python2 python-tables))
7758
7a8ac75a
RW
7759(define-public python-pyasn1
7760 (package
7761 (name "python-pyasn1")
5e0ddfba 7762 (version "0.2.3")
7a8ac75a
RW
7763 (source
7764 (origin
7765 (method url-fetch)
caa0edb3 7766 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
7767 (sha256
7768 (base32
5e0ddfba 7769 "1b86yx23c1x74clai05a5ma8c8nfmhlx3j1mxq0ff657i2ylx33k"))))
7a8ac75a
RW
7770 (build-system python-build-system)
7771 (home-page "http://pyasn1.sourceforge.net/")
7772 (synopsis "ASN.1 types and codecs")
7773 (description
7774 "This is an implementation of ASN.1 types and codecs in Python. It is
7775suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 7776 (license license:bsd-2)))
7a8ac75a
RW
7777
7778(define-public python2-pyasn1
7779 (package-with-python2 python-pyasn1))
9a49a535 7780
5988c299
EF
7781(define-public python-pyasn1-modules
7782 (package
7783 (name "python-pyasn1-modules")
7784 (version "0.0.8")
7785 (source
7786 (origin
7787 (method url-fetch)
7788 (uri (pypi-uri "pyasn1-modules" version))
7789 (sha256
7790 (base32
7791 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
7792 (build-system python-build-system)
5988c299
EF
7793 (propagated-inputs
7794 `(("python-pyasn1" ,python-pyasn1)))
3b3b60d0 7795 (home-page "https://sourceforge.net/projects/pyasn1/")
5988c299
EF
7796 (synopsis "ASN.1 codec implementations")
7797 (description
7798 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7799implementations of ASN.1-based codecs and protocols.")
3f641af0 7800 (license license:bsd-3)))
5988c299
EF
7801
7802(define-public python2-pyasn1-modules
7803 (package-with-python2 python-pyasn1-modules))
7804
520af157 7805(define-public python-ipaddress
9a49a535 7806 (package
520af157 7807 (name "python-ipaddress")
36e0d9db 7808 (version "1.0.18")
520af157
DC
7809 (source (origin
7810 (method url-fetch)
7811 (uri (pypi-uri "ipaddress" version))
7812 (sha256
7813 (base32
36e0d9db 7814 "1q8klj9d84cmxgz66073x1j35cplr3r77vx1znhxiwl5w74391ax"))))
9a49a535 7815 (build-system python-build-system)
9a49a535
RW
7816 (home-page "https://github.com/phihag/ipaddress")
7817 (synopsis "IP address manipulation library")
7818 (description
520af157
DC
7819 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7820 in Python. This library is used to create, poke at, and manipulate IPv4 and
7821 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7822 module to older versions of Python.")
f210e944 7823 (license license:psfl)))
520af157
DC
7824
7825(define-public python2-ipaddress
f210e944 7826 (package-with-python2 python-ipaddress))
3f00e078 7827
4a238186
HG
7828(define-public python2-ipaddr
7829 (package
7830 (name "python2-ipaddr")
7831 (version "2.1.11")
7832 (source
7833 (origin
7834 (method url-fetch)
7835 (uri (pypi-uri "ipaddr" version))
7836 (sha256
7837 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7838 (build-system python-build-system)
7839 (arguments
7840 `(#:python ,python-2 ;version 2 only
7841 #:phases
7842 (modify-phases %standard-phases
7843 (replace 'check
7844 (lambda* _
7845 (zero? (system* "python" "ipaddr_test.py")))))))
7846 (home-page "https://github.com/google/ipaddr-py")
7847 (synopsis "IP address manipulation library")
7848 (description
7849 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7850IPv6 addresses and networks.
7851
7852For new implementations you may prefer to use the standard module
7853@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7854versions of Python.")
3f641af0 7855 (license license:asl2.0)))
4a238186 7856
3f00e078
RW
7857(define-public python-idna
7858 (package
7859 (name "python-idna")
37c04f91 7860 (version "2.5")
3f00e078
RW
7861 (source
7862 (origin
7863 (method url-fetch)
37c04f91 7864 (uri (pypi-uri "idna" version))
3f00e078
RW
7865 (sha256
7866 (base32
37c04f91 7867 "1ara12a7k2zc69msa0arrvw00gn61a6i6by01xb3lkkc0h4cxd9w"))))
3f00e078 7868 (build-system python-build-system)
3f00e078
RW
7869 (home-page "https://github.com/kjd/idna")
7870 (synopsis "Internationalized domain names in applications")
7871 (description
7872 "This is a library to support the Internationalised Domain Names in
7873Applications (IDNA) protocol as specified in RFC 5891. This version of the
7874protocol is often referred to as “IDNA2008” and can produce different results
7875from the earlier standard from 2003. The library is also intended to act as a
7876suitable drop-in replacement for the “encodings.idna” module that comes with
7877the Python standard library but currently only supports the older 2003
7878specification.")
3f641af0 7879 (license license:bsd-4)))
3f00e078
RW
7880
7881(define-public python2-idna
7882 (package-with-python2 python-idna))
36ebf972
RW
7883
7884(define-public python-pretend
7885 (package
7886 (name "python-pretend")
7887 (version "1.0.8")
7888 (source
7889 (origin
7890 (method url-fetch)
7891 (uri (string-append "https://pypi.python.org/packages/source/p/"
7892 "pretend/pretend-" version ".tar.gz"))
7893 (sha256
7894 (base32
7895 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
7896 (build-system python-build-system)
36ebf972
RW
7897 (home-page "https://github.com/alex/pretend")
7898 (synopsis "Library for stubbing in Python")
7899 (description
7900 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7901technique for writing tests. You may hear the term mixed up with mocks,
7902fakes, or doubles. Basically, a stub is an object that returns pre-canned
7903responses, rather than doing any computation.")
3f641af0 7904 (license license:bsd-3)))
36ebf972
RW
7905
7906(define-public python2-pretend
7907 (package-with-python2 python-pretend))
aa759a51
RW
7908
7909(define-public python-cryptography-vectors
7910 (package
7911 (name "python-cryptography-vectors")
f73f1f07 7912 (version "2.0.3")
aa759a51
RW
7913 (source
7914 (origin
7915 (method url-fetch)
9c509ca9 7916 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
7917 (sha256
7918 (base32
f73f1f07 7919 "1qa117fs1yd50zn2cfxh7d9l999ds0z4h83m9m7j4fk6ffm33f5y"))))
aa759a51 7920 (build-system python-build-system)
aa759a51 7921 (home-page "https://github.com/pyca/cryptography")
66e07664 7922 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
7923 (description
7924 "This package contains test vectors for the cryptography package.")
7925 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7926 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
7927
7928(define-public python2-cryptography-vectors
7929 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
7930
7931(define-public python-cryptography
7932 (package
7933 (name "python-cryptography")
f37995fa 7934 (version "2.0.3")
88b47cb0
RW
7935 (source
7936 (origin
7937 (method url-fetch)
9c509ca9 7938 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
7939 (sha256
7940 (base32
f37995fa 7941 "0fnck37zyvbzmccbp7w3jy27jgmij1992j5wyy3gxhw6a11b4jyh"))))
88b47cb0
RW
7942 (build-system python-build-system)
7943 (inputs
7944 `(("openssl" ,openssl)))
7945 (propagated-inputs
dc1bd2b5
LF
7946 `(("python-asn1crypto" ,python-asn1crypto)
7947 ("python-cffi" ,python-cffi)
88b47cb0 7948 ("python-six" ,python-six)
88b47cb0
RW
7949 ("python-idna" ,python-idna)
7950 ("python-iso8601" ,python-iso8601)))
7951 (native-inputs
7952 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 7953 ("python-hypothesis" ,python-hypothesis)
88b47cb0 7954 ("python-pretend" ,python-pretend)
912dcbad 7955 ("python-pytz" ,python-pytz)
23b9168d 7956 ("python-pytest" ,python-pytest-3.0)))
88b47cb0
RW
7957 (home-page "https://github.com/pyca/cryptography")
7958 (synopsis "Cryptographic recipes and primitives for Python")
7959 (description
7960 "cryptography is a package which provides cryptographic recipes and
7961primitives to Python developers. It aims to be the “cryptographic standard
7962library” for Python. The package includes both high level recipes, and low
7963level interfaces to common cryptographic algorithms such as symmetric ciphers,
7964message digests and key derivation functions.")
7965 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7966 (license (list license:bsd-3 license:asl2.0))
519e2f4f 7967 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
7968
7969(define-public python2-cryptography
519e2f4f
LF
7970 (let ((crypto (package-with-python2
7971 (strip-python2-variant python-cryptography))))
88b47cb0
RW
7972 (package (inherit crypto)
7973 (propagated-inputs
7974 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
7975 ("python2-backport-ssl-match-hostname"
7976 ,python2-backport-ssl-match-hostname)
68f1cdec 7977 ("python2-enum34" ,python2-enum34)
88b47cb0 7978 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
7979
7980(define-public python-pyopenssl
7981 (package
7982 (name "python-pyopenssl")
2580c2f0 7983 (version "17.2.0")
5af999b8
RW
7984 (source
7985 (origin
7986 (method url-fetch)
eb68d268 7987 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
7988 (sha256
7989 (base32
2580c2f0 7990 "0d283g4zi0hr9papd24mjl70mi15gyzq6fx618rizi87dgipqqax"))))
5af999b8 7991 (build-system python-build-system)
30e0229a 7992 (arguments
7c6bf660
MB
7993 '(#:phases
7994 (modify-phases %standard-phases
7995 (delete 'check)
7996 (add-after 'install 'check
7997 (lambda* (#:key inputs outputs #:allow-other-keys)
7998 (add-installed-pythonpath inputs outputs)
96bbc41f
MB
7999 (zero? (system* "py.test" "-v" "-k"
8000 (string-append
8001 ;; This test tries to look up certificates from
8002 ;; the compiled-in default path in OpenSSL, which
8003 ;; does not exist in the build environment.
8004 "not test_fallback_default_verify_paths "
8005 ;; This test attempts to make a connection to
8006 ;; an external web service.
8007 "and not test_set_default_verify_paths"))))))))
5af999b8
RW
8008 (propagated-inputs
8009 `(("python-cryptography" ,python-cryptography)
8010 ("python-six" ,python-six)))
8011 (inputs
8012 `(("openssl" ,openssl)))
30e0229a 8013 (native-inputs
2580c2f0
MB
8014 `(("python-flaky" ,python-flaky)
8015 ("python-pretend" ,python-pretend)
96bbc41f 8016 ("python-pytest" ,python-pytest-3.0)))
5af999b8
RW
8017 (home-page "https://github.com/pyca/pyopenssl")
8018 (synopsis "Python wrapper module around the OpenSSL library")
8019 (description
8020 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
8021library.")
3f641af0 8022 (license license:asl2.0)))
5af999b8
RW
8023
8024(define-public python2-pyopenssl
519e2f4f 8025 (package-with-python2 python-pyopenssl))
643725a1
CR
8026
8027(define-public python-pip
8028 (package
8029 (name "python-pip")
392c26b0 8030 (version "9.0.1")
643725a1
CR
8031 (source
8032 (origin
8033 (method url-fetch)
6fb54e3b 8034 (uri (pypi-uri "pip" version))
643725a1
CR
8035 (sha256
8036 (base32
392c26b0 8037 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
643725a1 8038 (build-system python-build-system)
392c26b0
MC
8039 (arguments
8040 '(#:tests? #f)) ; there are no tests in the pypi archive.
643725a1 8041 (home-page "https://pip.pypa.io/")
392c26b0 8042 (synopsis "Package manager for Python software")
643725a1 8043 (description
392c26b0 8044 "Pip is a package manager for Python software, that finds packages on the
643725a1
CR
8045Python Package Index (PyPI).")
8046 (license license:expat)))
8047
8048(define-public python2-pip
8049 (package-with-python2 python-pip))
d8c4998f
LC
8050
8051(define-public python-tlsh
8052 (package
8053 (name "python-tlsh")
99b00dc7 8054 (version "3.4.4")
d8c4998f
LC
8055 (home-page "https://github.com/trendmicro/tlsh")
8056 (source (origin
99b00dc7
EF
8057 (method url-fetch)
8058 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
8059 version ".tar.gz"))
d8c4998f
LC
8060 (sha256
8061 (base32
99b00dc7
EF
8062 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
8063 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
8064 (build-system cmake-build-system)
8065 (arguments
8066 '(#:out-of-source? #f
8067 #:phases (modify-phases %standard-phases
8068 (replace
8069 'install
8070 (lambda* (#:key outputs #:allow-other-keys)
8071 ;; Build and install the Python bindings. The underlying
8072 ;; C++ library is apparently not meant to be installed.
8073 (let ((out (assoc-ref outputs "out")))
8074 (with-directory-excursion "py_ext"
8075 (and (system* "python" "setup.py" "build")
8076 (system* "python" "setup.py" "install"
8077 (string-append "--prefix=" out))))))))))
8078 (inputs `(("python" ,python-wrapper))) ;for the bindings
8079 (synopsis "Fuzzy matching library for Python")
8080 (description
8081 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
8082Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
8083value which can be used for similarity comparisons. Similar objects have
8084similar hash values, which allows for the detection of similar objects by
8085comparing their hash values. The byte stream should have a sufficient amount
8086of complexity; for example, a byte stream of identical bytes will not generate
8087a hash value.")
3f641af0 8088 (license license:asl2.0)))
d8c4998f
LC
8089
8090(define-public python2-tlsh
8091 (package
8092 (inherit python-tlsh)
8093 (name "python2-tlsh")
8094 (inputs `(("python" ,python-2)))))
d96034ed 8095
67f66812
BW
8096(define-public python-termcolor
8097 (package
8098 (name "python-termcolor")
8099 (version "1.1.0")
8100 (source
8101 (origin
8102 (method url-fetch)
a5e8f597 8103 (uri (pypi-uri "termcolor" version))
67f66812
BW
8104 (sha256
8105 (base32
8106 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
8107 (build-system python-build-system)
8108 (arguments
8109 ;; There are no tests.
8110 `(#:tests? #f))
8111 (home-page "http://pypi.python.org/pypi/termcolor")
8112 (synopsis "ANSII Color formatting for terminal output")
8113 (description
8114 "This package provides ANSII Color formatting for output in terminals.")
8115 (license license:expat)))
8116
8117(define-public python2-termcolor
8118 (package-with-python2 python-termcolor))
8119
d96034ed
LC
8120(define-public python-libarchive-c
8121 (package
8122 (name "python-libarchive-c")
03fd001c 8123 (version "2.2")
d96034ed
LC
8124 (source (origin
8125 (method url-fetch)
03fd001c 8126 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
8127 (sha256
8128 (base32
03fd001c 8129 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
8130 (build-system python-build-system)
8131 (arguments
8132 '(#:phases (modify-phases %standard-phases
8133 (add-before
8134 'build 'reference-libarchive
8135 (lambda* (#:key inputs #:allow-other-keys)
8136 ;; Retain the absolute file name of libarchive.so.
8137 (let ((libarchive (assoc-ref inputs "libarchive")))
8138 (substitute* "libarchive/ffi.py"
8139 (("find_library\\('archive'\\)")
8140 (string-append "'" libarchive
b41a05ce 8141 "/lib/libarchive.so'")))))))))
d96034ed 8142 (inputs
f3b98f4f 8143 `(("libarchive" ,libarchive)))
d96034ed
LC
8144 (home-page "https://github.com/Changaco/python-libarchive-c")
8145 (synopsis "Python interface to libarchive")
8146 (description
8147 "This package provides Python bindings to libarchive, a C library to
8148access possibly compressed archives in many different formats. It uses
8149Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 8150 (license license:lgpl2.0+)))
d96034ed
LC
8151
8152(define-public python2-libarchive-c
8153 (package-with-python2 python-libarchive-c))
5e1c9367
LC
8154
8155(define-public python-file
8156 (package
8157 (inherit file)
8158 (name "python-file")
8159 (build-system python-build-system)
8160 (arguments
8161 '(#:tests? #f ;no tests
00bf74be 8162 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
8163 #:phases (modify-phases %standard-phases
8164 (add-before 'build 'change-directory
8165 (lambda _
8166 (chdir "python")
8167 #t))
8168 (add-before 'build 'set-library-file-name
8169 (lambda* (#:key inputs #:allow-other-keys)
8170 (let ((file (assoc-ref inputs "file")))
8171 (substitute* "magic.py"
8172 (("find_library\\('magic'\\)")
8173 (string-append "'" file "/lib/libmagic.so'")))
8174 #t))))))
8175 (inputs `(("file" ,file)))
8176 (self-native-input? #f)
daeeea71
CM
8177 (synopsis "Python bindings to the libmagic file type guesser. Note that
8178this module and the python-magic module both provide a \"magic.py\" file;
8179these two modules, which are different and were developed separately, both
f210e944 8180serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
8181
8182(define-public python2-file
f210e944 8183 (package-with-python2 python-file))
85d4aeac
LC
8184
8185(define-public python-debian
8186 (package
8187 (name "python-debian")
02d7f337 8188 (version "0.1.28")
85d4aeac
LC
8189 (source
8190 (origin
8191 (method url-fetch)
5e217a8b 8192 (uri (pypi-uri name version))
85d4aeac
LC
8193 (sha256
8194 (base32
02d7f337 8195 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
85d4aeac 8196 (build-system python-build-system)
f22efa01 8197 (propagated-inputs
85d4aeac 8198 `(("python-six" ,python-six)))
85d4aeac
LC
8199 (home-page "http://packages.debian.org/sid/python-debian")
8200 (synopsis "Debian package related modules")
8201 (description
5c7bdc9a
LC
8202 ;; XXX: Use @enumerate instead of @itemize to work around
8203 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
8204 "This package provides Python modules that abstract many formats of
8205Debian-related files, such as:
8206
5c7bdc9a 8207@enumerate
85d4aeac
LC
8208@item Debtags information;
8209@item @file{debian/changelog} files;
8210@item packages files, pdiffs;
8211@item control files of single or multiple RFC822-style paragraphs---e.g.
8212 @file{debian/control}, @file{.changes}, @file{.dsc};
8213@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
8214 contained files and meta-information.
5c7bdc9a 8215@end enumerate\n")
85d4aeac
LC
8216
8217 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 8218 (license license:gpl3+)))
85d4aeac
LC
8219
8220(define-public python2-debian
8221 (package-with-python2 python-debian))
816a6538 8222
2d321bb2
RW
8223(define-public python-nbformat
8224 (package
8225 (name "python-nbformat")
ae7f246c 8226 (version "4.3.0")
2d321bb2
RW
8227 (source
8228 (origin
8229 (method url-fetch)
8230 (uri (pypi-uri "nbformat" version))
8231 (sha256
8232 (base32
ae7f246c 8233 "12s7j4qja8b5bs1kyw5dzmrqbjxxj8wk52cyasbiqbv7fblcrssz"))))
2d321bb2
RW
8234 (build-system python-build-system)
8235 (arguments `(#:tests? #f)) ; no test target
8236 (propagated-inputs
8237 `(("python-ipython-genutils" ,python-ipython-genutils)
8238 ("python-jsonschema" ,python-jsonschema)
8239 ("python-jupyter-core" ,python-jupyter-core)
8240 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
8241 (home-page "http://jupyter.org")
8242 (synopsis "Jupyter Notebook format")
8243 (description "This package provides the reference implementation of the
8244Jupyter Notebook format and Python APIs for working with notebooks.")
8245 (license license:bsd-3)))
8246
8247(define-public python2-nbformat
8248 (package-with-python2 python-nbformat))
8249
55436048
RW
8250(define-public python-bleach
8251 (package
8252 (name "python-bleach")
8253 (version "1.4.3")
8254 (source
8255 (origin
8256 (method url-fetch)
8257 (uri (pypi-uri "bleach" version))
8258 (sha256
8259 (base32
8260 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
8261 (build-system python-build-system)
8262 (propagated-inputs
8263 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
8264 ("python-six" ,python-six)))
8265 (native-inputs
8266 `(("python-nose" ,python-nose)))
7bf837fd 8267 (home-page "https://github.com/jsocol/bleach")
55436048
RW
8268 (synopsis "Whitelist-based HTML-sanitizing tool")
8269 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
8270 (license license:asl2.0)))
8271
8272(define-public python2-bleach
8273 (package-with-python2 python-bleach))
8274
60590a3a
RW
8275(define-public python-entrypoints
8276 (package
8277 (name "python-entrypoints")
8278 (version "0.2.2")
8279 (source
8280 (origin
8281 (method url-fetch)
8282 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
8283 version ".tar.gz"))
8284 (file-name (string-append name "-" version ".tar.gz"))
8285 (sha256
8286 (base32
8287 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
8288 (build-system python-build-system)
8289 ;; The package does not come with a setup.py file, so we have to generate
8290 ;; one ourselves.
8291 (arguments
8292 `(#:tests? #f
8293 #:phases
8294 (modify-phases %standard-phases
8295 (add-after 'unpack 'create-setup.py
8296 (lambda _
8297 (call-with-output-file "setup.py"
8298 (lambda (port)
8299 (format port "\
8300from setuptools import setup
8301setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
8302" ,version))))))))
8303 (home-page "https://github.com/takluyver/entrypoints")
8304 (synopsis "Discover and load entry points from installed Python packages")
8305 (description "Entry points are a way for Python packages to advertise
8306objects with some common interface. The most common examples are
8307@code{console_scripts} entry points, which define shell commands by
8308identifying a Python function to run. The @code{entrypoints} module contains
8309functions to find and load entry points.")
8310 (license license:expat)))
8311
8312(define-public python2-entrypoints
8313 (package-with-python2 python-entrypoints))
8314
c60898a8
RW
8315(define-public python-nbconvert
8316 (package
8317 (name "python-nbconvert")
8318 (version "5.0.0b1")
8319 (source
8320 (origin
8321 (method url-fetch)
8322 (uri (pypi-uri "nbconvert" version))
8323 (sha256
8324 (base32
8325 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
8326 (build-system python-build-system)
497355dc
MB
8327 (arguments
8328 `(;; The "bdist_egg" target is disabled by default, causing the installation
8329 ;; to fail.
8330 #:configure-flags (list "bdist_egg")
8331 ;; FIXME: 5 failures, 40 errors.
8332 #:tests? #f))
8333 ;; #:phases
8334 ;; (modify-phases %standard-phases
8335 ;; (replace 'check
8336 ;; (lambda _
8337 ;; (zero? (system* "py.test" "-v")))))
8338 (native-inputs
8339 `(("python-pytest" ,python-pytest)))
c60898a8
RW
8340 (propagated-inputs
8341 `(("python-bleach" ,python-bleach)
8342 ("python-entrypoints" ,python-entrypoints)
8343 ("python-jinja2" ,python-jinja2)
8344 ("python-jupyter-core" ,python-jupyter-core)
8345 ("python-mistune" ,python-mistune)
8346 ("python-nbformat" ,python-nbformat)
8347 ("python-pygments" ,python-pygments)
c60898a8
RW
8348 ("python-traitlets" ,python-traitlets)))
8349 (home-page "http://jupyter.org")
8350 (synopsis "Converting Jupyter Notebooks")
8351 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
8352notebooks to various other formats via Jinja templates. It allows you to
8353convert an @code{.ipynb} notebook file into various static formats including:
8354
8355@enumerate
8356@item HTML
8357@item LaTeX
8358@item PDF
8359@item Reveal JS
8360@item Markdown (md)
8361@item ReStructured Text (rst)
8362@item executable script
8363@end enumerate\n")
8364 (license license:bsd-3)))
8365
8366(define-public python2-nbconvert
8367 (package-with-python2 python-nbconvert))
8368
a0d62280
RW
8369(define-public python-notebook
8370 (package
8371 (name "python-notebook")
8372 (version "4.2.3")
8373 (source (origin
8374 (method url-fetch)
8375 (uri (pypi-uri "notebook" version))
8376 (sha256
8377 (base32
8378 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
8379 (build-system python-build-system)
8380 (arguments
8381 `(#:phases
8382 (modify-phases %standard-phases
8383 (replace 'check
8384 (lambda _
8385 ;; HOME must be set for tests
8386 (setenv "HOME" "/tmp")
8387 (zero? (system* "nosetests")))))))
8388 (propagated-inputs
8389 `(("python-jupyter-core" ,python-jupyter-core)
8390 ("python-nbformat" ,python-nbformat)
8391 ("python-nbconvert" ,python-nbconvert)
8392 ("python-ipython" ,python-ipython)))
8393 (native-inputs
8394 `(("python-nose" ,python-nose)
8395 ("python-sphinx" ,python-sphinx)
8396 ("python-requests" ,python-requests)))
8397 (home-page "http://jupyter.org/")
8398 (synopsis "Web-based notebook environment for interactive computing")
8399 (description
8400 "The Jupyter HTML notebook is a web-based notebook environment for
8401interactive computing.")
3a735ecf 8402 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
8403 (license license:bsd-3)))
8404
8405(define-public python2-notebook
3a735ecf
HG
8406 (let ((base (package-with-python2
8407 (strip-python2-variant python-notebook))))
8408 (package (inherit base)
8409 (native-inputs
8410 `(("python2-mock" ,python2-mock)
8411 ,@(package-native-inputs base)))
8412 (arguments
8413 (substitute-keyword-arguments (package-arguments base)
8414 ((#:phases phases)
8415 `(modify-phases ,phases
8416 (add-before 'check 'disable-test-case
8417 ;; The test requires network access to localhost. Curiously it
8418 ;; fails with Python 2 only. Simply make the test-case return
8419 ;; immediately.
8420 (lambda _
8421 (substitute*
8422 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
8423 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 8424
d55724ed
RW
8425(define-public python-widgetsnbextension
8426 (package
8427 (name "python-widgetsnbextension")
8428 (version "1.2.6")
8429 (source
8430 (origin
8431 (method url-fetch)
8432 (uri (pypi-uri "widgetsnbextension" version))
8433 (sha256
8434 (base32
8435 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
8436 (build-system python-build-system)
8437 (propagated-inputs
8438 `(("python-notebook" ,python-notebook)))
8439 (native-inputs
58f5fae7
MB
8440 `(("python-certifi" ,python-certifi)
8441 ("python-nose" ,python-nose)))
d55724ed
RW
8442 (home-page "http://ipython.org")
8443 (synopsis "IPython HTML widgets for Jupyter")
8444 (description "This package provides interactive HTML widgets for Jupyter
8445notebooks.")
8446 (license license:bsd-3)))
8447
8448(define-public python2-widgetsnbextension
8449 (package-with-python2 python-widgetsnbextension))
8450
4fe2e344
RW
8451(define-public python-ipywidgets
8452 (package
8453 (name "python-ipywidgets")
8454 (version "5.2.2")
8455 (source
8456 (origin
8457 (method url-fetch)
8458 (uri (pypi-uri "ipywidgets" version))
8459 (sha256
8460 (base32
8461 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
8462 (build-system python-build-system)
8463 ;; FIXME: it's not clear how to run the tests.
8464 (arguments `(#:tests? #f))
8465 (propagated-inputs
8466 `(("python-ipykernel" ,python-ipykernel)
8467 ("python-ipython" ,python-ipython)
4fe2e344
RW
8468 ("python-traitlets" ,python-traitlets)
8469 ("python-widgetsnbextension" ,python-widgetsnbextension)))
8470 (home-page "http://ipython.org")
8471 (synopsis "IPython HTML widgets for Jupyter")
8472 (description "Ipywidgets are interactive HTML widgets for Jupyter
8473notebooks and the IPython kernel. Notebooks come alive when interactive
8474widgets are used. Users gain control of their data and can visualize changes
8475in the data.")
8476 (license license:bsd-3)))
8477
8478(define-public python2-ipywidgets
8479 (package-with-python2 python-ipywidgets))
8480
8ceebf8f
RW
8481(define-public python-jupyter-console
8482 (package
8483 (name "python-jupyter-console")
8484 (version "5.0.0")
8485 (source
8486 (origin
8487 (method url-fetch)
8488 (uri (pypi-uri "jupyter_console" version))
8489 (sha256
8490 (base32
8491 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
8492 (build-system python-build-system)
8493 ;; FIXME: it's not clear how to run the tests.
8494 (arguments `(#:tests? #f))
8495 (propagated-inputs
8496 `(("python-ipykernel" ,python-ipykernel)
8497 ("python-ipython" ,python-ipython)
8498 ("python-jupyter-client" ,python-jupyter-client)
8499 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 8500 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
8501 (home-page "https://jupyter.org")
8502 (synopsis "Jupyter terminal console")
8503 (description "This package provides a terminal-based console frontend for
8504Jupyter kernels. It also allows for console-based interaction with non-Python
8505Jupyter kernels such as IJulia and IRKernel.")
8506 (license license:bsd-3)))
8507
8508(define-public python2-jupyter-console
8509 (package-with-python2 python-jupyter-console))
8510
c27ae827
RW
8511(define-public jupyter
8512 (package
8513 (name "jupyter")
8514 (version "1.0.0")
8515 (source
8516 (origin
8517 (method url-fetch)
8518 (uri (pypi-uri "jupyter" version))
8519 (sha256
8520 (base32
8521 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
8522 (build-system python-build-system)
8523 ;; FIXME: it's not clear how to run the tests.
8524 (arguments `(#:tests? #f))
8525 (propagated-inputs
8526 `(("python-ipykernel" ,python-ipykernel)
8527 ("python-ipywidgets" ,python-ipywidgets)
8528 ("python-jupyter-console" ,python-jupyter-console)
8529 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 8530 ("python-notebook" ,python-notebook)))
c27ae827
RW
8531 (home-page "http://jupyter.org")
8532 (synopsis "Web application for interactive documents")
8533 (description
8534 "The Jupyter Notebook is a web application that allows you to create and
8535share documents that contain live code, equations, visualizations and
8536explanatory text. Uses include: data cleaning and transformation, numerical
8537simulation, statistical modeling, machine learning and much more.")
8538 (license license:bsd-3)))
8539
816a6538
LC
8540(define-public python-chardet
8541 (package
8542 (name "python-chardet")
8543 (version "2.3.0")
8544 (source
8545 (origin
8546 (method url-fetch)
8547 (uri (string-append
8548 "https://pypi.python.org/packages/source/c/chardet/chardet-"
8549 version
8550 ".tar.gz"))
8551 (sha256
8552 (base32
8553 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
8554 (build-system python-build-system)
816a6538
LC
8555 (home-page "https://github.com/chardet/chardet")
8556 (synopsis "Universal encoding detector for Python 2 and 3")
8557 (description
8558 "This package provides @code{chardet}, a Python module that can
8559automatically detect a wide range of file encodings.")
3f641af0 8560 (license license:lgpl2.1+)))
816a6538
LC
8561
8562(define-public python2-chardet
8563 (package-with-python2 python-chardet))
2fc5f186 8564
1872f1bb
KM
8565(define-public python-docopt
8566 (package
8567 (name "python-docopt")
8568 (version "0.6.2")
8569 (source
8570 (origin
8571 (method url-fetch)
8572 ;; The release on PyPI does not include tests.
8573 (uri (string-append
8574 "https://github.com/docopt/docopt/archive/"
8575 version ".tar.gz"))
8576 (file-name (string-append name "-" version ".tar.gz"))
8577 (sha256
8578 (base32
8579 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
8580 (build-system python-build-system)
8581 (native-inputs
f3b98f4f 8582 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
8583 (arguments
8584 `(#:phases (alist-replace
8585 'check
8586 (lambda _ (zero? (system* "py.test")))
8587 %standard-phases)))
8588 (home-page "http://docopt.org")
8589 (synopsis "Command-line interface description language for Python")
8590 (description "This library allows the user to define a command-line
8591interface from a program's help message rather than specifying it
8592programatically with command-line parsers like @code{getopt} and
8593@code{argparse}.")
8594 (license license:expat)))
8595
8596(define-public python2-docopt
8597 (package-with-python2 python-docopt))
8598
2fc5f186
LF
8599(define-public python-zope-event
8600 (package
8601 (name "python-zope-event")
8602 (version "4.1.0")
8603 (source
8604 (origin
8605 (method url-fetch)
8606 (uri (string-append "https://pypi.python.org/packages/source/z"
8607 "/zope.event/zope.event-" version ".tar.gz"))
8608 (sha256
8609 (base32
8610 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
8611 (build-system python-build-system)
2fc5f186
LF
8612 (home-page "http://pypi.python.org/pypi/zope.event")
8613 (synopsis "Event publishing system for Python")
8614 (description "Zope.event provides an event publishing API, intended for
8615use by applications which are unaware of any subscribers to their events. It
8616is a simple event-dispatching system on which more sophisticated event
8617dispatching systems can be built.")
3f641af0 8618 (license license:zpl2.1)))
2fc5f186
LF
8619
8620(define-public python2-zope-event
8621 (package-with-python2 python-zope-event))
97abe268
LF
8622
8623(define-public python-zope-interface
8624 (package
8625 (name "python-zope-interface")
8626 (version "4.1.3")
8627 (source
8628 (origin
8629 (method url-fetch)
8630 (uri (string-append "https://pypi.python.org/packages/source/z"
8631 "/zope.interface/zope.interface-" version ".tar.gz"))
8632 (sha256
8633 (base32
8634 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
8635 (build-system python-build-system)
38d480a8 8636 (native-inputs
97abe268
LF
8637 `(("python-zope-event" ,python-zope-event)))
8638 (home-page "https://github.com/zopefoundation/zope.interface")
8639 (synopsis "Python implementation of the \"design by contract\"
8640methodology")
8641 (description "Zope.interface provides an implementation of \"object
8642interfaces\" for Python. Interfaces are a mechanism for labeling objects as
8643conforming to a given API or contract.")
3f641af0 8644 (license license:zpl2.1)))
97abe268
LF
8645
8646(define-public python2-zope-interface
8647 (package-with-python2 python-zope-interface))
81f2373c
LF
8648
8649(define-public python-zope-exceptions
8650 (package
8651 (name "python-zope-exceptions")
8652 (version "4.0.8")
8653 (source
8654 (origin
8655 (method url-fetch)
8656 (uri (string-append "https://pypi.python.org/packages/source/z"
8657 "/zope.exceptions/zope.exceptions-"
8658 version ".tar.gz"))
8659 (sha256
8660 (base32
8661 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
8662 (build-system python-build-system)
8663 (arguments
8664 '(#:tests? #f)) ; circular dependency with zope.testrunner
8665 (propagated-inputs
8666 `(("python-zope-interface" ,python-zope-interface)))
8667 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
8668 (synopsis "Zope exceptions")
8669 (description "Zope.exceptions provides general-purpose exception types
8670that have uses outside of the Zope framework.")
3f641af0 8671 (license license:zpl2.1)))
81f2373c
LF
8672
8673(define-public python2-zope-exceptions
8674 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
8675
8676(define-public python-zope-testing
8677 (package
8678 (name "python-zope-testing")
8679 (version "4.5.0")
8680 (source
8681 (origin
8682 (method url-fetch)
8683 (uri (string-append "https://pypi.python.org/packages/source/z"
8684 "/zope.testing/zope.testing-" version ".tar.gz"))
8685 (sha256
8686 (base32
b02f7a21
HG
8687 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
8688 (modules '((guix build utils)))
8689 (snippet
8690 '(begin
8691 ;; Remove pre-compiled .pyc files backup files from source.
8692 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
8693 #t))))
900e3c0e
LF
8694 (build-system python-build-system)
8695 (native-inputs
8696 `(("python-zope-exceptions" ,python-zope-exceptions)))
8697 (propagated-inputs
8698 `(("python-zope-interface" ,python-zope-interface)))
8699 (home-page "http://pypi.python.org/pypi/zope.testing")
8700 (synopsis "Zope testing helpers")
8701 (description "Zope.testing provides a number of testing utilities for HTML
8702forms, HTTP servers, regular expressions, and more.")
3f641af0 8703 (license license:zpl2.1)))
900e3c0e
LF
8704
8705(define-public python2-zope-testing
8706 (package-with-python2 python-zope-testing))
01614c4f
LF
8707
8708(define-public python-zope-testrunner
8709 (package
8710 (name "python-zope-testrunner")
8711 (version "4.4.9")
8712 (source
8713 (origin
8714 (method url-fetch)
8715 (uri (string-append "https://pypi.python.org/packages/source/z"
8716 "/zope.testrunner/zope.testrunner-"
8717 version ".zip"))
8718 (sha256
8719 (base32
8720 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
8721 (build-system python-build-system)
385871e5
MB
8722 (arguments
8723 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
01614c4f
LF
8724 (native-inputs
8725 `(("python-six" ,python-six)
e408ffc3 8726 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
8727 ("python-zope-exceptions" ,python-zope-exceptions)
8728 ("python-zope-testing" ,python-zope-testing)
8729 ("unzip" ,unzip)))
8730 (propagated-inputs
8731 `(("python-zope-interface" ,python-zope-interface)))
8732 (home-page "http://pypi.python.org/pypi/zope.testrunner")
8733 (synopsis "Zope testrunner script")
8734 (description "Zope.testrunner provides a script for running Python
8735tests.")
3f641af0 8736 (license license:zpl2.1)))
01614c4f
LF
8737
8738(define-public python2-zope-testrunner
8739 (let ((base (package-with-python2 python-zope-testrunner)))
8740 (package
8741 (inherit base)
8742 (native-inputs
8743 (append (package-native-inputs base)
8744 `(("python2-subunit" ,python2-subunit)
8745 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
8746
8747(define-public python-zope-i18nmessageid
8748 (package
8749 (name "python-zope-i18nmessageid")
8750 (version "4.0.3")
8751 (source
8752 (origin
8753 (method url-fetch)
8754 (uri (string-append
8755 "https://pypi.python.org/packages/source/z"
8756 "/zope.i18nmessageid/zope.i18nmessageid-"
8757 version ".tar.gz"))
8758 (sha256
8759 (base32
8760 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
8761 (build-system python-build-system)
6a5c710c
LF
8762 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
8763 (synopsis "Message identifiers for internationalization")
8764 (description "Zope.i18nmessageid provides facilities for declaring
8765internationalized messages within program source text.")
3f641af0 8766 (license license:zpl2.1)))
6a5c710c
LF
8767
8768(define-public python2-zope-i18nmessageid
8769 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
8770
8771(define-public python-zope-schema
8772 (package
8773 (name "python-zope-schema")
8774 (version "4.4.2")
8775 (source
8776 (origin
8777 (method url-fetch)
8778 (uri (string-append "https://pypi.python.org/packages/source/z"
8779 "/zope.schema/zope.schema-" version ".tar.gz"))
8780 (sha256
8781 (base32
8782 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
8783 (build-system python-build-system)
22dba2ef
MB
8784 (arguments
8785 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
71fb09f3
LF
8786 (propagated-inputs
8787 `(("python-zope-event" ,python-zope-event)
2b9e4bea 8788 ("python-zope-exceptions", python-zope-exceptions)
71fb09f3
LF
8789 ("python-zope-interface" ,python-zope-interface)))
8790 (native-inputs
47f77210
HG
8791 `(("python-zope-testing" ,python-zope-testing)
8792 ("python-coverage" ,python-coverage)
8793 ("python-nose" ,python-nose)))
71fb09f3
LF
8794 (home-page "http://pypi.python.org/pypi/zope.schema")
8795 (synopsis "Zope data schemas")
8796 (description "Zope.scheme provides extensions to zope.interface for
8797defining data schemas.")
3f641af0 8798 (license license:zpl2.1)))
71fb09f3
LF
8799
8800(define-public python2-zope-schema
8801 (package-with-python2 python-zope-schema))
fbac9b17
LF
8802
8803(define-public python-zope-configuration
8804 (package
8805 (name "python-zope-configuration")
8806 (version "4.0.3")
8807 (source (origin
8808 (method url-fetch)
8809 (uri (string-append "https://pypi.python.org/packages/source/z"
8810 "/zope.configuration/zope.configuration-"
8811 version ".tar.gz"))
8812 (sha256
8813 (base32
8814 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
8815 (build-system python-build-system)
7e8b1bfa
MB
8816 (arguments
8817 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
fbac9b17
LF
8818 (propagated-inputs
8819 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8820 ("python-zope-schema" ,python-zope-schema)))
8821 (home-page "http://pypi.python.org/pypi/zope.configuration")
8822 (synopsis "Zope Configuration Markup Language")
8823 (description "Zope.configuration implements ZCML, the Zope Configuration
8824Markup Language.")
3f641af0 8825 (license license:zpl2.1)))
fbac9b17
LF
8826
8827(define-public python2-zope-configuration
8828 (package-with-python2 python-zope-configuration))
2ad52086
LF
8829
8830(define-public python-zope-proxy
8831 (package
8832 (name "python-zope-proxy")
8833 (version "4.1.6")
8834 (source
8835 (origin
8836 (method url-fetch)
8837 (uri (string-append "https://pypi.python.org/packages/source/z"
8838 "/zope.proxy/zope.proxy-" version ".tar.gz"))
8839 (sha256
8840 (base32
8841 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
8842 (build-system python-build-system)
66b3aadb
MB
8843 (arguments
8844 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
2ad52086
LF
8845 (propagated-inputs
8846 `(("python-zope-interface" ,python-zope-interface)))
8847 (home-page "http://pypi.python.org/pypi/zope.proxy")
8848 (synopsis "Generic, transparent proxies")
8849 (description "Zope.proxy provides generic, transparent proxies for Python.
8850Proxies are special objects which serve as mostly-transparent wrappers around
8851another object, intervening in the apparent behavior of the wrapped object
8852only when necessary to apply the policy (e.g., access checking, location
8853brokering, etc.) for which the proxy is responsible.")
3f641af0 8854 (license license:zpl2.1)))
2ad52086
LF
8855
8856(define-public python2-zope-proxy
8857 (package-with-python2 python-zope-proxy))
f404b5ea
LF
8858
8859(define-public python-zope-location
8860 (package
8861 (name "python-zope-location")
8862 (version "4.0.3")
8863 (source
8864 (origin
8865 (method url-fetch)
8866 (uri (string-append "https://pypi.python.org/packages/source/z"
8867 "/zope.location/zope.location-" version ".tar.gz"))
8868 (sha256
8869 (base32
8870 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
8871 (build-system python-build-system)
40bb8e07
MB
8872 (arguments
8873 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
d27f176a 8874 (propagated-inputs
f404b5ea
LF
8875 `(("python-zope-proxy" ,python-zope-proxy)
8876 ("python-zope-schema" ,python-zope-schema)))
8877 (home-page "http://pypi.python.org/pypi/zope.location/")
8878 (synopsis "Zope location library")
8879 (description "Zope.location implements the concept of \"locations\" in
8880Zope3, which are are special objects that have a structural location.")
3f641af0 8881 (license license:zpl2.1)))
f404b5ea
LF
8882
8883(define-public python2-zope-location
8884 (package-with-python2 python-zope-location))
d4b77f36
LF
8885
8886(define-public python-zope-security
8887 (package
8888 (name "python-zope-security")
8889 (version "4.0.3")
8890 (source
8891 (origin
8892 (method url-fetch)
8893 (uri (string-append "https://pypi.python.org/packages/source/z"
8894 "/zope.security/zope.security-" version ".tar.gz"))
8895 (sha256
8896 (base32
8897 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
8898 (build-system python-build-system)
a74f9b12
MB
8899 (arguments
8900 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
d4b77f36
LF
8901 (propagated-inputs
8902 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 8903 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7 8904 ("python-zope-schema" ,python-zope-schema)))
a74f9b12
MB
8905 (native-inputs
8906 `(("python-six" ,python-six)
8907 ("python-zope-component" ,python-zope-component)
fd8e23b7
HG
8908 ("python-zope-configuration" ,python-zope-configuration)
8909 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
8910 ("python-zope-testrunner" ,python-zope-testrunner)
8911 ("python-zope-testing" ,python-zope-testing)))
8912 (home-page "http://pypi.python.org/pypi/zope.security")
8913 (synopsis "Zope security framework")
8914 (description "Zope.security provides a generic mechanism to implement
8915security policies on Python objects.")
3f641af0 8916 (license license:zpl2.1)))
d4b77f36
LF
8917
8918(define-public python2-zope-security
04417662
EF
8919 (let ((zope-security (package-with-python2 python-zope-security)))
8920 (package (inherit zope-security)
8921 (propagated-inputs
8922 `(("python2-zope-testrunner" ,python2-zope-testrunner)
8923 ,@(alist-delete
8924 "python-zope-testrunner"
8925 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
8926
8927(define-public python-zope-component
8928 (package
8929 (name "python-zope-component")
35e1a0f1 8930 (version "4.3.0")
a6b61b27
LF
8931 (source
8932 (origin
8933 (method url-fetch)
35e1a0f1 8934 (uri (pypi-uri "zope.component" version))
a6b61b27
LF
8935 (sha256
8936 (base32
35e1a0f1 8937 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
a6b61b27
LF
8938 (build-system python-build-system)
8939 (arguments
8940 ;; Skip tests due to circular dependency with python-zope-security.
8941 '(#:tests? #f))
8942 (native-inputs
8943 `(("python-zope-testing" ,python-zope-testing)))
8944 (propagated-inputs
8945 `(("python-zope-event" ,python-zope-event)
8946 ("python-zope-interface" ,python-zope-interface)
8947 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8948 ("python-zope-configuration" ,python-zope-configuration)))
8949 (home-page "https://github.com/zopefoundation/zope.component")
8950 (synopsis "Zope Component Architecture")
8951 (description "Zope.component represents the core of the Zope Component
8952Architecture. Together with the zope.interface package, it provides
8953facilities for defining, registering and looking up components.")
3f641af0 8954 (license license:zpl2.1)))
a6b61b27
LF
8955
8956(define-public python2-zope-component
8957 (package-with-python2 python-zope-component))
3859ac12 8958
1ae44b80 8959(define-public python-pythondialog
b5f218be 8960 (package
1ae44b80 8961 (name "python-pythondialog")
42c4b246 8962 (version "3.4.0")
b5f218be
LF
8963 (source
8964 (origin
8965 (method url-fetch)
1ae44b80 8966 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
8967 (sha256
8968 (base32
1ae44b80 8969 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
8970 (build-system python-build-system)
8971 (arguments
8972 `(#:phases
8973 (modify-phases %standard-phases
8974 (add-after 'unpack 'patch-path
8975 (lambda* (#:key inputs #:allow-other-keys)
8976 (let* ((dialog (assoc-ref inputs "dialog")))
8977 ;; Since this library really wants to grovel the search path, we
8978 ;; must hardcode dialog's store path into it.
8979 (substitute* "dialog.py"
8980 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8981 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8982 #t))))
b5f218be
LF
8983 #:tests? #f)) ; no test suite
8984 (propagated-inputs
8985 `(("dialog" ,dialog)))
8986 (home-page "http://pythondialog.sourceforge.net/")
8987 (synopsis "Python interface to the UNIX dialog utility")
8988 (description "A Python wrapper for the dialog utility. Its purpose is to
8989provide an easy to use, pythonic and comprehensive Python interface to dialog.
8990This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 8991 (license license:lgpl2.1)
1ae44b80
LF
8992 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8993
8994(define-public python2-pythondialog
8995 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8996 (package
8997 (inherit base)
8998 (version (package-version python-pythondialog))
8999 (source (origin
9000 (method url-fetch)
9001 (uri (pypi-uri "python2-pythondialog" version))
9002 (sha256
9003 (base32
9004 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 9005
3859ac12
LF
9006(define-public python-pyrfc3339
9007 (package
9008 (name "python-pyrfc3339")
d9aa097b 9009 (version "1.0")
3859ac12
LF
9010 (source
9011 (origin
9012 (method url-fetch)
d9aa097b 9013 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
9014 (sha256
9015 (base32
d9aa097b 9016 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
9017 (build-system python-build-system)
9018 (propagated-inputs
9019 `(("python-pytz" ,python-pytz)))
9020 (native-inputs
f3b98f4f 9021 `(("python-nose" ,python-nose)))
3859ac12
LF
9022 (home-page "https://github.com/kurtraschke/pyRFC3339")
9023 (synopsis "Python timestamp library")
9024 (description "Python library for generating and parsing RFC 3339-compliant
9025timestamps.")
9026 (license license:expat)))
9027
9028(define-public python2-pyrfc3339
9029 (package-with-python2 python-pyrfc3339))
5eea2005
LF
9030
9031(define-public python-werkzeug
9032 (package
9033 (name "python-werkzeug")
bbb99d6b 9034 (version "0.11.15")
5eea2005
LF
9035 (source
9036 (origin
9037 (method url-fetch)
4b47cbfa 9038 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
9039 (sha256
9040 (base32
bbb99d6b 9041 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
5eea2005
LF
9042 (build-system python-build-system)
9043 (native-inputs
9044 `(("python-pytest" ,python-pytest)))
9045 (home-page "http://werkzeug.pocoo.org/")
9046 (synopsis "Utilities for WSGI applications")
9047 (description "One of the most advanced WSGI utility modules. It includes a
9048powerful debugger, full-featured request and response objects, HTTP utilities to
9049handle entity tags, cache control headers, HTTP dates, cookie handling, file
9050uploads, a powerful URL routing system and a bunch of community-contributed
9051addon modules.")
3f641af0 9052 (license license:x11)))
5eea2005
LF
9053
9054(define-public python2-werkzeug
9055 (package-with-python2 python-werkzeug))
99fffa8a
LF
9056
9057(define-public python-configobj
9058 (package
9059 (name "python-configobj")
9060 (version "5.0.6")
9061 (source (origin
9062 (method url-fetch)
9063 (uri (string-append
9064 "https://pypi.python.org/packages/source/c/configobj/"
9065 "configobj-" version ".tar.gz"))
9066 (sha256
9067 (base32
9068 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
9069 ;; Patch setup.py so it looks for python-setuptools, which is
9070 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 9071 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 9072 (build-system python-build-system)
861f70c9 9073 (propagated-inputs
f3b98f4f 9074 `(("python-six" ,python-six)))
99fffa8a
LF
9075 (synopsis "Config file reading, writing and validation")
9076 (description "ConfigObj is a simple but powerful config file reader and
9077writer: an ini file round tripper. Its main feature is that it is very easy to
9078use, with a straightforward programmer’s interface and a simple syntax for
9079config files.")
9080 (home-page "https://github.com/DiffSK/configobj")
3f641af0 9081 (license license:bsd-3)))
99fffa8a
LF
9082
9083(define-public python2-configobj
9084 (package-with-python2 python-configobj))
79e8a291
LF
9085
9086(define-public python-configargparse
9087 (package
9088 (name "python-configargparse")
9089 (version "0.10.0")
9090 (source (origin
9091 (method url-fetch)
9092 (uri (string-append
9093 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
9094 "ConfigArgParse-" version ".tar.gz"))
9095 (sha256
9096 (base32
9097 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
9098 (build-system python-build-system)
9099 (arguments
9100 ;; FIXME: Bug in test suite filed upstream:
9101 ;; https://github.com/bw2/ConfigArgParse/issues/32
9102 '(#:tests? #f))
9103 (synopsis "Replacement for argparse")
9104 (description "A drop-in replacement for argparse that allows options to also
9105be set via config files and/or environment variables.")
9106 (home-page "https://github.com/bw2/ConfigArgParse")
9107 (license license:expat)))
9108
9109(define-public python2-configargparse
9110 (package-with-python2 python-configargparse))
ab41f979
LF
9111
9112(define-public python-ndg-httpsclient
9113 (package
9114 (name "python-ndg-httpsclient")
ae476d01 9115 (version "0.4.2")
ab41f979
LF
9116 (source (origin
9117 (method url-fetch)
7be13d00 9118 (uri (pypi-uri "ndg_httpsclient" version))
ab41f979
LF
9119 (sha256
9120 (base32
ae476d01 9121 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
ab41f979 9122 (build-system python-build-system)
a39cc016
LF
9123 (arguments
9124 '(;; The tests appear to require networking.
9125 #:tests? #f))
ab41f979
LF
9126 (propagated-inputs
9127 `(("python-pyopenssl" ,python-pyopenssl)))
9128 (synopsis "HTTPS support for Python's httplib and urllib2")
9129 (description "This is a HTTPS client implementation for httplib and urllib2
9130based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
9131over the default provided with Python and importantly enables full verification
9132of the SSL peer.")
9133 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 9134 (license license:bsd-3)))
ab41f979
LF
9135
9136;; python2-openssl requires special care, so package-with-python2 is
9137;; insufficient.
9138(define-public python2-ndg-httpsclient
9139 (package (inherit python-ndg-httpsclient)
9140 (name "python2-ndg-httpsclient")
9141 (arguments `(#:python ,python-2))
9142 (propagated-inputs
9143 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
9144
9145(define-public python-contextlib2
9146 (package
9147 (name "python-contextlib2")
9148 (version "0.4.0")
9149 (source
9150 (origin
9151 (method url-fetch)
9152 (uri (pypi-uri "contextlib2" version))
9153 (sha256
9154 (base32
9155 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
9156 (build-system python-build-system)
9157 (arguments
9158 `(#:phases
9159 (modify-phases %standard-phases
9160 (replace 'check
9161 (lambda _ (zero?
9162 (system*
b3546174 9163 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
9164 (home-page "http://contextlib2.readthedocs.org/")
9165 (synopsis "Tools for decorators and context managers")
9166 (description "This module is primarily a backport of the Python
91673.2 contextlib to earlier Python versions. Like contextlib, it
9168provides utilities for common tasks involving decorators and context
9169managers. It also contains additional features that are not part of
9170the standard library.")
3f641af0 9171 (license license:psfl)))
03f964a5
CM
9172
9173(define-public python2-contextlib2
9174 (package-with-python2 python-contextlib2))
210bf497
DT
9175
9176(define-public python-texttable
9177 (package
9178 (name "python-texttable")
4c4d4df3 9179 (version "0.8.7")
210bf497
DT
9180 (source
9181 (origin
9182 (method url-fetch)
9183 (uri (pypi-uri "texttable" version))
9184 (sha256
9185 (base32
4c4d4df3 9186 "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
210bf497
DT
9187 (build-system python-build-system)
9188 (arguments '(#:tests? #f)) ; no tests
9189 (home-page "https://github.com/foutaise/texttable/")
9190 (synopsis "Python module for creating simple ASCII tables")
9191 (description "Texttable is a Python module for creating simple ASCII
9192tables.")
3f641af0 9193 (license license:lgpl2.1+)))
210bf497
DT
9194
9195(define-public python2-texttable
9196 (package-with-python2 python-texttable))
67c52bb3
DT
9197
9198(define-public python-websocket-client
9199 (package
9200 (name "python-websocket-client")
6b810897 9201 (version "0.37.0")
67c52bb3
DT
9202 (source
9203 (origin
9204 (method url-fetch)
6b810897 9205 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
9206 (sha256
9207 (base32
6b810897 9208 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 9209 (build-system python-build-system)
a5333f7c
HG
9210 (propagated-inputs
9211 `(("python-six" ,python-six)))
67c52bb3
DT
9212 (home-page "https://github.com/liris/websocket-client")
9213 (synopsis "WebSocket client for Python")
9214 (description "The Websocket-client module provides the low level APIs for
9215WebSocket usage in Python programs.")
3f641af0 9216 (license license:lgpl2.1+)))
67c52bb3
DT
9217
9218(define-public python2-websocket-client
9219 (package-with-python2 python-websocket-client))
5c6eea2a
LF
9220
9221(define-public python-atomicwrites
9222 (package
9223 (name "python-atomicwrites")
c56ad5e2 9224 (version "1.1.5")
5c6eea2a
LF
9225 (source (origin
9226 (method url-fetch)
9227 (uri (pypi-uri "atomicwrites" version))
9228 (sha256
9229 (base32
c56ad5e2 9230 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
5c6eea2a
LF
9231 (build-system python-build-system)
9232 (synopsis "Atomic file writes in Python")
9233 (description "Library for atomic file writes using platform dependent tools
8f65585b 9234for atomic file system operations.")
5c6eea2a 9235 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 9236 (license license:expat)))
9bb6d184
LF
9237
9238(define-public python2-atomicwrites
f210e944 9239 (package-with-python2 python-atomicwrites))
561bb3cb
LF
9240
9241(define-public python-requests-toolbelt
9242 (package
9243 (name "python-requests-toolbelt")
c02af1c8 9244 (version "0.6.2")
561bb3cb
LF
9245 (source (origin
9246 (method url-fetch)
c02af1c8
LF
9247 (uri (string-append
9248 "https://pypi.python.org/packages/"
9249 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
9250 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
9251 (sha256
9252 (base32
c02af1c8 9253 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 9254 (build-system python-build-system)
759aadd4
LF
9255 (native-inputs
9256 `(("python-betamax" ,python-betamax)
9257 ("python-mock" ,python-mock)
9258 ("python-pytest" ,python-pytest)))
561bb3cb
LF
9259 (propagated-inputs
9260 `(("python-requests" ,python-requests)))
9261 (synopsis "Extensions to python-requests")
9262 (description "This is a toolbelt of useful classes and functions to be used
9263with python-requests.")
9264 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 9265 (license license:asl2.0)))
d1deb90b
LF
9266
9267(define-public python-click-threading
9268 (package
9269 (name "python-click-threading")
19ecdbed 9270 (version "0.4.3")
d1deb90b
LF
9271 (source (origin
9272 (method url-fetch)
19ecdbed 9273 (uri (pypi-uri "click-threading" version))
d1deb90b
LF
9274 (sha256
9275 (base32
19ecdbed 9276 "0xs4bg2ws0zgyiplk312l049hi23c2zqf1g771rjhh5vr2msk4cg"))))
d1deb90b
LF
9277 (build-system python-build-system)
9278 (propagated-inputs
9279 `(("python-click" ,python-click)))
9280 (synopsis "Utilities for multithreading in Click")
9281 (description "This package provides utilities for multithreading in Click
9282applications.")
9283 (home-page "https://github.com/click-contrib/click-threading")
9284 (license license:expat)))
7b17cab9
LF
9285
9286(define-public python-click-log
9287 (package
9288 (name "python-click-log")
3a91ac83 9289 (version "0.2.0")
7b17cab9
LF
9290 (source (origin
9291 (method url-fetch)
9292 (uri (pypi-uri "click-log" version))
9293 (sha256
9294 (base32
3a91ac83 9295 "1bjrfxji1yv4fj0g78ri2yfgn2wbivn8g69fxfinxvxpmighhshp"))))
7b17cab9
LF
9296 (build-system python-build-system)
9297 (propagated-inputs
9298 `(("python-click" ,python-click)))
9299 (synopsis "Logging for click applications")
9300 (description "This package provides a Python library for logging Click
9301applications.")
9302 (home-page "https://github.com/click-contrib/click-log")
9303 (license license:expat)))
7b3a4ee4
LF
9304
9305(define-public python-apipkg
9306 (package
9307 (name "python-apipkg")
9308 (version "1.4")
9309 (source (origin
9310 (method url-fetch)
9311 (uri (pypi-uri "apipkg" version))
9312 (sha256
9313 (base32
9314 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
9315 (build-system python-build-system)
328bb95d 9316 (native-inputs
7b3a4ee4
LF
9317 `(("python-pytest" ,python-pytest)))
9318 (synopsis "Namespace control and lazy-import mechanism")
9319 (description "With apipkg you can control the exported namespace of a Python
9320package and greatly reduce the number of imports for your users. It is a small
9321pure Python module that works on virtually all Python versions.")
9322 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 9323 (license license:expat)))
e08739c3
CAW
9324
9325(define-public python2-apipkg
f210e944 9326 (package-with-python2 python-apipkg))
848964fe
LF
9327
9328(define-public python-execnet
9329 (package
9330 (name "python-execnet")
9331 (version "1.4.1")
9332 (source (origin
9333 (method url-fetch)
9334 (uri (pypi-uri "execnet" version))
9335 (sha256
9336 (base32
9337 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
9338 (build-system python-build-system)
ca0eee9d
LF
9339 (arguments
9340 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
9341 ;; The two test failures are caused by the lack of an `ssh` executable.
9342 ;; The test suite can be run with pytest after the 'install' phase.
9343 #:tests? #f))
848964fe 9344 (native-inputs
ca0eee9d
LF
9345 `(("python-pytest" ,python-pytest)
9346 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 9347 (propagated-inputs
848964fe
LF
9348 `(("python-apipkg" ,python-apipkg)))
9349 (synopsis "Rapid multi-Python deployment")
9350 (description "Execnet provides a share-nothing model with
9351channel-send/receive communication for distributing execution across many
9352Python interpreters across version, platform and network barriers. It has a
d1e4ad1b 9353minimal and fast API targeting the following uses:
848964fe
LF
9354@enumerate
9355@item distribute tasks to (many) local or remote CPUs
9356@item write and deploy hybrid multi-process applications
9357@item write scripts to administer multiple environments
9358@end enumerate")
9359 (home-page "http://codespeak.net/execnet/")
f210e944 9360 (license license:expat)))
16c84f90
CAW
9361
9362(define-public python2-execnet
f210e944 9363 (package-with-python2 python-execnet))
6720dbb4 9364
d5bbf806 9365(define-public python-trollius-redis
9366 (package
9367 (name "python-trollius-redis")
9368 (version "0.1.4")
9369 (source
9370 (origin
9371 (method url-fetch)
9372 (uri (pypi-uri "trollius_redis" version))
9373 (sha256
9374 (base32
9375 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
9376 (build-system python-build-system)
97b62eb0
MB
9377 ;; TODO: Tests require packaging 'hiredis'.
9378 (arguments '(#:tests? #f))
d5bbf806 9379 (home-page "https://github.com/benjolitz/trollius-redis")
9380 (synopsis "Port of asyncio-redis to trollius")
9381 (description "@code{trollius-redis} is a Redis client for Python
9382 trollius. It is an asynchronious IO (PEP 3156) implementation of the
9383 Redis protocol.")
9384 (license license:bsd-2)))
9385
9386(define-public python2-trollius-redis
9387 (package-with-python2 python-trollius-redis))
9388
6720dbb4
LF
9389;;; The software provided by this package was integrated into pytest 2.8.
9390(define-public python-pytest-cache
9391 (package
9392 (name "python-pytest-cache")
9393 (version "1.0")
9394 (source (origin
9395 (method url-fetch)
9396 (uri (pypi-uri "pytest-cache" version))
9397 (sha256
9398 (base32
9399 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
9400 (build-system python-build-system)
f22efa01 9401 (propagated-inputs
630d938f
EF
9402 `(("python-apipkg" ,python-apipkg)
9403 ("python-execnet" ,python-execnet)
9404 ("python-py" ,python-py)
9405 ("python-pytest" ,python-pytest)))
6720dbb4
LF
9406 (synopsis "Py.test plugin with mechanisms for caching across test runs")
9407 (description "The pytest-cache plugin provides tools to rerun failures from
9408the last py.test invocation.")
9409 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 9410 (license license:expat)))
0adc21c2
EF
9411
9412(define-public python2-pytest-cache
f210e944 9413 (package-with-python2 python-pytest-cache))
d7e729fe
LF
9414
9415(define-public python-pytest-localserver
9416 (package
9417 (name "python-pytest-localserver")
29f20168 9418 (version "0.3.5")
d7e729fe
LF
9419 (source (origin
9420 (method url-fetch)
29f20168 9421 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
9422 (sha256
9423 (base32
29f20168 9424 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
9425 (build-system python-build-system)
9426 (arguments
9427 `(#:phases (modify-phases %standard-phases
9428 (replace 'check
9429 (lambda _
9430 (zero? (system* "py.test" "--genscript=runtests.py"))
9431 (zero? (system* "py.test")))))))
9432 (native-inputs
d7e729fe
LF
9433 `(("python-pytest" ,python-pytest)
9434 ("python-requests" ,python-requests)
9ba40f05 9435 ("python-six" ,python-six)))
f22efa01 9436 (propagated-inputs
9ba40f05 9437 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
9438 (synopsis "Py.test plugin to test server connections locally")
9439 (description "Pytest-localserver is a plugin for the pytest testing
9440framework which enables you to test server connections locally.")
9441 (home-page "https://pypi.python.org/pypi/pytest-localserver")
9442 (license license:expat)))
28cecbb7
LF
9443
9444(define-public python-wsgi-intercept
9445 (package
9446 (name "python-wsgi-intercept")
909fbd2b 9447 (version "1.2.2")
28cecbb7
LF
9448 (source (origin
9449 (method url-fetch)
909fbd2b
LF
9450 (uri (string-append
9451 "https://pypi.python.org/packages/"
9452 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
9453 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
9454 (sha256
9455 (base32
909fbd2b 9456 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 9457 (build-system python-build-system)
b9fc496f
HG
9458 (propagated-inputs
9459 `(("python-six" ,python-six)))
28cecbb7 9460 (native-inputs
9d813ec1 9461 `(("python-pytest" ,python-pytest)
b9fc496f
HG
9462 ("python-httplib2" ,python-httplib2)
9463 ("python-requests" ,python-requests)
8757f050 9464 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
9465 (synopsis "Puts a WSGI application in place of a real URI for testing")
9466 (description "Wsgi_intercept installs a WSGI application in place of a real
9467URI for testing. Testing a WSGI application normally involves starting a
9468server at a local host and port, then pointing your test code to that address.
9469Instead, this library lets you intercept calls to any specific host/port
9470combination and redirect them into a WSGI application importable by your test
9471program. Thus, you can avoid spawning multiple processes or threads to test
9472your Web app.")
9473 (home-page "https://github.com/cdent/wsgi-intercept")
9474 (license license:expat)))
89b8a551
LF
9475
9476(define-public python-pytest-xprocess
9477 (package
9478 (name "python-pytest-xprocess")
9479 (version "0.9.1")
9480 (source (origin
9481 (method url-fetch)
9482 (uri (pypi-uri "pytest-xprocess" version))
9483 (sha256
9484 (base32
9485 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
9486 (build-system python-build-system)
9487 (propagated-inputs
9488 `(("python-pytest" ,python-pytest)
9489 ("python-pytest-cache" ,python-pytest-cache)
9490 ("python-psutil" ,python-psutil)))
9491 (synopsis "Pytest plugin to manage external processes across test runs")
9492 (description "Pytest-xprocess is an experimental py.test plugin for managing
9493processes across test runs.")
9494 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
9495 (license license:expat)))
5c299bf0
LF
9496
9497(define-public python-icalendar
9498 (package
9499 (name "python-icalendar")
2da21e48 9500 (version "3.11.7")
5c299bf0
LF
9501 (source (origin
9502 (method url-fetch)
9503 (uri (pypi-uri "icalendar" version))
9504 (sha256
9505 (base32
2da21e48 9506 "0ahf1i98wjizhld2qd7v2vmvzsmdw08mmins82bf3fpbnp2sxbgc"))))
5c299bf0
LF
9507 (build-system python-build-system)
9508 (propagated-inputs
22d7360b 9509 `(("python-dateutil" ,python-dateutil)
5c299bf0
LF
9510 ("python-pytz" ,python-pytz)))
9511 (synopsis "Python library for parsing iCalendar files")
9512 (description "The icalendar package is a parser/generator of iCalendar
9513files for use with Python.")
9514 (home-page "https://github.com/collective/icalendar")
3f641af0 9515 (license license:bsd-2)))
6bbbb53e
LF
9516
9517(define-public python-sphinxcontrib-newsfeed
9518 (package
9519 (name "python-sphinxcontrib-newsfeed")
9520 (version "0.1.4")
9521 (source (origin
9522 (method url-fetch)
9523 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
9524 (sha256
9525 (base32
9526 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
3d2a544c 9527 (arguments '(#:tests? #f)) ; No tests.
6bbbb53e
LF
9528 (build-system python-build-system)
9529 (propagated-inputs
251ed7f2 9530 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
9531 (synopsis "News Feed extension for Sphinx")
9532 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
9533Blog, News or Announcements section to a Sphinx website.")
9534 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 9535 (license license:bsd-2)))
2216e15c
SB
9536
9537(define-public python-args
9538 (package
9539 (name "python-args")
9540 (version "0.1.0")
9541 (source (origin
9542 (method url-fetch)
9543 (uri (pypi-uri "args" version))
9544 (sha256
9545 (base32
9546 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
9547 (build-system python-build-system)
2216e15c
SB
9548 (home-page "https://github.com/kennethreitz/args")
9549 (synopsis "Command-line argument parser")
9550 (description
9551 "This library provides a Python module to parse command-line arguments.")
3f641af0 9552 (license license:bsd-3)))
2216e15c
SB
9553
9554(define-public python2-args
9555 (package-with-python2 python-args))
c06a3de9
SB
9556
9557(define-public python-clint
9558 (package
9559 (name "python-clint")
9560 (version "0.5.1")
9561 (source (origin
9562 (method url-fetch)
9563 (uri (pypi-uri "clint" version))
9564 (sha256
9565 (base32
9566 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
9567 (build-system python-build-system)
6145b604
MB
9568 (arguments
9569 '(#:phases
9570 (modify-phases %standard-phases
9571 (replace 'check
9572 (lambda _
9573 (zero? (system* "py.test" "-v")))))))
9574 (native-inputs
9575 `(("python-pytest" ,python-pytest)))
f22efa01 9576 (propagated-inputs
f3b98f4f 9577 `(("python-args" ,python-args)))
c06a3de9
SB
9578 (home-page "https://github.com/kennethreitz/clint")
9579 (synopsis "Command-line interface tools")
9580 (description
9581 "Clint is a Python module filled with a set of tools for developing
9582command-line applications, including tools for colored and indented
9583output, progress bar display, and pipes.")
3f641af0 9584 (license license:isc)))
c06a3de9
SB
9585
9586(define-public python2-clint
9587 (package-with-python2 python-clint))
4ecdeef8
SB
9588
9589(define-public python-astor
9590 (package
9591 (name "python-astor")
9592 (version "0.5")
9593 (source (origin
9594 (method url-fetch)
9595 (uri (pypi-uri "astor" version))
9596 (sha256
9597 (base32
9598 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
9599 (build-system python-build-system)
4ecdeef8
SB
9600 (home-page "https://github.com/berkerpeksag/astor")
9601 (synopsis "Read and write Python ASTs")
9602 (description
9603 "Astor is designed to allow easy manipulation of Python source via the
9604Abstract Syntax Tree.")
3f641af0 9605 (license license:bsd-3)))
4ecdeef8
SB
9606
9607(define-public python2-astor
9608 (package-with-python2 python-astor))
e224b7d0
SB
9609
9610(define-public python-rply
9611 (package
9612 (name "python-rply")
9613 (version "0.7.4")
9614 (source (origin
9615 (method url-fetch)
9616 (uri (pypi-uri "rply" version))
9617 (sha256
9618 (base32
9619 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
9620 (build-system python-build-system)
f22efa01 9621 (propagated-inputs
f3b98f4f 9622 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
9623 (home-page "https://github.com/alex/rply")
9624 (synopsis "Parser generator for Python")
9625 (description
9626 "This package provides a pure Python based parser generator, that also
9627works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
9628with a new public API, and RPython support.")
3f641af0 9629 (license license:bsd-3)))
e224b7d0
SB
9630
9631(define-public python2-rply
9632 (package-with-python2 python-rply))
c3e919d7
SB
9633
9634(define-public python-hy
9635 (package
9636 (name "python-hy")
9637 (version "0.11.1")
9638 (source (origin
9639 (method url-fetch)
9640 (uri (pypi-uri "hy" version))
9641 (sha256
9642 (base32
9643 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
9644 (build-system python-build-system)
15c37077
MB
9645 (arguments
9646 '(#:phases
9647 (modify-phases %standard-phases
9648 (replace 'check
9649 (lambda _
9650 ;; Tests require write access to HOME.
9651 (setenv "HOME" "/tmp")
9652 (zero? (system* "nosetests")))))))
9653 (native-inputs
9654 `(("python-coverage" ,python-coverage)
9655 ("python-nose" ,python-nose)))
f22efa01 9656 (propagated-inputs
c3e919d7
SB
9657 `(("python-astor" ,python-astor)
9658 ("python-clint" ,python-clint)
f3b98f4f 9659 ("python-rply" ,python-rply)))
c3e919d7
SB
9660 (home-page "http://hylang.org/")
9661 (synopsis "Lisp frontend to Python")
9662 (description
9663 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
9664its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
9665Python at your fingertips, in Lisp form.")
9666 (license license:expat)))
9667
9668(define-public python2-hy
9669 (package-with-python2 python-hy))
7a5b944e 9670
81f7f297
EF
9671(define-public python-rauth
9672 (package
9673 (name "python-rauth")
06fe79f2 9674 (version "0.7.3")
81f7f297
EF
9675 (source
9676 (origin
9677 (method url-fetch)
9678 (uri (pypi-uri "rauth" version))
9679 (sha256
9680 (base32
06fe79f2 9681 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
81f7f297
EF
9682 (build-system python-build-system)
9683 (arguments
9684 `(#:test-target "check"))
f22efa01 9685 (propagated-inputs
81f7f297
EF
9686 `(("python-requests" ,python-requests)))
9687 (home-page "https://github.com/litl/rauth")
9688 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
9689 (description
9690 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
9691provides service wrappers for convenient connection initialization and
9692authenticated session objects providing things like keep-alive.")
0848d8d3
EF
9693 (license license:expat)
9694 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
9695
9696(define-public python2-rauth
0848d8d3
EF
9697 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9698 (package
9699 (inherit base)
00e10c6e 9700 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 9701 ,@(package-native-inputs base))))))
81f7f297 9702
1abe448d
EF
9703(define-public python2-functools32
9704 (package
9705 (name "python2-functools32")
9706 (version "3.2.3-2")
9707 (source
9708 (origin
9709 (method url-fetch)
9710 (uri (pypi-uri "functools32" version))
9711 (sha256
9712 (base32
9713 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
9714 (build-system python-build-system)
9715 (arguments
9716 `(#:python ,python-2
9717 #:tests? #f)) ; no test target
1abe448d
EF
9718 (home-page "https://github.com/MiCHiLU/python-functools32")
9719 (synopsis
9720 "Backport of the functools module from Python 3.2.3")
9721 (description
9722 "This package is a backport of the @code{functools} module from Python
97233.2.3 for use with older versions of Python and PyPy.")
9724 (license license:expat)))
9725
550bd98b
MB
9726(define-public python2-subprocess32
9727 (package
9728 (name "python2-subprocess32")
9729 (version "3.2.7")
9730 (source (origin
9731 (method url-fetch)
9732 (uri (pypi-uri "subprocess32" version))
9733 (sha256
9734 (base32
9735 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
9736 (patches
9737 (search-patches "python2-subprocess32-disable-input-test.patch"))))
9738 (build-system python-build-system)
9739 (arguments
9740 `(#:python ,python-2
9741 #:phases
9742 (modify-phases %standard-phases
9743 (add-after 'unpack 'patch-/bin/sh
9744 (lambda _
9745 (substitute* '("subprocess32.py"
9746 "test_subprocess32.py")
9747 (("/bin/sh") (which "sh")))
9748 #t))
9749 (delete 'check)
9750 (add-after 'install 'check
9751 (lambda* (#:key inputs outputs #:allow-other-keys)
9752 ;; For some reason this package fails to import
9753 ;; _posixsubprocess.so when PYTHONPATH is set to the build
9754 ;; directory. Running tests after install is easier.
9755 (add-installed-pythonpath inputs outputs)
9756 (zero? (system* "python" "test_subprocess32.py")))))))
9757 (home-page "https://github.com/google/python-subprocess32")
9758 (synopsis "Backport of the subprocess module from Python 3.2")
9759 (description
9760 "This is a backport of the @code{subprocess} standard library module
9761from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
9762new features. On POSIX systems it is guaranteed to be reliable when used
9763in threaded applications. It includes timeout support from Python 3.3 but
9764otherwise matches 3.2’s API.")
9765 (license license:psfl)))
9766
877889f3 9767(define-public python2-futures
7a5b944e 9768 (package
877889f3 9769 (name "python2-futures")
e17a1248 9770 (version "3.0.5")
7a5b944e
EF
9771 (source
9772 (origin
9773 (method url-fetch)
9774 (uri (pypi-uri "futures" version))
9775 (sha256
9776 (base32
e17a1248 9777 "1pw1z4329xvlabdpwqa6b7v2fxf7hl64m4cgr22ckbym8m8m4hh5"))))
7a5b944e 9778 (build-system python-build-system)
877889f3 9779 (arguments `(#:python ,python-2))
7a5b944e
EF
9780 (home-page "https://github.com/agronholm/pythonfutures")
9781 (synopsis
9782 "Backport of the concurrent.futures package from Python 3.2")
9783 (description
9784 "The concurrent.futures module provides a high-level interface for
9785asynchronously executing callables. This package backports the
9786concurrent.futures package from Python 3.2")
3f641af0 9787 (license license:bsd-3)))
7a5b944e 9788
5cb2fe44
EF
9789(define-public python-promise
9790 (package
9791 (name "python-promise")
9792 (version "0.4.2")
9793 (source
9794 (origin
9795 (method url-fetch)
9796 (uri (pypi-uri "promise" version))
9797 (sha256
9798 (base32
9799 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
9800 (build-system python-build-system)
9801 ;; Tests wants python-futures, which is a python2 only program, and
9802 ;; can't be found by python-promise at test time.
9803 (arguments `(#:tests? #f))
9804 (home-page "https://github.com/syrusakbary/promise")
9805 (synopsis "Promises/A+ implementation for Python")
9806 (description
9807 "Promises/A+ implementation for Python")
9808 (properties `((python2-variant . ,(delay python2-promise))))
9809 (license license:expat)))
9810
9811(define-public python2-promise
9812 (let ((promise (package-with-python2
9813 (strip-python2-variant python-promise))))
9814 (package (inherit promise)
9815 (arguments (substitute-keyword-arguments (package-arguments promise)
9816 ((#:tests? _) #t)))
9817 (native-inputs
9818 `(("python2-futures" ,python2-futures)
9819 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
9820 ,@(package-native-inputs promise))))))
9821
c18f6368
EF
9822(define-public python-urllib3
9823 (package
9824 (name "python-urllib3")
6178274d 9825 (version "1.18.1")
c18f6368
EF
9826 (source
9827 (origin
9828 (method url-fetch)
9829 (uri (pypi-uri "urllib3" version))
9830 (sha256
9831 (base32
6178274d 9832 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
9833 (build-system python-build-system)
9834 (arguments `(#:tests? #f))
9835 (native-inputs
f3b98f4f 9836 `(;; some packages for tests
c18f6368
EF
9837 ("python-nose" ,python-nose)
9838 ("python-mock" ,python-mock)
9839 ("python-tornado" ,python-tornado)))
9840 (propagated-inputs
8322749a 9841 `(;; extra packages for https security
c18f6368
EF
9842 ("python-certifi" ,python-certifi)
9843 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9844 ("python-pyasn1" ,python-pyasn1)
9845 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 9846 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
9847 (synopsis "HTTP library with thread-safe connection pooling")
9848 (description
9849 "Urllib3 supports features left out of urllib and urllib2 libraries. It
9850can reuse the same socket connection for multiple requests, it can POST files,
9851supports url redirection and retries, and also gzip and deflate decoding.")
9852 (license license:expat)))
9853
9854(define-public python2-urllib3
9855 (package-with-python2 python-urllib3))
2b2f2fc1
DT
9856
9857(define-public python-colorama
9858 (package
9859 (name "python-colorama")
f92576f9 9860 (version "0.3.7")
2b2f2fc1
DT
9861 (source
9862 (origin
9863 (method url-fetch)
9864 (uri (pypi-uri "colorama" version))
9865 (sha256
9866 (base32
f92576f9 9867 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
2b2f2fc1 9868 (build-system python-build-system)
46e110cc 9869 (synopsis "Colored terminal text rendering for Python")
2b2f2fc1
DT
9870 (description "Colorama is a Python library for rendering colored terminal
9871text.")
9872 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 9873 (license license:bsd-3)))
2b2f2fc1
DT
9874
9875(define-public python2-colorama
9876 (package-with-python2 python-colorama))
f5bcec6e
DT
9877
9878(define-public python-rsa
9879 (package
9880 (name "python-rsa")
ecd68c53 9881 (version "3.4.2")
f5bcec6e
DT
9882 (source
9883 (origin
9884 (method url-fetch)
9885 (uri (pypi-uri "rsa" version))
9886 (sha256
9887 (base32
ecd68c53 9888 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 9889 (build-system python-build-system)
f22efa01 9890 (propagated-inputs
f3b98f4f 9891 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
9892 (synopsis "Pure-Python RSA implementation")
9893 (description "Python-RSA is a pure-Python RSA implementation. It supports
9894encryption and decryption, signing and verifying signatures, and key
9895generation according to PKCS#1 version 1.5. It can be used as a Python
9896library as well as on the command line.")
9897 (home-page "http://stuvel.eu/rsa")
3f641af0 9898 (license license:asl2.0)))
f5bcec6e
DT
9899
9900(define-public python2-rsa
9901 (package-with-python2 python-rsa))
c0aacfa5
DT
9902
9903(define-public python-pluggy
9904 (package
9905 (name "python-pluggy")
9906 (version "0.3.1")
9907 (source
9908 (origin
9909 (method url-fetch)
9910 (uri (pypi-uri "pluggy" version))
9911 (sha256
9912 (base32
9913 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
9914 (build-system python-build-system)
c0aacfa5
DT
9915 (synopsis "Plugin and hook calling mechanism for Python")
9916 (description "Pluggy is an extraction of the plugin manager as used by
9917Pytest but stripped of Pytest specific details.")
9918 (home-page "https://pypi.python.org/pypi/pluggy")
9919 (license license:expat)))
9920
9921(define-public python2-pluggy
9922 (package-with-python2 python-pluggy))
a4af21ca
DT
9923
9924(define-public python-tox
9925 (package
9926 (name "python-tox")
c98f9c52 9927 (version "2.8.0")
a4af21ca
DT
9928 (source
9929 (origin
9930 (method url-fetch)
9931 (uri (pypi-uri "tox" version))
9932 (sha256
9933 (base32
c98f9c52 9934 "00lrql2cfzhb712v70inac6mrgdv8s8fmvz7qpggkk623hkm2pgc"))))
a4af21ca
DT
9935 (build-system python-build-system)
9936 (arguments
7ba07edf
HG
9937 ;; FIXME: Tests require pytest-timeout, which itself requires
9938 ;; pytest>=2.8.0 for installation.
a4af21ca 9939 '(#:tests? #f))
482d9591
HG
9940 (propagated-inputs
9941 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 9942 ("python-py" ,python-py)
482d9591 9943 ("python-virtualenv" ,python-virtualenv)))
328bb95d 9944 (native-inputs
7ba07edf 9945 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
c98f9c52
CR
9946 ("python-pytest" ,python-pytest) ; >= 2.3.5
9947 ("python-setuptools-scm" ,python-setuptools-scm)))
a4af21ca
DT
9948 (home-page "http://tox.testrun.org/")
9949 (synopsis "Virtualenv-based automation of test activities")
9950 (description "Tox is a generic virtualenv management and test command line
9951tool. It can be used to check that a package installs correctly with
9952different Python versions and interpreters, or run tests in each type of
9953supported environment, or act as a frontend to continuous integration
9954servers.")
9955 (license license:expat)))
9956
9957(define-public python2-tox
9958 (package-with-python2 python-tox))
ba9da248
DT
9959
9960(define-public python-jmespath
9961 (package
9962 (name "python-jmespath")
9963 (version "0.9.0")
9964 (source
9965 (origin
9966 (method url-fetch)
9967 (uri (pypi-uri "jmespath" version))
9968 (sha256
9969 (base32
9970 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
9971 (build-system python-build-system)
52a75a83
MB
9972 (native-inputs
9973 `(("python-nose" ,python-nose)))
ba9da248
DT
9974 (synopsis "JSON Matching Expressions")
9975 (description "JMESPath (pronounced “james path”) is a Python library that
9976allows one to declaratively specify how to extract elements from a JSON
9977document.")
9978 (home-page "https://github.com/jmespath/jmespath.py")
9979 (license license:expat)))
9980
9981(define-public python2-jmespath
9982 (package-with-python2 python-jmespath))
935fcd5c
DT
9983
9984(define-public python-botocore
9985 (package
9986 (name "python-botocore")
01fc102e 9987 (version "1.7.9")
935fcd5c
DT
9988 (source
9989 (origin
9990 (method url-fetch)
9991 (uri (pypi-uri "botocore" version))
9992 (sha256
9993 (base32
01fc102e 9994 "02b1bw25r1wdjs5yppb1h9igf11wj092biriv2yg8hzp5r0wrkmg"))))
935fcd5c 9995 (build-system python-build-system)
877fdac9
MB
9996 (arguments
9997 ;; FIXME: Many tests are failing.
9998 '(#:tests? #f))
482d9591 9999 (propagated-inputs
22d7360b 10000 `(("python-dateutil" ,python-dateutil)
935fcd5c 10001 ("python-docutils" ,python-docutils)
482d9591 10002 ("python-jmespath" ,python-jmespath)))
8fa6890b 10003 (native-inputs
482d9591 10004 `(("python-mock" ,python-mock)
935fcd5c 10005 ("python-nose" ,python-nose)
482d9591 10006 ("behave" ,behave)
935fcd5c 10007 ("python-tox" ,python-tox)
482d9591 10008 ("python-wheel" ,python-wheel)))
935fcd5c
DT
10009 (home-page "https://github.com/boto/botocore")
10010 (synopsis "Low-level interface to AWS")
10011 (description "Botocore is a Python library that provides a low-level
10012interface to the Amazon Web Services (AWS) API.")
3f641af0 10013 (license license:asl2.0)))
935fcd5c
DT
10014
10015(define-public python2-botocore
10016 (package-with-python2 python-botocore))
f861b8b8
DT
10017
10018(define-public awscli
10019 (package
10020 (name "awscli")
3f9a4eaf 10021 (version "1.11.151")
f861b8b8
DT
10022 (source
10023 (origin
10024 (method url-fetch)
d5ccf71e 10025 (uri (pypi-uri name version))
f861b8b8
DT
10026 (sha256
10027 (base32
3f9a4eaf 10028 "0h6rirbfy0f9cxm7ikll0kr720dircfmxf2vslmhn4n325831wsp"))))
f861b8b8 10029 (build-system python-build-system)
482d9591 10030 (propagated-inputs
f861b8b8 10031 `(("python-colorama" ,python-colorama)
482d9591
HG
10032 ("python-botocore" ,python-botocore)
10033 ("python-s3transfer" ,python-s3transfer)
f861b8b8 10034 ("python-docutils" ,python-docutils)
0cb9fba3 10035 ("python-pyyaml" ,python-pyyaml)
482d9591 10036 ("python-rsa" ,python-rsa)))
619bfd81
MB
10037 (arguments
10038 ;; FIXME: The 'pypi' release does not contain tests.
10039 '(#:tests? #f))
60a8be3a 10040 (home-page "https://aws.amazon.com/cli/")
f861b8b8
DT
10041 (synopsis "Command line client for AWS")
10042 (description "AWS CLI provides a unified command line interface to the
10043Amazon Web Services (AWS) API.")
3f641af0 10044 (license license:asl2.0)))
6a44697d
LF
10045
10046(define-public python-hypothesis
10047 (package
10048 (name "python-hypothesis")
bea6d94d 10049 (version "3.1.0")
6a44697d
LF
10050 (source (origin
10051 (method url-fetch)
10052 (uri (pypi-uri "hypothesis" version))
10053 (sha256
10054 (base32
bea6d94d 10055 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 10056 (build-system python-build-system)
bd100c71 10057 (native-inputs
6a44697d
LF
10058 `(("python-flake8" ,python-flake8)
10059 ("python-pytest" ,python-pytest)))
10060 (synopsis "Library for property based testing")
10061 (description "Hypothesis is a library for testing your Python code against a
10062much larger range of examples than you would ever want to write by hand. It’s
10063based on the Haskell library, Quickcheck, and is designed to integrate
10064seamlessly into your existing Python unit testing work flow.")
10065 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 10066 (license license:mpl2.0)
6f068e08 10067 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
10068
10069(define-public python2-hypothesis
6f068e08
EF
10070 (let ((hypothesis (package-with-python2
10071 (strip-python2-variant python-hypothesis))))
10072 (package (inherit hypothesis)
10073 (native-inputs
bd100c71
MB
10074 `(("python2-enum34" ,python2-enum34)
10075 ,@(package-native-inputs hypothesis))))))
7517e73c
LF
10076
10077(define-public python-pytest-subtesthack
10078 (package
10079 (name "python-pytest-subtesthack")
10080 (version "0.1.1")
10081 (source (origin
10082 (method url-fetch)
10083 (uri (pypi-uri "pytest-subtesthack" version))
10084 (sha256
10085 (base32
10086 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
10087 (build-system python-build-system)
7517e73c
LF
10088 (propagated-inputs
10089 `(("python-pytest" ,python-pytest)))
10090 (synopsis "Set-up and tear-down fixtures for unit tests")
10091 (description "This plugin allows you to set up and tear down fixtures within
10092unit test functions that use @code{py.test}. This is useful for using
10093@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
10094function multiple times, without setting up or tearing down fixture state as is
10095normally the case.")
10096 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 10097 (license license:unlicense)))
7517e73c
LF
10098
10099(define-public python2-pytest-subtesthack
10100 (package-with-python2 python-pytest-subtesthack))
0bdc1671 10101
7637de23 10102(define-public python-xdo
0bdc1671 10103 (package
7637de23 10104 (name "python-xdo")
e871c332 10105 (version "0.3")
0bdc1671
CAW
10106 (source (origin
10107 (method url-fetch)
10108 (uri (string-append
10109 "http://http.debian.net/debian/pool/main/p/python-xdo/"
10110 "python-xdo_" version ".orig.tar.gz"))
10111 (sha256
10112 (base32
e871c332 10113 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
0bdc1671
CAW
10114 (build-system python-build-system)
10115 (arguments
736cfc10
SB
10116 '(#:phases
10117 (modify-phases %standard-phases
10118 (add-before 'install 'patch-libxdo-path
10119 ;; Hardcode the path of dynamically loaded libxdo library.
10120 (lambda* (#:key inputs #:allow-other-keys)
10121 (let ((libxdo (string-append
10122 (assoc-ref inputs "xdotool")
10123 "/lib/libxdo.so")))
10124 (substitute* "xdo/_xdo.py"
10125 (("find_library\\(\"xdo\"\\)")
10126 (simple-format #f "\"~a\"" libxdo)))
10127 #t))))
10128 #:tests? #f)) ; no tests provided
0b5e0863
SB
10129 (propagated-inputs
10130 `(("python-six" ,python-six)))
0bdc1671
CAW
10131 (inputs
10132 `(("xdotool" ,xdotool)
10133 ("libX11" ,libx11)))
10134 (home-page "https://tracker.debian.org/pkg/python-xdo")
10135 (synopsis "Python library for simulating X11 keyboard/mouse input")
10136 (description "Provides bindings to libxdo for manipulating X11 via simulated
10137input. (Note that this is mostly a legacy library; you may wish to look at
10138python-xdo for newer bindings.)")
3f641af0 10139 (license license:bsd-3)))
0bdc1671 10140
7637de23
LF
10141(define-public python2-xdo
10142 (package-with-python2 python-xdo))
10143
cb34dc6c
CAW
10144(define-public python-wtforms
10145 (package
10146 (name "python-wtforms")
10147 (version "2.1")
10148 (source
10149 (origin
10150 (method url-fetch)
10151 (uri (pypi-uri "WTForms" version ".zip"))
10152 (sha256
10153 (base32
10154 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
10155 (build-system python-build-system)
13c4d874
EF
10156 (arguments
10157 '(#:phases
10158 (modify-phases %standard-phases
10159 (add-after 'unpack 'remove-django-test
10160 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
10161 (lambda _
10162 (substitute*
10163 "tests/runtests.py"
10164 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
10165 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
10166 #t)))))
cb34dc6c
CAW
10167 (native-inputs
10168 `(("unzip" ,unzip)))
10169 (home-page "http://wtforms.simplecodes.com/")
10170 (synopsis
10171 "Form validation and rendering library for Python web development")
10172 (description
10173 "WTForms is a flexible forms validation and rendering library
10174for Python web development. It is very similar to the web form API
10175available in Django, but is a standalone package.")
f210e944 10176 (license license:bsd-3)))
cb34dc6c
CAW
10177
10178(define-public python2-wtforms
f210e944 10179 (package-with-python2 python-wtforms))
50aaec25
DT
10180
10181(define-public python-mako
10182 (package
10183 (name "python-mako")
3753f2e6 10184 (version "1.0.6")
50aaec25
DT
10185 (source
10186 (origin
10187 (method url-fetch)
10188 (uri (pypi-uri "Mako" version))
10189 (sha256
10190 (base32
3753f2e6 10191 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
50aaec25 10192 (build-system python-build-system)
482d9591
HG
10193 (propagated-inputs
10194 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 10195 (native-inputs
482d9591 10196 `(("python-mock" ,python-mock)
e435af5c
MB
10197 ("python-nose" ,python-nose)
10198 ("python-pytest" ,python-pytest)))
50aaec25
DT
10199 (home-page "http://www.makotemplates.org/")
10200 (synopsis "Templating language for Python")
10201 (description "Mako is a templating language for Python that compiles
10202templates into Python modules.")
f210e944 10203 (license license:expat)))
50aaec25
DT
10204
10205(define-public python2-mako
f210e944 10206 (package-with-python2 python-mako))
ae00a41f
CAW
10207
10208(define-public python-waitress
10209 (package
10210 (name "python-waitress")
10211 (version "0.8.10")
10212 (source
10213 (origin
10214 (method url-fetch)
10215 (uri (pypi-uri "waitress" version))
10216 (sha256
10217 (base32
10218 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
10219 (build-system python-build-system)
10220 (home-page "https://github.com/Pylons/waitress")
10221 (synopsis "Waitress WSGI server")
10222 (description "Waitress is meant to be a production-quality pure-Python WSGI
10223server with very acceptable performance.")
f210e944 10224 (license license:zpl2.1)))
ae00a41f
CAW
10225
10226(define-public python2-waitress
f210e944 10227 (package-with-python2 python-waitress))
778a284b
CAW
10228
10229(define-public python-wsgiproxy2
10230 (package
10231 (name "python-wsgiproxy2")
10232 (version "0.4.2")
10233 (source
10234 (origin
10235 (method url-fetch)
10236 (uri (pypi-uri "WSGIProxy2" version ".zip"))
10237 (sha256
10238 (base32
10239 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
10240 (build-system python-build-system)
e359b31a
LF
10241 (arguments
10242 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
10243 ;; support Python 3:
10244 ;; https://github.com/benoitc/restkit/issues/140
10245 #:tests? #f))
778a284b
CAW
10246 (native-inputs
10247 `(("unzip" ,unzip)
10248 ("python-nose" ,python-nose)
10249 ("python-coverage" ,python-coverage)))
10250 (propagated-inputs
10251 `(("python-six" ,python-six)
10252 ("python-webob" ,python-webob)))
10253 (home-page
10254 "https://github.com/gawel/WSGIProxy2/")
10255 (synopsis "WSGI Proxy with various http client backends")
10256 (description "WSGI turns HTTP requests into WSGI function calls.
10257WSGIProxy turns WSGI function calls into HTTP requests.
10258It also includes code to sign requests and pass private data,
10259and to spawn subprocesses to handle requests.")
f210e944 10260 (license license:expat)))
778a284b
CAW
10261
10262(define-public python2-wsgiproxy2
f210e944 10263 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
10264
10265(define-public python-pastedeploy
10266 (package
10267 (name "python-pastedeploy")
10268 (version "1.5.2")
10269 (source
10270 (origin
10271 (method url-fetch)
10272 (uri (pypi-uri "PasteDeploy" version))
10273 (sha256
10274 (base32
10275 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
10276 (build-system python-build-system)
10277 (native-inputs
10278 `(("python-nose" ,python-nose)))
bb7518b1
CAW
10279 (home-page "http://pythonpaste.org/deploy/")
10280 (synopsis
10281 "Load, configure, and compose WSGI applications and servers")
10282 (description
10283 "This tool provides code to load WSGI applications and servers from URIs;
10284these URIs can refer to Python Eggs for INI-style configuration files. Paste
10285Script provides commands to serve applications based on this configuration
10286file.")
10287 (license license:expat)))
10288
10289(define-public python2-pastedeploy
10290 (package-with-python2 python-pastedeploy))
1cf53652 10291
c4a7904c
CAW
10292(define-public python-paste
10293 (package
10294 (name "python-paste")
ba1731da 10295 (version "2.0.3")
c4a7904c
CAW
10296 (source
10297 (origin
10298 (method url-fetch)
10299 (uri (pypi-uri "Paste" version))
10300 (sha256
10301 (base32
ba1731da 10302 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
fc1adab1
AK
10303 (patches (search-patches "python-paste-remove-website-test.patch"
10304 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
10305 (build-system python-build-system)
10306 (native-inputs
10307 `(("python-nose" ,python-nose)))
10308 (propagated-inputs
f3b98f4f 10309 `(("python-six" ,python-six)))
c4a7904c
CAW
10310 (home-page "http://pythonpaste.org")
10311 (synopsis
10312 "Python web development tools, focusing on WSGI")
10313 (description
10314 "Paste provides a variety of web development tools and middleware which
10315can be nested together to build web applications. Paste's design closely
10316follows ideas flowing from WSGI (Web Standard Gateway Interface).")
ba1731da 10317 (license license:expat)))
c4a7904c
CAW
10318
10319(define-public python2-paste
ba1731da 10320 (package-with-python2 python-paste))
c4a7904c 10321
a8f20f63
CAW
10322(define-public python-pastescript
10323 (package
10324 (name "python-pastescript")
10325 (version "2.0.2")
10326 (source
10327 (origin
10328 (method url-fetch)
10329 (uri (pypi-uri "PasteScript" version))
10330 (sha256
10331 (base32
10332 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
10333 (build-system python-build-system)
10334 (native-inputs
10335 `(("python-nose" ,python-nose)))
10336 (propagated-inputs
f3b98f4f 10337 `(("python-paste" ,python-paste)
a8f20f63
CAW
10338 ("python-pastedeploy" ,python-pastedeploy)))
10339 (home-page "http://pythonpaste.org/script/")
10340 (arguments
10341 '(;; Unfortunately, this requires the latest unittest2,
10342 ;; but that requires traceback2 which requires linecache2 which requires
10343 ;; unittest2. So we're skipping tests for now.
10344 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
10345 ;; so in theory we could get around this situation somehow.)
10346 #:tests? #f))
10347 (synopsis
10348 "Pluggable command line tool for serving web applications and more")
10349 (description
10350 "PasteScript is a plugin-friendly command line tool which provides a
10351variety of features, from launching web applications to bootstrapping project
10352layouts.")
10353 (license license:expat)))
10354
10355(define-public python2-pastescript
10356 (package-with-python2 python-pastescript))
10357
1cf53652
CAW
10358(define-public python-pyquery
10359 (package
10360 (name "python-pyquery")
ab0c3429 10361 (version "1.2.17")
1cf53652
CAW
10362 (source
10363 (origin
10364 (method url-fetch)
10365 (uri (pypi-uri "pyquery" version))
10366 (sha256
10367 (base32
ab0c3429 10368 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
1cf53652 10369 (build-system python-build-system)
2ddbfa8c
LF
10370 (native-inputs
10371 `(("python-webob" ,python-webob)
10372 ("python-webtest" ,python-webtest)))
1cf53652
CAW
10373 (propagated-inputs
10374 `(("python-lxml" ,python-lxml)
10375 ("python-cssselect" ,python-cssselect)))
10376 (home-page "https://github.com/gawel/pyquery")
10377 (synopsis "Make jQuery-like queries on xml documents")
10378 (description "pyquery allows you to make jQuery queries on xml documents.
10379The API is as much as possible the similar to jQuery. pyquery uses lxml for
10380fast xml and html manipulation.")
f210e944 10381 (license license:bsd-3)))
1cf53652
CAW
10382
10383(define-public python2-pyquery
f210e944 10384 (package-with-python2 python-pyquery))
aa6313d6
CAW
10385
10386(define-public python-webtest
10387 (package
10388 (name "python-webtest")
10389 (version "2.0.20")
10390 (source
10391 (origin
10392 (method url-fetch)
10393 (uri (pypi-uri "WebTest" version))
10394 (sha256
10395 (base32
10396 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
10397 (build-system python-build-system)
10398 (arguments
10399 `(;; Unfortunately we have to disable tests!
10400 ;; This release of WebTest is pinned to python-nose < 1.3,
10401 ;; but older versions of python-nose are plagued with the following
10402 ;; bug(s), which rears its ugly head during test execution:
10403 ;; https://github.com/nose-devs/nose/issues/759
10404 ;; https://github.com/nose-devs/nose/pull/811
10405 #:tests? #f))
10406 ;; Commented out code is no good, but in this case, once tests
10407 ;; are ready to be enabled again, we should put the following
10408 ;; in place:
10409 ;; (native-inputs
10410 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
10411 ;; ; but see above comment
10412 ;; ("python-coverage" ,python-coverage)
10413 ;; ("python-mock" ,python-mock)
10414 ;; ("python-pastedeploy" ,python-pastedeploy)
10415 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
10416 ;; ("python-pyquery" ,python-pyquery)))
10417 (propagated-inputs
10418 `(("python-waitress" ,python-waitress)
10419 ("python-webob" ,python-webob)
10420 ("python-six" ,python-six)
10421 ("python-beautifulsoup4" ,python-beautifulsoup4)))
10422 (home-page "http://webtest.pythonpaste.org/")
10423 (synopsis "Helper to test WSGI applications")
10424 (description "Webtest allows you to test your Python web applications
10425without starting an HTTP server. It supports anything that supports the
10426minimum of WSGI.")
f210e944 10427 (license license:expat)))
aa6313d6
CAW
10428
10429(define-public python2-webtest
f210e944 10430 (package-with-python2 python-webtest))
4cb122cd
CAW
10431
10432(define-public python-anyjson
10433 (package
10434 (name "python-anyjson")
10435 (version "0.3.3")
10436 (source
10437 (origin
10438 (method url-fetch)
10439 (uri (pypi-uri "anyjson" version))
10440 (sha256
10441 (base32
10442 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
10443 (build-system python-build-system)
10444 (arguments
10445 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
10446 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
10447 ;; whatever) so this transformation needs to be done before the tests
10448 ;; can be run. Maybe we could add a build step to transform beforehand
10449 ;; but it could be annoying/difficult.
10450 ;; We can enable tests for the Python 2 version, though, and do below.
10451 #:tests? #f))
10452 (home-page "http://bitbucket.org/runeh/anyjson/")
10453 (synopsis
10454 "Wraps best available JSON implementation in a common interface")
10455 (description
10456 "Anyjson loads whichever is the fastest JSON module installed
10457and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 10458 (license license:bsd-3)
4cb122cd
CAW
10459 (properties `((python2-variant . ,(delay python2-anyjson))))))
10460
10461(define-public python2-anyjson
10462 (let ((anyjson (package-with-python2
10463 (strip-python2-variant python-anyjson))))
10464 (package
10465 (inherit anyjson)
10466 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
10467 #:tests? #t
10468 ,@(package-arguments anyjson)))
00e10c6e 10469 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
10470
10471(define-public python-amqp
10472 (package
10473 (name "python-amqp")
10474 (version "1.4.9")
10475 (source
10476 (origin
10477 (method url-fetch)
10478 (uri (pypi-uri "amqp" version))
10479 (sha256
10480 (base32
10481 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
10482 (build-system python-build-system)
10483 (native-inputs
10484 `(("python-nose" ,python-nose)
10485 ("python-mock" ,python-mock)))
7bf837fd 10486 (home-page "https://github.com/celery/py-amqp")
8dfceab7
CAW
10487 (synopsis
10488 "Low-level AMQP client for Python (fork of amqplib)")
10489 (description
10490 "This is a fork of amqplib which was originally written by Barry Pederson.
10491It is maintained by the Celery project, and used by kombu as a pure python
10492alternative when librabbitmq is not available.")
3f641af0 10493 (license license:lgpl2.1+)
8dfceab7
CAW
10494 (properties `((python2-variant . ,(delay python2-amqp))))))
10495
10496(define-public python2-amqp
10497 (let ((amqp (package-with-python2
10498 (strip-python2-variant python-amqp))))
10499 (package
10500 (inherit amqp)
10501 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
10502 ;; unmaintained. Weirdly, does not do this on the python 3
10503 ;; version?
10504 #:tests? #f
00e10c6e 10505 ,@(package-arguments amqp))))))
7d387305
CAW
10506
10507(define-public python-kombu
10508 (package
10509 (name "python-kombu")
0cb59822 10510 (version "3.0.37")
7d387305
CAW
10511 (source
10512 (origin
10513 (method url-fetch)
10514 (uri (pypi-uri "kombu" version))
10515 (sha256
10516 (base32
0cb59822 10517 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
10518 (build-system python-build-system)
10519 (native-inputs
10520 `(("python-mock" ,python-mock)
10521 ("python-nose" ,python-nose)))
10522 (propagated-inputs
10523 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
10524 ("python-amqp" ,python-amqp)
10525 ("python-redis" ,python-redis)))
7d387305
CAW
10526 (home-page "http://kombu.readthedocs.org")
10527 (synopsis "Message passing library for Python")
10528 (description "The aim of Kombu is to make messaging in Python as easy as
10529possible by providing an idiomatic high-level interface for the AMQ protocol,
10530and also provide proven and tested solutions to common messaging problems.
10531AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
10532message orientation, queuing, routing, reliability and security, for which the
10533RabbitMQ messaging server is the most popular implementation.")
3f641af0 10534 (license license:bsd-3)
7d387305
CAW
10535 (properties `((python2-variant . ,(delay python2-kombu))))))
10536
10537(define-public python2-kombu
10538 (let ((kombu (package-with-python2
10539 (strip-python2-variant python-kombu))))
10540 (package
10541 (inherit kombu)
752eb9e0
MB
10542 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
10543 ;; It works fine on the python3 variant.
10544 #:tests? #f
10545 ,@(package-arguments kombu)))
328bb95d
HG
10546 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10547 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
10548
10549(define-public python-billiard
10550 (package
10551 (name "python-billiard")
a6bb9e44 10552 (version "3.3.0.23")
b6f0b9fb
CAW
10553 (source
10554 (origin
10555 (method url-fetch)
10556 (uri (pypi-uri "billiard" version))
10557 (sha256
10558 (base32
a6bb9e44 10559 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
10560 (build-system python-build-system)
10561 (native-inputs
10562 `(("python-nose" ,python-nose)))
7bf837fd 10563 (home-page "https://github.com/celery/billiard")
b6f0b9fb
CAW
10564 (synopsis
10565 "Python multiprocessing fork with improvements and bugfixes")
10566 (description
10567 "Billiard is a fork of the Python 2.7 multiprocessing package. The
10568multiprocessing package itself is a renamed and updated version of R Oudkerk's
10569pyprocessing package. This standalone variant is intended to be compatible with
10570Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 10571 (license license:bsd-3)
b6f0b9fb
CAW
10572 (properties `((python2-variant . ,(delay python2-billiard))))))
10573
10574(define-public python2-billiard
10575 (let ((billiard (package-with-python2
10576 (strip-python2-variant python-billiard))))
10577 (package
10578 (inherit billiard)
00e10c6e 10579 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
10580 ("python2-mock" ,python2-mock)
10581 ,@(package-native-inputs billiard))))))
22df6419
CAW
10582
10583(define-public python-celery
10584 (package
10585 (name "python-celery")
9ebe87fe 10586 (version "3.1.24")
22df6419
CAW
10587 (source
10588 (origin
10589 (method url-fetch)
10590 (uri (pypi-uri "celery" version))
10591 (sha256
10592 (base32
9ebe87fe 10593 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 10594 (build-system python-build-system)
9ebe87fe
LF
10595 (arguments
10596 `(#:phases
10597 (modify-phases %standard-phases
10598 ;; These tests break with Python 3.5:
10599 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
10600 (replace 'check
10601 (lambda _
10602 (zero?
10603 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
10604 (native-inputs
10605 `(("python-nose" ,python-nose)))
f22efa01 10606 (propagated-inputs
22df6419
CAW
10607 `(("python-pytz" ,python-pytz)
10608 ("python-billiard" ,python-billiard)
10609 ("python-kombu" ,python-kombu)))
10610 (home-page "http://celeryproject.org")
10611 (synopsis "Distributed Task Queue")
10612 (description "Celery is an asynchronous task queue/job queue based on
10613distributed message passing. It is focused on real-time operation, but
10614supports scheduling as well. The execution units, called tasks, are executed
10615concurrently on a single or more worker servers using multiprocessing,
10616Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
10617synchronously (wait until ready).")
3f641af0 10618 (license license:bsd-3)
22df6419
CAW
10619 (properties `((python2-variant . ,(delay python2-celery))))))
10620
10621(define-public python2-celery
10622 (let ((celery (package-with-python2
10623 (strip-python2-variant python-celery))))
10624 (package
10625 (inherit celery)
00e10c6e 10626 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
10627 ("python2-mock" ,python2-mock)
10628 ,@(package-native-inputs celery))))))
97e32948
CAW
10629
10630(define-public python-translitcodec
10631 (package
10632 (name "python-translitcodec")
10633 (version "0.4.0")
10634 (source
10635 (origin
10636 (method url-fetch)
10637 (uri (pypi-uri "translitcodec" version))
10638 (sha256
10639 (base32
10640 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
10641 (build-system python-build-system)
10642 (arguments
10643 `(#:tests? #f)) ; no tests provided
10644 (home-page
10645 "https://github.com/claudep/translitcodec")
10646 (synopsis
10647 "Unicode to 8-bit charset transliteration codec")
10648 (description
10649 "This package contains codecs for transliterating ISO 10646 texts into
10650best-effort representations using smaller coded character sets (ASCII,
10651ISO 8859, etc.).")
f210e944 10652 (license license:expat)))
97e32948
CAW
10653
10654(define-public python2-translitcodec
f210e944 10655 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
10656
10657(define-public python-editor
10658 (package
10659 (name "python-editor")
10660 (version "0.5")
10661 (source
10662 (origin
10663 (method url-fetch)
10664 (uri (pypi-uri "python-editor" version))
10665 (sha256
10666 (base32
10667 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
10668 (build-system python-build-system)
10669 (home-page
10670 "https://github.com/fmoo/python-editor")
10671 (synopsis
10672 "Programmatically open an editor, capture the result")
10673 (description
10674 "python-editor is a library that provides the editor module for
10675programmatically interfacing with your system's $EDITOR.")
f210e944 10676 (license license:asl2.0)))
0c3b90d4
CAW
10677
10678(define-public python2-editor
f210e944 10679 (package-with-python2 python-editor))
3276517c
LF
10680
10681(define-public python-sphinxcontrib-programoutput
10682 (package
10683 (name "python-sphinxcontrib-programoutput")
b9ce9eca 10684 (version "0.10")
3276517c
LF
10685 (source (origin
10686 (method url-fetch)
10687 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10688 (sha256
10689 (base32
b9ce9eca 10690 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
3276517c 10691 (build-system python-build-system)
e2cb140e
MB
10692 (arguments
10693 ;; FIXME: Many tests are failing and the upstream is gone.
10694 '(#:tests? #f))
3276517c 10695 (propagated-inputs
a0a09859 10696 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
10697 (synopsis "Sphinx extension to include program output")
10698 (description "A Sphinx extension to literally insert the output of arbitrary
10699commands into documents, helping you to keep your command examples up to date.")
10700 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 10701 (license license:bsd-2)))
3276517c
LF
10702
10703(define-public python2-sphinxcontrib-programoutput
f210e944 10704 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
10705
10706(define-public python-sphinx-repoze-autointerface
10707 (package
10708 (name "python-sphinx-repoze-autointerface")
328ae341 10709 (version "0.8")
548d7165
LF
10710 (source (origin
10711 (method url-fetch)
10712 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10713 (sha256
10714 (base32
328ae341 10715 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165 10716 (build-system python-build-system)
5b3c3d4b 10717 (arguments '(#:tests? #f)) ; No tests.
548d7165 10718 (propagated-inputs
47c7dc4a 10719 `(("python-sphinx" ,python-sphinx)
548d7165
LF
10720 ("python-zope-interface" ,python-zope-interface)))
10721 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
10722 (description "This package defines an extension for the Sphinx documentation
10723system. The extension allows generation of API documentation by
10724introspection of @code{zope.interface} instances in code.")
10725 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 10726 (license license:repoze)))
548d7165
LF
10727
10728(define-public python2-sphinx-repoze-autointerface
10729 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
10730
10731(define-public python-psycopg2
10732 (package
10733 (name "python-psycopg2")
8e718963 10734 (version "2.6.2")
b31fbea5
DM
10735 (source
10736 (origin
10737 (method url-fetch)
10738 (uri (pypi-uri "psycopg2" version))
10739 (sha256
10740 (base32
8e718963 10741 "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
b31fbea5
DM
10742 (build-system python-build-system)
10743 (arguments
10744 ;; Tests would require a postgresql database "psycopg2_test"
10745 ;; and a running postgresql database management service.
10746 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
10747 (inputs
10748 `(("postgresql" ,postgresql))) ; libpq
10749 (home-page "http://initd.org/psycopg/")
10750 (synopsis "Python PostgreSQL adapter")
10751 (description
10752 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 10753 (license license:lgpl3+)))
b31fbea5
DM
10754
10755(define-public python2-psycopg2
f210e944 10756 (package-with-python2 python-psycopg2))
eed1a61f
LF
10757
10758(define-public python-vobject
10759 (package
10760 (name "python-vobject")
e00a5909 10761 (version "0.9.5")
eed1a61f
LF
10762 (source (origin
10763 (method url-fetch)
10764 (uri (pypi-uri "vobject" version))
10765 (sha256
10766 (base32
e00a5909 10767 "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg"))))
eed1a61f 10768 (build-system python-build-system)
a9871b7b
LF
10769 (arguments
10770 '(;; The test suite relies on some non-portable Windows interfaces.
10771 #:tests? #f))
f22efa01 10772 (propagated-inputs
22d7360b 10773 `(("python-dateutil" ,python-dateutil)
eed1a61f
LF
10774 ("python-pyicu" ,python-pyicu)))
10775 (synopsis "Parse and generate vCard and vCalendar files")
10776 (description "Vobject is intended to be a full featured Python package for
10777parsing and generating vCard and vCalendar files. Currently, iCalendar files
10778are supported and well tested. vCard 3.0 files are supported, and all data
10779should be imported, but only a few components are understood in a sophisticated
10780way.")
10781 (home-page "http://eventable.github.io/vobject/")
f210e944 10782 (license license:asl2.0)))
eed1a61f
LF
10783
10784(define-public python2-vobject
f210e944 10785 (package-with-python2 python-vobject))
cedac813
LF
10786
10787(define-public python-munkres
10788 (package
10789 (name "python-munkres")
38e81a2c 10790 (version "1.0.8")
cedac813
LF
10791 (source (origin
10792 (method url-fetch)
10793 (uri (pypi-uri "munkres" version))
10794 (sha256
10795 (base32
38e81a2c 10796 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
10797 (build-system python-build-system)
10798 (arguments
10799 '(#:tests? #f)) ; no test suite
10800 (home-page "http://software.clapper.org/munkres/")
10801 (synopsis "Implementation of the Munkres algorithm")
10802 (description "The Munkres module provides an implementation of the Munkres
10803algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
10804useful for solving the Assignment Problem.")
3f641af0 10805 (license license:bsd-3)))
cedac813
LF
10806
10807(define-public python2-munkres
10808 (package-with-python2 python-munkres))
f3b3d78f
LF
10809
10810(define-public python-flask
10811 (package
10812 (name "python-flask")
c6c80104 10813 (version "0.11.1")
f3b3d78f
LF
10814 (source (origin
10815 (method url-fetch)
10816 (uri (pypi-uri "Flask" version))
10817 (sha256
10818 (base32
c6c80104 10819 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
10820 (build-system python-build-system)
10821 (propagated-inputs
10822 `(("python-itsdangerous" ,python-itsdangerous)
10823 ("python-jinja2" ,python-jinja2)
8f35c030 10824 ("python-click" ,python-click)
f3b3d78f
LF
10825 ("python-werkzeug" ,python-werkzeug)))
10826 (home-page "https://github.com/mitsuhiko/flask/")
10827 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
10828 (description "Flask is a micro web framework based on the Werkzeug toolkit
10829and Jinja2 template engine. It is called a micro framework because it does not
10830presume or force a developer to use a particular tool or library.")
f210e944 10831 (license license:bsd-3)))
f3b3d78f
LF
10832
10833(define-public python2-flask
f210e944 10834 (package-with-python2 python-flask))
603d665b 10835
a7ad802b 10836(define-public python-flask-wtf
10837 (package
10838 (name "python-flask-wtf")
10839 (version "0.13.1")
10840 (source
10841 (origin
10842 (method url-fetch)
10843 (uri (pypi-uri "Flask-WTF" version))
10844 (sha256
10845 (base32
10846 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
10847 (build-system python-build-system)
d296d300
MB
10848 (arguments
10849 '(#:phases
10850 (modify-phases %standard-phases
10851 (add-before 'check 'drop-failing-test
10852 (lambda _
10853 ;; FIXME: This file tries resolving an external server, which
10854 ;; fails. Try to patch out the offending section instead of
10855 ;; deleting the whole thing.
10856 (delete-file "tests/test_recaptcha.py")
10857 #t)))))
a7ad802b 10858 (propagated-inputs
10859 `(("python-flask-babel" ,python-flask-babel)
10860 ("python-babel" ,python-babel)
10861 ("python-wtforms" ,python-wtforms)))
10862 (native-inputs
10863 `(("python-nose" ,python-nose)))
10864 (home-page "https://github.com/lepture/flask-wtf")
10865 (synopsis "Simple integration of Flask and WTForms")
10866 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
10867upload, and reCAPTCHA.")
10868 (license license:bsd-3)))
10869
10870(define-public python2-flask-wtf
10871 (package-with-python2 python-flask-wtf))
10872
a2c7d88e 10873(define-public python-flask-multistatic
10874 (package
10875 (name "python-flask-multistatic")
10876 (version "1.0")
10877 (source
10878 (origin
10879 (method url-fetch)
10880 (uri (pypi-uri "flask-multistatic" version))
10881 (sha256
10882 (base32
10883 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
10884 (build-system python-build-system)
10885 (propagated-inputs
10886 `(("python-flask" ,python-flask)))
10887 (home-page "https://pagure.io/flask-multistatic")
10888 (synopsis "Flask plugin to allow overriding static files")
10889 (description "@code{flask-multistatic} is a flask plugin that adds support
10890for overriding static files.")
10891 (license license:gpl3+)))
10892
10893(define-public python2-flask-multistatic
10894 (package-with-python2 python-flask-multistatic))
10895
603d665b
LF
10896(define-public python-cookies
10897 (package
10898 (name "python-cookies")
10899 (version "2.2.1")
10900 (source (origin
10901 (method url-fetch)
10902 (uri (pypi-uri "cookies" version))
10903 (sha256
10904 (base32
10905 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
10906 (build-system python-build-system)
10907 (arguments
10908 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
10909 #:tests? #f))
10910 (native-inputs
10911 `(("python-pytest" ,python2-pytest)))
10912 (synopsis "HTTP cookie parser and renderer")
10913 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
10914Python.")
10915 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 10916 (license license:expat)))
603d665b
LF
10917
10918(define-public python2-cookies
f210e944 10919 (package-with-python2 python-cookies))
0efde7d6
LF
10920
10921(define-public python-responses
10922 (package
10923 (name "python-responses")
10924 (version "0.5.1")
10925 (source (origin
10926 (method url-fetch)
10927 (uri (pypi-uri "responses" version))
10928 (sha256
10929 (base32
10930 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
10931 (build-system python-build-system)
10932 (arguments
10933 `(;; Test suite is not distributed:
10934 ;; https://github.com/getsentry/responses/issues/38
10935 #:tests? #f))
10936 (native-inputs
d8ea5f2f 10937 `(("python-mock" ,python-mock)))
0efde7d6
LF
10938 (propagated-inputs
10939 `(("python-requests" ,python-requests)
d8ea5f2f 10940 ("python-cookies" ,python-cookies)
0efde7d6
LF
10941 ("python-six" ,python-six)))
10942 (home-page "https://github.com/getsentry/responses")
10943 (synopsis "Utility for mocking out the `requests` Python library")
10944 (description "A utility library for mocking out the `requests` Python
10945library.")
f210e944 10946 (license license:asl2.0)))
0efde7d6
LF
10947
10948(define-public python2-responses
f210e944 10949 (package-with-python2 python-responses))
76b94885 10950
b7afd018
RW
10951(define-public python-whoosh
10952 (package
10953 (name "python-whoosh")
10954 (version "2.7.4")
10955 (source
10956 (origin
10957 (method url-fetch)
10958 (uri (pypi-uri "Whoosh" version))
10959 (sha256
10960 (base32
10961 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
10962 (build-system python-build-system)
10963 (native-inputs
f3b98f4f 10964 `(("python-pytest" ,python-pytest)))
b7afd018
RW
10965 (home-page "http://bitbucket.org/mchaput/whoosh")
10966 (synopsis "Full text indexing, search, and spell checking library")
10967 (description
10968 "Whoosh is a fast, pure-Python full text indexing, search, and spell
10969checking library.")
10970 (license license:bsd-2)))
10971
10972(define-public python2-whoosh
10973 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
10974 (package (inherit whoosh)
10975 (propagated-inputs
10976 `(("python2-backport-ssl-match-hostname"
10977 ,python2-backport-ssl-match-hostname)
10978 ,@(package-propagated-inputs whoosh))))))
10979
76b94885
LF
10980(define-public python-pathlib
10981 (package
10982 (name "python-pathlib")
10983 (version "1.0.1")
10984 (source (origin
10985 (method url-fetch)
10986 (uri (pypi-uri "pathlib" version))
10987 (sha256
10988 (base32
10989 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
10990 (build-system python-build-system)
92a312dc
RW
10991 ;; The tests depend on the internal "test" module, which does not provide
10992 ;; a stable interface.
10993 (arguments `(#:tests? #f))
76b94885 10994 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
10995 (synopsis "Object-oriented file system paths")
10996 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
10997It offers the following advantages over using string objects:
10998
10999@enumerate
11000@item No more cumbersome use of os and os.path functions. Everything can
11001be done easily through operators, attribute accesses, and method calls.
11002@item Embodies the semantics of different path types. For example,
11003comparing Windows paths ignores casing.
11004@item Well-defined semantics, eliminating any inconsistencies or
11005ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
11006@end enumerate
11007
11008Note: In Python 3.4, pathlib is now part of the standard library. For other
11009Python versions please consider python-pathlib2 instead, which tracks the
11010standard library module. This module (python-pathlib) isn't maintained
11011anymore.")
76b94885
LF
11012 (license license:expat)))
11013
11014(define-public python2-pathlib
11015 (package-with-python2 python-pathlib))
25a7db0a 11016
b7703c81
HG
11017(define-public python2-pathlib2
11018 (package
11019 (name "python2-pathlib2")
11020 (version "2.1.0")
11021 (source (origin
11022 (method url-fetch)
11023 (uri (pypi-uri "pathlib2" version))
11024 (sha256
11025 (base32
11026 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
11027 (build-system python-build-system)
49a531f5
HG
11028 ;; We only need the the Python 2 variant, since for Python 3 our minimum
11029 ;; version is 3.4 which already includes this package as part of the
11030 ;; standard library.
b7703c81
HG
11031 (arguments
11032 `(#:python ,python-2))
11033 (native-inputs
f3b98f4f 11034 `(("python2-six" ,python2-six)))
b7703c81
HG
11035 (home-page "http://pypi.python.org/pypi/pathlib2/")
11036 (synopsis "Object-oriented file system paths - backport of standard
11037pathlib module")
11038 (description "The goal of pathlib2 is to provide a backport of standard
11039pathlib module which tracks the standard library module, so all the newest
11040features of the standard pathlib can be used also on older Python versions.
11041
11042Pathlib offers a set of classes to handle file system paths. It offers the
11043following advantages over using string objects:
11044
11045@enumerate
11046@item No more cumbersome use of os and os.path functions. Everything can
11047be done easily through operators, attribute accesses, and method calls.
11048@item Embodies the semantics of different path types. For example,
11049comparing Windows paths ignores casing.
11050@item Well-defined semantics, eliminating any inconsistencies or
11051ambiguities (forward vs. backward slashes, etc.).
11052@end enumerate")
11053 (license license:expat)))
11054
25a7db0a
LF
11055(define-public python-jellyfish
11056 (package
11057 (name "python-jellyfish")
8c4964dd 11058 (version "0.5.6")
25a7db0a
LF
11059 (source (origin
11060 (method url-fetch)
11061 (uri (pypi-uri "jellyfish" version))
11062 (sha256
11063 (base32
8c4964dd 11064 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
11065 (build-system python-build-system)
11066 (native-inputs
11067 `(("python-pytest" ,python-pytest)))
11068 (home-page "https://github.com/jamesturk/jellyfish")
11069 (synopsis "Approximate and phonetic matching of strings")
11070 (description "Jellyfish uses a variety of string comparison and phonetic
11071encoding algorithms to do fuzzy string matching.")
3f641af0 11072 (license license:bsd-2)
25a7db0a
LF
11073 (properties `((python2-variant . ,(delay python2-jellyfish))))))
11074
11075(define-public python2-jellyfish
11076 (let ((jellyfish (package-with-python2
11077 (strip-python2-variant python-jellyfish))))
11078 (package (inherit jellyfish)
00e10c6e 11079 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 11080 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
11081
11082(define-public python2-unicodecsv
11083 (package
11084 (name "python2-unicodecsv")
11085 (version "0.14.1")
11086 (source (origin
11087 (method url-fetch)
11088 ;; The test suite is not included in the PyPi release.
11089 ;; https://github.com/jdunck/python-unicodecsv/issues/19
11090 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
11091 "archive/" version ".tar.gz"))
11092 (file-name (string-append name "-" version ".tar.gz"))
11093 (sha256
11094 (base32
11095 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
11096 (build-system python-build-system)
11097 (arguments
11098 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
11099 #:python ,python-2))
11100 (native-inputs
f3b98f4f 11101 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
11102 (home-page "https://github.com/jdunck/python-unicodecsv")
11103 (synopsis "Unicode CSV module for Python 2")
11104 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
11105module, adding support for Unicode strings.")
3f641af0 11106 (license license:bsd-2)))
064503aa
LF
11107
11108(define-public python-rarfile
11109 (package
11110 (name "python-rarfile")
67824447 11111 (version "2.8")
064503aa
LF
11112 (source (origin
11113 (method url-fetch)
11114 (uri (pypi-uri "rarfile" version))
11115 (sha256
11116 (base32
67824447 11117 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
11118 (build-system python-build-system)
11119 (arguments
11120 '(#:phases
11121 (modify-phases %standard-phases
11122 (replace 'check
11123 ;; Many tests fail, but the installation proceeds.
11124 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
11125 (native-inputs
11126 `(("which" ,which))) ; required for tests
11127 (propagated-inputs
11128 `(("libarchive" ,libarchive)))
11129 (home-page "https://github.com/markokr/rarfile")
11130 (synopsis "RAR archive reader for Python")
11131 (description "This is Python module for RAR archive reading. The interface
11132is made as zipfile like as possible.")
3f641af0 11133 (license license:isc)))
064503aa
LF
11134
11135(define-public python2-rarfile
11136 (package-with-python2 python-rarfile))
daeeea71
CM
11137
11138(define-public python-magic
11139 (package
11140 (name "python-magic")
11141 (version "0.4.3")
11142 (source
11143 (origin
11144 (method url-fetch)
11145 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
11146 version ".tar.gz"))
11147 (sha256
11148 (base32
11149 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
11150 (file-name (string-append name "-" version "-checkout"))))
11151 (build-system python-build-system)
11152 (arguments
11153 ;; The tests are unreliable, so don't run them. The tests fail
11154 ;; under Python3 because they were written for Python2 and
11155 ;; contain import statements that do not work in Python3. One of
11156 ;; the tests fails under Python2 because its assertions are
11157 ;; overly stringent; it relies on comparing output strings which
11158 ;; are brittle and can change depending on the version of
11159 ;; libmagic being used and the system on which the test is
11160 ;; running. In my case, under GuixSD 0.10.0, only one test
11161 ;; failed, and it seems to have failed only because the version
11162 ;; of libmagic that is packaged in Guix outputs a slightly
11163 ;; different (but not wrong) string than the one that the test
11164 ;; expected.
11165 '(#:tests? #f
11166 #:phases (modify-phases %standard-phases
11167 ;; Replace a specific method call with a hard-coded
11168 ;; path to the necessary libmagic.so file in the
11169 ;; store. If we don't do this, then the method call
11170 ;; will fail to find the libmagic.so file, which in
11171 ;; turn will cause any application using
11172 ;; python-magic to fail.
11173 (add-before 'build 'hard-code-path-to-libmagic
11174 (lambda* (#:key inputs #:allow-other-keys)
11175 (let ((file (assoc-ref inputs "file")))
11176 (substitute* "magic.py"
11177 (("ctypes.util.find_library\\('magic'\\)")
11178 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
11179 #t)))
11180 (add-before 'install 'disable-egg-compression
11181 (lambda _
11182 (let ((port (open-file "setup.cfg" "a")))
11183 (display "\n[easy_install]\nzip_ok = 0\n"
11184 port)
11185 (close-port port)
11186 #t))))))
daeeea71
CM
11187 (inputs
11188 ;; python-magic needs to be able to find libmagic.so.
11189 `(("file" ,file)))
11190 (home-page "https://github.com/ahupp/python-magic")
11191 (synopsis "File type identification using libmagic")
11192 (description
11193 "This module uses ctypes to access the libmagic file type
11194identification library. It makes use of the local magic database and
11195supports both textual and MIME-type output. Note that this module and
11196the python-file module both provide a \"magic.py\" file; these two
11197modules, which are different and were developed separately, both serve
11198the same purpose: to provide Python bindings for libmagic.")
11199 (license license:expat)))
11200
11201(define-public python2-magic
11202 (package-with-python2 python-magic))
12af303f
CM
11203
11204(define-public python2-s3cmd
11205 (package
11206 (name "python2-s3cmd")
11207 (version "1.6.1")
11208 (source
11209 (origin
11210 (method url-fetch)
de67e922 11211 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
11212 "s3cmd-" version ".tar.gz"))
11213 (sha256
11214 (base32
11215 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
11216 (build-system python-build-system)
11217 (arguments
11218 ;; s3cmd is written for python2 only and contains no tests.
11219 `(#:python ,python-2
11220 #:tests? #f))
f22efa01 11221 (propagated-inputs
12af303f
CM
11222 `(("python2-dateutil" ,python2-dateutil)
11223 ;; The python-file package also provides a magic.py module.
11224 ;; This is an unfortunate state of affairs; however, s3cmd
11225 ;; fails to install if it cannot find specifically the
11226 ;; python-magic package. Thus we include it, instead of using
11227 ;; python-file. Ironically, s3cmd sometimes works better
11228 ;; without libmagic bindings at all:
11229 ;; https://github.com/s3tools/s3cmd/issues/198
11230 ("python2-magic" ,python2-magic)))
11231 (home-page "http://s3tools.org/s3cmd")
11232 (synopsis "Command line tool for S3-compatible storage services")
11233 (description
11234 "S3cmd is a command line tool for uploading, retrieving and managing data
11235in storage services that are compatible with the Amazon Simple Storage
11236Service (S3) protocol, including S3 itself. It supports rsync-like backup,
11237GnuPG encryption, and more. It also supports management of Amazon's
11238CloudFront content delivery network.")
3f641af0 11239 (license license:gpl2+)))
4323a5f0
AE
11240
11241(define-public python-pkgconfig
11242 (package
11243 (name "python-pkgconfig")
11244 (version "1.1.0")
11245 (source
11246 (origin
11247 (method url-fetch)
11248 (uri (pypi-uri "pkgconfig" version))
11249 (sha256
11250 (base32
11251 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
11252 (build-system python-build-system)
11253 (native-inputs
f3b98f4f 11254 `(("python-nose" ,python-nose)))
4323a5f0
AE
11255 (inputs
11256 `(("pkg-config" ,pkg-config)))
11257 (arguments
11258 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
11259 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
11260 #:tests? #f
4323a5f0
AE
11261 ;; Hard-code the path to pkg-config.
11262 #:phases
11263 (modify-phases %standard-phases
11264 (add-before
11265 'build 'patch
11266 (lambda _
11267 (substitute* "pkgconfig/pkgconfig.py"
11268 (("cmd = 'pkg-config")
11269 (string-append "cmd = '" (which "pkg-config"))))
11270 #t)))))
7bf837fd 11271 (home-page "https://github.com/matze/pkgconfig")
4323a5f0
AE
11272 (synopsis "Python interface for pkg-config")
11273 (description "This module provides a Python interface to pkg-config. It
11274can be used to find all pkg-config packages, check if a package exists,
11275check if a package meets certain version requirements, query CFLAGS and
11276LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 11277 (license license:expat)))
4323a5f0
AE
11278
11279(define-public python2-pkgconfig
11280 (package-with-python2 python-pkgconfig))
11281
2e697322
BW
11282(define-public python-bz2file
11283 (package
11284 (name "python-bz2file")
11285 (version "0.98")
11286 (source
11287 (origin
11288 (method url-fetch)
11289 (uri (pypi-uri "bz2file" version))
11290 (sha256
11291 (base32
11292 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
11293 (build-system python-build-system)
11294 (arguments
124df723 11295 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
11296 (home-page "https://github.com/nvawda/bz2file")
11297 (synopsis "Read and write bzip2-compressed files")
11298 (description
11299 "Bz2file is a Python library for reading and writing bzip2-compressed
11300files. It contains a drop-in replacement for the I/O interface in the
11301standard library's @code{bz2} module, including features from the latest
11302development version of CPython that are not available in older releases.")
3f641af0 11303 (license license:asl2.0)
2e697322
BW
11304 (properties `((python2-variant . ,(delay python2-bz2file))))))
11305
11306(define-public python2-bz2file
11307 (let ((base (package-with-python2
11308 (strip-python2-variant python-bz2file))))
11309 (package
11310 (inherit base)
124df723 11311 (arguments
752bb447
BW
11312 `(#:python ,python-2
11313 #:phases
124df723
BW
11314 (modify-phases %standard-phases
11315 ;; 'python setup.py test' does not work as of 0.98.
11316 ;; There is only the one test file, so we run it directly.
11317 (replace 'check
11318 (lambda _ (zero? (system* "python"
11319 "test_bz2file.py"))))))))))
2e697322 11320
da4ac1aa
BW
11321(define-public python-future
11322 (package
11323 (name "python-future")
c522f57e 11324 (version "0.16.0")
da4ac1aa
BW
11325 (source
11326 (origin
11327 (method url-fetch)
11328 (uri (pypi-uri "future" version))
11329 (sha256
11330 (base32
c522f57e 11331 "1nzy1k4m9966sikp0qka7lirh8sqrsyainyf8rk97db7nwdfv773"))))
da4ac1aa
BW
11332 (build-system python-build-system)
11333 ;; Many tests connect to the network or are otherwise flawed.
11334 ;; https://github.com/PythonCharmers/python-future/issues/210
11335 (arguments
11336 `(#:tests? #f))
11337 (home-page "http://python-future.org")
11338 (synopsis "Single-source support for Python 3 and 2")
11339 (description
11340 "@code{python-future} is the missing compatibility layer between Python 2 and
11341Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
11342to support both Python 2 and Python 3 with minimal overhead.")
f210e944 11343 (license license:expat)))
da4ac1aa
BW
11344
11345(define-public python2-future
f210e944 11346 (package-with-python2 python-future))
da4ac1aa 11347
8e451885
AE
11348(define-public python-cysignals
11349 (package
11350 (name "python-cysignals")
11351 (version "1.1.0")
11352 (source
11353 (origin
11354 (method url-fetch)
11355 (uri (pypi-uri "cysignals" version ".tar.bz2"))
11356 (sha256
11357 (base32
11358 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
11359 (build-system python-build-system)
11360 (native-inputs
11361 `(("python-cython" ,python-cython)
8e451885
AE
11362 ("python-sphinx" ,python-sphinx)))
11363 (inputs
11364 `(("pari-gp" ,pari-gp)))
11365 (arguments
11366 `(#:modules ((guix build python-build-system)
11367 ((guix build gnu-build-system) #:prefix gnu:)
11368 (guix build utils))
11369 ;; FIXME: Tests are executed after installation and currently fail
11370 ;; when not installing into standard locations; the author is working
11371 ;; on a fix.
11372 #:tests? #f
11373 #:phases
11374 (modify-phases %standard-phases
11375 (add-before
11376 'build 'configure
11377 (assoc-ref gnu:%standard-phases 'configure)))))
11378 (home-page
11379 "https://github.com/sagemath/cysignals")
11380 (synopsis
11381 "Handling of interrupts and signals for Cython")
11382 (description
11383 "The cysignals package provides mechanisms to handle interrupts (and
11384other signals and errors) in Cython code, using two related approaches,
11385for mixed Cython/Python code or external C libraries and pure Cython code,
11386respectively.")
3f641af0 11387 (license license:lgpl3+)))
8e451885
AE
11388
11389(define-public python2-cysignals
11390 (package-with-python2 python-cysignals))
11391
63bcec71
DM
11392(define-public python2-shedskin
11393 (package
11394 (name "python2-shedskin")
11395 (version "0.9.4")
11396 (source
11397 (origin
11398 (method url-fetch)
11399 (uri (string-append "https://github.com/shedskin/shedskin/"
11400 "releases/download/v" version
11401 "/shedskin-" version ".tgz"))
11402 (sha256
11403 (base32
11404 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
11405 (build-system python-build-system)
11406 (arguments
11407 `(#:python ,python-2
11408 #:phases (modify-phases %standard-phases
11409 (add-after 'unpack 'fix-resulting-include-libs
11410 (lambda* (#:key inputs #:allow-other-keys)
11411 (let ((libgc (assoc-ref inputs "libgc"))
11412 (pcre (assoc-ref inputs "pcre")))
11413 (substitute* "shedskin/makefile.py"
11414 (("variable == 'CCFLAGS':[ ]*")
11415 (string-append "variable == 'CCFLAGS':\n"
11416 " line += ' -I " pcre "/include"
11417 " -I " libgc "/include'"))
11418 (("variable == 'LFLAGS':[ ]*")
11419 (string-append "variable == 'LFLAGS':\n"
11420 " line += ' -L" pcre "/lib"
11421 " -L " libgc "/lib'")))
11422 #t))))))
63bcec71
DM
11423 (inputs `(("pcre" ,pcre)
11424 ("libgc" ,libgc)))
11425 (home-page "https://shedskin.github.io/")
11426 (synopsis "Experimental Python-2 to C++ Compiler")
11427 (description (string-append "This is an experimental compiler for a subset of
11428Python. It generates C++ code and a Makefile."))
3f641af0 11429 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
11430
11431(define-public python2-rope
11432 (package
11433 (name "python2-rope")
11434 (version "0.10.3")
11435 (source
11436 (origin
11437 (method url-fetch)
11438 (uri (pypi-uri "rope" version))
11439 (sha256
11440 (base32
11441 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
11442 (arguments
11443 ;; Rope is currently python-2 only.
11444 ;; https://github.com/python-rope/rope/issues/57
11445 `(#:python ,python-2))
11446 (build-system python-build-system)
11447 (native-inputs
f3b98f4f 11448 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
11449 (home-page "https://github.com/python-rope/rope")
11450 (synopsis "Refactoring library for Python")
11451 (description "Rope is a refactoring library for Python. It facilitates
11452the renaming, moving and extracting of attributes, functions, modules, fields
11453and parameters in Python 2 source code. These refactorings can also be applied
d1e4ad1b 11454to occurrences in strings and comments.")
3f641af0 11455 (license license:gpl2)))
6ba8ca17
11456
11457(define-public python-py3status
11458 (package
11459 (name "python-py3status")
d2262d70 11460 (version "3.1")
6ba8ca17
11461 (source
11462 (origin
11463 (method url-fetch)
11464 (uri (pypi-uri "py3status" version))
11465 (sha256
11466 (base32
d2262d70 11467 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 11468 (build-system python-build-system)
8653c1d5
MB
11469 (arguments
11470 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
6ba8ca17
11471 (home-page "https://github.com/ultrabug/py3status")
11472 (synopsis "Extensible i3status wrapper written in Python")
11473 (description "py3status is an i3status wrapper which extends i3status
11474functionality in a modular way, allowing you to extend your panel with your
11475own code, responding to click events and updating clock every second.")
3f641af0 11476 (license license:bsd-3)))
b8fdbca3
HG
11477
11478(define-public python-tblib
11479 (package
11480 (name "python-tblib")
11481 (version "1.3.0")
11482 (source (origin
11483 (method url-fetch)
11484 (uri (pypi-uri "tblib" version))
11485 (sha256 (base32
11486 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
11487 (build-system python-build-system)
11488 (arguments
11489 `(#:phases
11490 (modify-phases %standard-phases
11491 (replace 'check
11492 (lambda _
11493 ;; Upstream runs tests after installation and the package itself
11494 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
11495 ;; found.
11496 (setenv "PYTHONPATH"
11497 (string-append (getcwd) "/build/lib:"
11498 (getenv "PYTHONPATH")))
11499 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
11500 (native-inputs
11501 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
11502 ("python-six" ,python-six)))
11503 (home-page "https://github.com/ionelmc/python-tblib")
11504 (synopsis "Traceback serialization library")
11505 (description
11506 "Traceback serialization allows you to:
11507
11508@enumerate
11509@item Pickle tracebacks and raise exceptions with pickled tracebacks in
11510different processes. This allows better error handling when running code over
11511multiple processes (imagine multiprocessing, billiard, futures, celery etc).
11512
11513@item Parse traceback strings and raise with the parsed tracebacks.
9657aeb1 11514@end enumerate\n")
3f641af0 11515 (license license:bsd-3)))
b8fdbca3
HG
11516
11517(define-public python2-tblib
11518 (package-with-python2 python-tblib))
1a024de4
HG
11519
11520(define-public python-sqlparse
11521 (package
11522 (name "python-sqlparse")
11523 (version "0.1.19")
11524 (source (origin
11525 (method url-fetch)
11526 (uri (pypi-uri "sqlparse" version))
11527 (sha256
11528 (base32
11529 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
11530 (build-system python-build-system)
11531 (arguments
11532 `(#:phases
11533 (modify-phases %standard-phases
11534 (replace 'check
11535 (lambda* _
11536 ;; setup.py-integrated 2to3 only affects the build files, but
11537 ;; py.test is using the source files. So we need to convert them
11538 ;; manually.
11539 (when (zero? (system* "python3"))
11540 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
11541 (zero? (system* "py.test")))))))
11542 (native-inputs
f3b98f4f 11543 `(("python-pytest" ,python-pytest)))
1a024de4
HG
11544 (home-page "https://github.com/andialbrecht/sqlparse")
11545 (synopsis "Non-validating SQL parser")
11546 (description "Sqlparse is a non-validating SQL parser for Python. It
11547provides support for parsing, splitting and formatting SQL statements.")
3f641af0 11548 (license license:bsd-3)))
1a024de4
HG
11549
11550(define-public python2-sqlparse
11551 (package-with-python2 python-sqlparse))
68b9d242
SB
11552
11553(define-public python-greenlet
11554 (package
11555 (name "python-greenlet")
1f89fb16 11556 (version "0.4.11")
68b9d242
SB
11557 (source (origin
11558 (method url-fetch)
11559 (uri (pypi-uri "greenlet" version))
11560 (sha256
11561 (base32
1f89fb16 11562 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
68b9d242 11563 (build-system python-build-system)
68b9d242
SB
11564 (home-page "https://greenlet.readthedocs.io/")
11565 (synopsis "Lightweight in-process concurrent programming")
11566 (description
11567 "Greenlet package is a spin-off of Stackless, a version of CPython
11568that supports micro-threads called \"tasklets\". Tasklets run
11569pseudo-concurrently (typically in a single or a few OS-level threads) and
11570are synchronized with data exchanges on \"channels\".")
3f641af0 11571 (license (list license:psfl license:expat))))
68b9d242
SB
11572
11573(define-public python2-greenlet
11574 (package-with-python2 python-greenlet))
d79a343b
SB
11575
11576(define-public python-gevent
11577 (package
11578 (name "python-gevent")
11579 (version "1.1.1")
11580 (source (origin
11581 (method url-fetch)
11582 (uri (pypi-uri "gevent" version))
11583 (sha256
11584 (base32
11585 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
11586 (modules '((guix build utils)))
11587 (snippet
11588 '(begin
11589 ;; unbunding libev and c-ares
11590 (for-each delete-file-recursively '("libev" "c-ares"))
11591 ;; fixing testsuite
11592 (call-with-output-file "greentest/__init__.py" noop)
11593 (substitute* "greentest/testrunner.py"
11594 (("import util") "from . import util")
11595 (("from util import log") "from .util import log"))))))
11596 (build-system python-build-system)
11597 (propagated-inputs
11598 `(("python-greenlet" ,python-greenlet)))
11599 (native-inputs
f3b98f4f 11600 `(("python-six" ,python-six)))
d79a343b
SB
11601 (inputs
11602 `(("c-ares" ,c-ares)
11603 ("libev" ,libev)))
11604 (home-page "http://www.gevent.org/")
11605 (synopsis "Coroutine-based network library")
11606 (description
11607 "gevent is a coroutine-based Python networking library that uses greenlet
11608to provide a high-level synchronous API on top of the libev event loop.")
11609 (license license:expat)))
11610
11611(define-public python2-gevent
11612 (package-with-python2 python-gevent))
da3aeeb6 11613
c9a18125
MB
11614(define-public python-geventhttpclient
11615 (package
11616 (name "python-geventhttpclient")
11617 (version "1.3.1")
11618 (source (origin
11619 (method url-fetch)
11620 (uri (pypi-uri "geventhttpclient" version))
11621 (sha256
11622 (base32
11623 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
11624 (modules '((guix build utils)))
11625 (snippet
11626 '(begin
11627 ;; Delete pre-compiled files.
11628 (for-each delete-file (find-files "src/geventhttpclient"
11629 ".*\\.pyc"))
11630 #t))))
11631 (build-system python-build-system)
11632 (arguments
11633 '(#:phases
11634 (modify-phases %standard-phases
11635 (add-after 'unpack 'delete-network-tests
11636 (lambda _
11637 (delete-file "src/geventhttpclient/tests/test_client.py")
11638 #t))
11639 (delete 'check)
11640 (add-after 'install 'check
11641 (lambda* (#:key inputs outputs #:allow-other-keys)
11642 (add-installed-pythonpath inputs outputs)
11643 (zero? (system* "py.test" "src/geventhttpclient/tests" "-v")))))))
11644 (native-inputs
11645 `(("python-pytest" ,python-pytest)))
11646 (propagated-inputs
11647 `(("python-certifi" ,python-certifi)
11648 ("python-gevent" ,python-gevent)
11649 ("python-six" ,python-six)))
11650 (home-page "https://github.com/gwik/geventhttpclient")
11651 (synopsis "HTTP client library for gevent")
11652 (description "@code{python-geventhttpclient} is a high performance,
11653concurrent HTTP client library for python using @code{gevent}.")
11654 (license license:expat)))
11655
11656(define-public python2-geventhttpclient
11657 (package-with-python2 python-geventhttpclient))
11658
b585e361
DM
11659(define-public python-fastimport
11660 (package
11661 (name "python-fastimport")
11662 (version "0.9.6")
11663 (source
11664 (origin
11665 (method url-fetch)
11666 (uri (pypi-uri "fastimport" version))
11667 (sha256
11668 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
11669 (build-system python-build-system)
11670 (home-page "https://github.com/jelmer/python-fastimport")
11671 (synopsis "VCS fastimport parser and generator in Python")
11672 (description "This package provides a parser for and generator of the Git
11673@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
11674format.")
11675 (license license:gpl2+)))
11676
11677(define-public python2-fastimport
11678 (package-with-python2 python-fastimport))
11679
da3aeeb6
SB
11680(define-public python-twisted
11681 (package
11682 (name "python-twisted")
11683 (version "16.2.0")
11684 (source (origin
11685 (method url-fetch)
8ea8e8d3 11686 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
11687 (sha256
11688 (base32
11689 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11690 (build-system python-build-system)
a960e73f
MB
11691 (arguments
11692 '(#:tests? #f)) ; FIXME: Some tests are failing.
11693 ;; #:phases
11694 ;; (modify-phases %standard-phases
11695 ;; (replace 'check
11696 ;; (lambda _
11697 ;; (zero? (system* "./bin/trial" "twisted")))))
45912170
SB
11698 (propagated-inputs
11699 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
11700 (home-page "https://twistedmatrix.com/")
11701 (synopsis "Asynchronous networking framework written in Python")
11702 (description
11703 "Twisted is an extensible framework for Python programming, with special
11704focus on event-based network programming and multiprotocol integration.")
11705 (license license:expat)))
11706
11707(define-public python2-twisted
11708 (package-with-python2 python-twisted))
d0b6fed6 11709
4d3fa5a4
EF
11710(define-public python-pika
11711 (package
11712 (name "python-pika")
11713 (version "0.10.0")
11714 (source
11715 (origin
11716 (method url-fetch)
11717 (uri (pypi-uri "pika" version))
11718 (sha256
11719 (base32
11720 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
11721 (build-system python-build-system)
11722 (native-inputs
269d9172
LF
11723 `(("python-pyev" ,python-pyev)
11724 ("python-tornado" ,python-tornado)
11725 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
11726 (home-page "https://pika.readthedocs.org")
11727 (synopsis "Pure Python AMQP Client Library")
11728 (description
11729 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
11730Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
11731network support library.")
11732 (license license:bsd-3)))
11733
11734(define-public python2-pika
11735 (package-with-python2 python-pika))
11736
d0b6fed6
DM
11737(define-public python-ply
11738 (package
11739 (name "python-ply")
234ade2d 11740 (version "3.9")
d0b6fed6
DM
11741 (source
11742 (origin
11743 (method url-fetch)
234ade2d 11744 (uri (pypi-uri "ply" version))
d0b6fed6
DM
11745 (sha256
11746 (base32
234ade2d 11747 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
d0b6fed6
DM
11748 (build-system python-build-system)
11749 (home-page "http://www.dabeaz.com/ply/")
11750 (synopsis "Python Lex & Yacc")
11751 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
11752It uses LR parsing and does extensive error checking.")
f210e944 11753 (license license:bsd-3)))
d0b6fed6
DM
11754
11755(define-public python2-ply
f210e944 11756 (package-with-python2 python-ply))
d951bd54
SB
11757
11758(define-public python-tabulate
11759 (package
11760 (name "python-tabulate")
e6ace98d 11761 (version "0.7.7")
d951bd54
SB
11762 (source (origin
11763 (method url-fetch)
11764 (uri (pypi-uri "tabulate" version))
11765 (sha256
11766 (base32
fe2ba3a8 11767 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
d951bd54 11768 (build-system python-build-system)
fe2ba3a8
MB
11769 (arguments
11770 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
11771 ;; and the latest release is not tagged in the upstream repository.
11772 '(#:tests? #f))
d951bd54
SB
11773 (home-page "https://bitbucket.org/astanin/python-tabulate")
11774 (synopsis "Pretty-print tabular data")
11775 (description
11776 "Tabulate is a library and command-line utility to pretty-print tabular
11777data in Python.")
11778 (license license:expat)))
11779
11780(define-public python2-tabulate
11781 (package-with-python2 python-tabulate))
1c4c8a33
SB
11782
11783(define-public python-kazoo
11784 (package
11785 (name "python-kazoo")
11786 (version "2.2.1")
11787 (source
11788 (origin
11789 (method url-fetch)
11790 (uri (pypi-uri "kazoo" version))
11791 (sha256
11792 (base32
11793 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
11794 (build-system python-build-system)
11795 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
11796 (propagated-inputs
11797 `(("python-six" ,python-six)))
1c4c8a33
SB
11798 (home-page "https://kazoo.readthedocs.org")
11799 (synopsis "High-level Zookeeper client library")
11800 (description
11801 "Kazoo is a Python client library for the Apache Zookeeper distributed
11802application service. It is designed to be easy to use and to avoid common
11803programming errors.")
3f641af0 11804 (license license:asl2.0)))
1c4c8a33
SB
11805
11806(define-public python2-kazoo
11807 (package-with-python2 python-kazoo))
45dda35e
SB
11808
11809(define-public python-pykafka
11810 (package
11811 (name "python-pykafka")
11812 (version "2.4.0")
11813 (source (origin
11814 (method url-fetch)
c6bccf71
EF
11815 (uri (string-append
11816 "https://pypi.python.org/packages/8b/3e/"
11817 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11818 "pykafka-" version ".tar.gz"))
45dda35e
SB
11819 (sha256
11820 (base32
11821 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11822 (build-system python-build-system)
11823 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 11824 (propagated-inputs
45dda35e
SB
11825 `(("python-gevent" ,python-gevent)
11826 ("python-kazoo" ,python-kazoo)
45dda35e
SB
11827 ("python-tabulate" ,python-tabulate)))
11828 (inputs
11829 `(("librdkafka" ,librdkafka)))
11830 (home-page "https://pykafka.readthedocs.io/")
11831 (synopsis "Apache Kafka client for Python")
11832 (description
11833 "PyKafka is a client for the Apache Kafka distributed messaging system.
11834It includes Python implementations of Kafka producers and consumers, which
11835are optionally backed by a C extension built on librdkafka.")
3f641af0 11836 (license license:asl2.0)))
45dda35e
SB
11837
11838(define-public python2-pykafka
11839 (package-with-python2 python-pykafka))
a44fd439
DM
11840
11841(define-public python-wcwidth
11842 (package
11843 (name "python-wcwidth")
9e59478f 11844 (version "0.1.7")
a44fd439
DM
11845 (source
11846 (origin
11847 (method url-fetch)
9e59478f 11848 (uri (pypi-uri "wcwidth" version))
a44fd439
DM
11849 (sha256
11850 (base32
9e59478f 11851 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
a44fd439
DM
11852 (build-system python-build-system)
11853 (home-page "https://github.com/jquast/wcwidth")
66e07664 11854 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
11855 (description "Wcwidth measures the number of terminal column cells of
11856wide-character codes. It is useful for those implementing a terminal emulator,
11857or programs that carefully produce output to be interpreted by one. It is a
11858Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
11859specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 11860 (license license:expat)))
a44fd439
DM
11861
11862(define-public python2-wcwidth
f210e944 11863 (package-with-python2 python-wcwidth))
0de78c95
DP
11864
11865(define-public python2-jsonrpclib
11866 (package
11867 (name "python2-jsonrpclib")
11868 (version "0.1.7")
11869 (source (origin
11870 (method url-fetch)
11871 (uri (string-append
11872 "https://pypi.python.org/packages/source/j/jsonrpclib/"
11873 "jsonrpclib-" version ".tar.gz"))
11874 (sha256
11875 (base32
11876 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
11877 (build-system python-build-system)
0de78c95
DP
11878 (arguments
11879 `(#:tests? #f
11880 #:python ,python-2))
11881 (home-page "https://github.com/joshmarshall/jsonrpclib/")
11882 (synopsis "Implementation of JSON-RPC specification for Python")
11883 (description
11884 "This library is an implementation of the JSON-RPC specification.
11885It supports both the original 1.0 specification, as well as the
11886new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
11887etc.")
3f641af0 11888 (license license:asl2.0)))
9250b0f3
SB
11889
11890(define-public python-chai
11891 (package
11892 (name "python-chai")
11893 (version "1.1.1")
11894 (source (origin
11895 (method url-fetch)
11896 (uri (pypi-uri "chai" version))
11897 (sha256
11898 (base32
11899 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
11900 (build-system python-build-system)
9250b0f3
SB
11901 (home-page "https://github.com/agoragames/chai")
11902 (synopsis "Mocking framework for Python")
11903 (description
11904 "Chai provides an api for mocking, stubbing and spying your python
11905objects, patterned after the Mocha library for Ruby.")
3f641af0 11906 (license license:bsd-3)))
9250b0f3
SB
11907
11908(define-public python2-chai
11909 (package-with-python2 python-chai))
11910
ae43baa8
SB
11911(define-public python-arrow
11912 (package
11913 (name "python-arrow")
11914 (version "0.8.0")
11915 (source (origin
11916 (method url-fetch)
11917 (uri (pypi-uri "arrow" version))
11918 (sha256
11919 (base32
11920 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
11921 (build-system python-build-system)
11922 (native-inputs
f3b98f4f 11923 `(;; For testing
ae43baa8
SB
11924 ("python-chai" ,python-chai)
11925 ("python-simplejson" ,python-simplejson)))
36aed736 11926 (propagated-inputs
22d7360b 11927 `(("python-dateutil" ,python-dateutil)))
ae43baa8
SB
11928 (home-page "https://github.com/crsmithdev/arrow/")
11929 (synopsis "Dates and times for Python")
11930 (description
11931 "Arrow is a Python library to creating, manipulating, formatting and
11932converting dates, times, and timestamps. It implements and updates the
11933datetime type.")
3f641af0 11934 (license license:asl2.0)))
ae43baa8
SB
11935
11936(define-public python2-arrow
11937 (package-with-python2 python-arrow))
11938
1f2b62a4
SB
11939(define-public python-inflection
11940 (package
11941 (name "python-inflection")
11942 (version "0.3.1")
11943 (source
11944 (origin (method url-fetch)
11945 (uri (pypi-uri "inflection" version))
11946 (sha256
11947 (base32
11948 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
11949 (build-system python-build-system)
e9127525
MB
11950 (native-inputs
11951 `(("python-pytest" ,python-pytest)))
7bf837fd 11952 (home-page "https://github.com/jpvanhal/inflection")
1f2b62a4
SB
11953 (synopsis "Python string transformation library")
11954 (description
11955 "Inflection is a string transformation library. It singularizes
11956and pluralizes English words, and transforms strings from CamelCase to
11957underscored string.")
11958 (license license:expat)))
11959
11960(define-public python2-inflection
11961 (package-with-python2 python-inflection))
11962
18995566
SB
11963(define-public python-pylev
11964 (package
11965 (name "python-pylev")
11966 (version "1.3.0")
11967 (source (origin
11968 (method url-fetch)
11969 (uri (pypi-uri "pylev" version))
11970 (sha256
11971 (base32
11972 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
11973 (build-system python-build-system)
7bf837fd 11974 (home-page "https://github.com/toastdriven/pylev")
18995566
SB
11975 (synopsis "Levenshtein distance implementation in Python")
11976 (description "Pure Python Levenshtein implementation, based off the
11977Wikipedia code samples at
11978@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 11979 (license license:bsd-3)))
18995566
SB
11980
11981(define-public python2-pylev
11982 (package-with-python2 python-pylev))
11983
f5deff7a
SB
11984(define-public python-cleo
11985 (package
11986 (name "python-cleo")
5eebe8dc 11987 (version "0.6.1")
f5deff7a
SB
11988 (source (origin
11989 (method url-fetch)
11990 (uri (pypi-uri "cleo" version))
11991 (sha256
11992 (base32
5eebe8dc 11993 "0q1cf0szr0d54am4pypzwdnm74zpladdsinad94c2fz5i06fdpf7"))))
f5deff7a
SB
11994 (build-system python-build-system)
11995 (native-inputs
f3b98f4f 11996 `(;; For testing
f5deff7a 11997 ("python-mock" ,python-mock)
5eebe8dc 11998 ("python-pytest-mock" ,python-pytest-mock)
f5deff7a 11999 ("python-pytest" ,python-pytest)))
9403150a 12000 (propagated-inputs
5eebe8dc
BW
12001 `(("python-backpack" ,python-backpack)
12002 ("python-pastel" ,python-pastel)
9403150a 12003 ("python-pylev" ,python-pylev)))
f5deff7a
SB
12004 (home-page "https://github.com/sdispater/cleo")
12005 (synopsis "Command-line arguments library for Python")
12006 (description
12007 "Cleo allows you to create command-line commands with signature in
12008docstring and colored output.")
12009 (license license:expat)))
12010
12011(define-public python2-cleo
12012 (package-with-python2 python-cleo))
12013
77cadb43
SB
12014(define-public python-lazy-object-proxy
12015 (package
12016 (name "python-lazy-object-proxy")
12017 (version "1.2.2")
12018 (source (origin
12019 (method url-fetch)
12020 (uri (pypi-uri "lazy-object-proxy" version))
12021 (sha256
12022 (base32
12023 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
12024 (build-system python-build-system)
77cadb43
SB
12025 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
12026 (synopsis "Lazy object proxy for python")
12027 (description
12028 "Lazy object proxy is an object that wraps a callable but defers the call
12029until the object is actually required, and caches the result of said call.")
3f641af0 12030 (license license:bsd-2)))
77cadb43
SB
12031
12032(define-public python2-lazy-object-proxy
12033 (package-with-python2 python-lazy-object-proxy))
12034
5477e05f
SB
12035(define-public python-dnspython
12036 (package
12037 (name "python-dnspython")
6c514128 12038 (version "1.15.0")
5477e05f
SB
12039 (source (origin
12040 (method url-fetch)
12041 (uri (string-append "http://www.dnspython.org/kits/"
12042 version "/dnspython-" version ".tar.gz"))
12043 (sha256
12044 (base32
6c514128 12045 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
12046 (build-system python-build-system)
12047 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
12048 (home-page "http://www.dnspython.org")
12049 (synopsis "DNS toolkit for Python")
12050 (description
12051 "dnspython is a DNS toolkit for Python. It supports almost all record
12052types. It can be used for queries, zone transfers, and dynamic updates.
12053It supports TSIG authenticated messages and EDNS0.")
12054 (license license:expat)))
12055
12056(define-public python2-dnspython
12057 (package-with-python2 python-dnspython))
12058
22711e25
SB
12059(define-public python-email-validator
12060 (package
12061 (name "python-email-validator")
b165c215 12062 (version "1.0.2")
22711e25
SB
12063 (source
12064 (origin (method url-fetch)
12065 (uri (pypi-uri "email_validator" version))
12066 (sha256
12067 (base32
b165c215 12068 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
22711e25
SB
12069 (build-system python-build-system)
12070 (arguments
12071 '(#:phases
12072 (modify-phases %standard-phases
12073 (add-before 'build 'use-dnspython
12074 (lambda _
12075 (substitute* "setup.py"
12076 (("dnspython3") "dnspython"))
12077 #t)))))
d42560bd 12078 (propagated-inputs
22711e25 12079 `(("python-dnspython" ,python-dnspython)
d42560bd 12080 ("python-idna" ,python-idna)))
22711e25
SB
12081 (home-page "https://github.com/JoshData/python-email-validator")
12082 (synopsis "Email address validation library for Python")
12083 (description
12084 "This library validates email address syntax and deliverability.")
3f641af0 12085 (license license:cc0)))
22711e25
SB
12086
12087(define-public python2-email-validator
12088 (package-with-python2 python-email-validator))
12089
8987d91e
SB
12090(define-public python-ukpostcodeparser
12091 (package
12092 (name "python-ukpostcodeparser")
12093 (version "1.0.3")
12094 (source (origin
12095 (method url-fetch)
12096 (uri (pypi-uri "UkPostcodeParser" version))
12097 (sha256
12098 (base32
12099 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
12100 (build-system python-build-system)
8987d91e
SB
12101 (home-page "https://github.com/hamstah/ukpostcodeparser")
12102 (synopsis "UK Postcode parser for Python")
12103 (description
12104 "This library provides the @code{parse_uk_postcode} function for
12105parsing UK postcodes.")
12106 (license license:expat)))
12107
12108(define-public python2-ukpostcodeparser
12109 (package-with-python2 python-ukpostcodeparser))
ea92ae01 12110
ce7911dd
MB
12111(define-public python-faker
12112 (package
12113 (name "python-faker")
12114 (version "0.7.9")
12115 (source (origin
12116 (method url-fetch)
12117 (uri (pypi-uri "Faker" version))
12118 (sha256
12119 (base32
12120 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
12121 (patches
12122 (search-patches "python-faker-fix-build-32bit.patch"))
12123 (modules '((guix build utils)))
12124 (snippet
12125 '(begin
12126 (for-each delete-file (find-files "." "\\.pyc$"))
12127 #t))))
12128 (build-system python-build-system)
12129 (arguments
12130 '(#:phases
12131 (modify-phases %standard-phases
12132 (replace 'check
12133 (lambda _
12134 (zero? (system* "python" "-m" "unittest" "-v" "tests")))))))
12135 (native-inputs
12136 `(;; For testing
12137 ("python-email-validator" ,python-email-validator)
12138 ("python-mock" ,python-mock)
12139 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
12140 (propagated-inputs
12141 `(("python-dateutil" ,python-dateutil)
12142 ("python-six" ,python-six)))
12143 (home-page "https://github.com/joke2k/faker")
12144 (synopsis "Python package that generates fake data")
12145 (description
12146 "Faker is a Python package that generates fake data such as names,
12147addresses, and phone numbers.")
12148 (license license:expat)
12149 (properties `((python2-variant . ,(delay python2-faker))))))
12150
12151(define-public python2-faker
12152 (let ((base (package-with-python2 (strip-python2-variant
12153 python-faker))))
12154 (package
12155 (inherit base)
12156 (propagated-inputs
12157 `(("python2-ipaddress" ,python2-ipaddress)
12158 ,@(package-propagated-inputs base))))))
12159
b49504fd
SB
12160(define-public python-pyaml
12161 (package
12162 (name "python-pyaml")
963926bc 12163 (version "17.7.2")
b49504fd
SB
12164 (source (origin
12165 (method url-fetch)
12166 (uri (pypi-uri "pyaml" version))
12167 (sha256
12168 (base32
963926bc 12169 "132grrw0ajq4nrappi3ldbkb952k7yn9b6c7csi2rmvzm1g6ppp2"))))
b49504fd 12170 (build-system python-build-system)
f620311a
MB
12171 (native-inputs
12172 `(("python-unidecode" ,python-unidecode)))
b49504fd
SB
12173 (propagated-inputs
12174 `(("python-pyyaml" ,python-pyyaml)))
12175 (home-page "https://github.com/mk-fg/pretty-yaml")
12176 (synopsis "YAML pretty-print library for Python")
12177 (description
12178 "pyaml is a PyYAML based python module to produce pretty and readable
12179YAML-serialized data.")
3f641af0 12180 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
12181
12182(define-public python2-pyaml
12183 (package-with-python2 python-pyaml))
12184
04fb4516
BW
12185(define-public python-backpack
12186 (package
12187 (name "python-backpack")
12188 (version "0.1")
12189 (source
12190 (origin
12191 (method url-fetch)
12192 (uri (pypi-uri "backpack" version))
12193 (sha256
12194 (base32
12195 "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1"))))
12196 (build-system python-build-system)
12197 (native-inputs
12198 `(("python-pytest" ,python-pytest)
12199 ("python-nose" ,python-nose)))
12200 (propagated-inputs
12201 `(("python-simplejson" ,python-simplejson)))
12202 (home-page "https://github.com/sdispater/backpack")
12203 (synopsis "Utilities for working with Python collections")
12204 (description "Backpack provides some useful utilities for working with
12205collections of data.")
12206 (license license:expat)))
12207
12208(define-public python2-backpack
12209 (package-with-python2 python-backpack))
12210
347175a2
SB
12211(define-public python-flexmock
12212 (package
12213 (name "python-flexmock")
12214 (version "0.10.2")
12215 (source (origin
12216 (method url-fetch)
12217 (uri (pypi-uri "flexmock" version))
12218 (sha256
12219 (base32
12220 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
12221 (build-system python-build-system)
347175a2
SB
12222 (home-page "https://flexmock.readthedocs.org")
12223 (synopsis "Testing library for Python")
12224 (description
12225 "flexmock is a testing library for Python that makes it easy to create
12226mocks, stubs and fakes.")
3f641af0 12227 (license license:bsd-3)))
347175a2
SB
12228
12229(define-public python2-flexmock
12230 (package-with-python2 python-flexmock))
12231
5a744191
SB
12232(define-public python-orator
12233 (package
12234 (name "python-orator")
12235 (version "0.8.2")
12236 (source (origin
12237 (method url-fetch)
12238 (uri (pypi-uri "orator" version))
12239 (sha256
12240 (base32
12241 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
12242 (build-system python-build-system)
12243 (arguments '(#:tests? #f)) ; no tests
b2676030 12244 (propagated-inputs
5a744191
SB
12245 `(("python-arrow" ,python-arrow)
12246 ("python-blinker" ,python-blinker)
12247 ("python-cleo" ,python-cleo)
ce7911dd 12248 ("python-faker" ,python-faker)
5a744191
SB
12249 ("python-inflection" ,python-inflection)
12250 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
12251 ("python-pyaml" ,python-pyaml)
5a744191
SB
12252 ("python-simplejson" ,python-simplejson)
12253 ("python-wrapt" ,python-wrapt)))
12254 (home-page "https://orator-orm.com/")
12255 (synopsis "ActiveRecord ORM for Python")
12256 (description
12257 "Orator provides a simple ActiveRecord-like Object Relational Mapping
12258implementation for Python.")
12259 (license license:expat)
12260 (properties `((python2-variant . ,(delay python2-orator))))))
12261
12262(define-public python2-orator
12263 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
12264 (package
12265 (inherit base)
06961617 12266 (propagated-inputs
5a744191 12267 `(("python2-ipaddress" ,python2-ipaddress)
06961617 12268 ,@(package-propagated-inputs base))))))
f4155188
DM
12269
12270(define-public python-prompt-toolkit
12271 (package
12272 (name "python-prompt-toolkit")
6a34f4cc 12273 (version "1.0.9")
f4155188
DM
12274 (source
12275 (origin
12276 (method url-fetch)
d15e2ef0 12277 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
12278 (sha256
12279 (base32
6a34f4cc 12280 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 12281 (build-system python-build-system)
bae18710
LF
12282 (arguments
12283 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
12284 (propagated-inputs
12285 `(("python-wcwidth" ,python-wcwidth)
2c199b55 12286 ("python-six" ,python-six)
f22efa01 12287 ("python-pygments" ,python-pygments)))
f4155188
DM
12288 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
12289 (synopsis "Library for building command line interfaces in Python")
12290 (description
12291 "Prompt-Toolkit is a library for building interactive command line
12292interfaces in Python. It's like GNU Readline but it also features syntax
12293highlighting while typing, out-of-the-box multi-line input editing, advanced
12294code completion, incremental search, support for Chinese double-width
12295characters, mouse support, and auto suggestions.")
f210e944 12296 (license license:bsd-3)))
f4155188
DM
12297
12298(define-public python2-prompt-toolkit
f210e944 12299 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
12300
12301(define-public python-jedi
12302 (package
12303 (name "python-jedi")
12304 (version "0.9.0")
12305 (source
12306 (origin
12307 (method url-fetch)
12308 (uri (pypi-uri "jedi" version))
12309 (sha256
12310 (base32
12311 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
12312 (build-system python-build-system)
bfce8a34
MB
12313 (arguments
12314 ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
12315 '(#:tests? #f))
12316 (native-inputs
12317 `(("python-pytest" ,python-pytest)))
a502dfbf
DM
12318 (home-page "https://github.com/davidhalter/jedi")
12319 (synopsis
12320 "Autocompletion for Python that can be used for text editors")
12321 (description
12322 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 12323 (license license:expat)))
a502dfbf
DM
12324
12325(define-public python2-jedi
f210e944 12326 (package-with-python2 python-jedi))
c2f0dc6e
DM
12327
12328(define-public ptpython
12329 (package
12330 (name "ptpython")
12331 (version "0.34")
12332 (source (origin
12333 (method url-fetch)
12334 (uri (pypi-uri "ptpython" version))
12335 (sha256
12336 (base32
12337 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
12338 (build-system python-build-system)
32955348
MB
12339 (arguments
12340 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
f22efa01 12341 (propagated-inputs
c2f0dc6e
DM
12342 `(("python-docopt" ,python-docopt)
12343 ("python-jedi" ,python-jedi)
12344 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 12345 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
12346 (home-page "https://github.com/jonathanslenders/ptpython")
12347 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
12348 (description
12349 "ptpython is a Python read-eval-print loop with IDE-like features.
12350It supports syntax highlighting, multiline editing, autocompletion, mouse,
12351color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
12352etc.")
3f641af0 12353 (license license:bsd-3)
c2f0dc6e
DM
12354 (properties `((python2-variant . ,(delay ptpython-2))))))
12355
12356(define-public ptpython-2
12357 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
12358 (package
12359 (inherit base)
12360 (name "ptpython2"))))
b227f0be 12361
b04a52a6
DJ
12362(define-public python-requests-oauthlib
12363 (package
12364 (name "python-requests-oauthlib")
12365 (version "0.6.2")
12366 (source
12367 (origin
12368 (method url-fetch)
12369 (uri (pypi-uri "requests-oauthlib" version))
12370 (sha256
12371 (base32
12372 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
12373 (build-system python-build-system)
12374 (arguments
12375 `(#:phases
12376 (modify-phases %standard-phases
12377 ;; removes tests that require network access
12378 (add-before 'check 'pre-check
12379 (lambda _
12380 (delete-file "tests/test_core.py")
12381 #t)))))
12382 (native-inputs
12383 `(("python-requests-mock" ,python-requests-mock)
12384 ("python-mock" ,python-mock)))
f22efa01 12385 (propagated-inputs
b04a52a6
DJ
12386 `(("python-oauthlib" ,python-oauthlib)
12387 ("python-requests" ,python-requests)))
12388 (home-page
12389 "https://github.com/requests/requests-oauthlib")
12390 (synopsis
12391 "OAuthlib authentication support for Requests")
12392 (description
12393 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
12394provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 12395 (license license:isc)))
b04a52a6
DJ
12396
12397(define-public python2-requests-oauthlib
f210e944 12398 (package-with-python2 python-requests-oauthlib))
b04a52a6 12399
b227f0be 12400(define-public python-stem
12401 (package
12402 (name "python-stem")
0bb1c35a 12403 (version "1.5.4")
b227f0be 12404 (source
12405 (origin
12406 (method url-fetch)
c976b319 12407 (uri (pypi-uri "stem" version))
b227f0be 12408 (sha256
12409 (base32
0bb1c35a 12410 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
b227f0be 12411 (build-system python-build-system)
12412 (arguments
12413 `(#:phases
12414 (modify-phases %standard-phases
12415 (replace 'check
12416 (lambda _
12417 (zero? (system* "./run_tests.py" "--unit")))))))
12418 (native-inputs
12419 `(("python-mock" ,python-mock)
12420 ("python-pep8" ,python-pep8)
12421 ("python-pyflakes" ,python-pyflakes)))
b227f0be 12422 (home-page "https://stem.torproject.org/")
12423 (synopsis
12424 "Python controller library that allows applications to interact with Tor")
12425 (description
12426 "Stem is a Python controller library for Tor. With it you can use Tor's
12427control protocol to script against the Tor process and read descriptor data
12428relays publish about themselves.")
3f641af0 12429 (license license:lgpl3)))
b227f0be 12430
12431(define-public python2-stem
12432 (package-with-python2 python-stem))
517a6c0c
DM
12433
12434(define-public python-pyserial
12435 (package
12436 (name "python-pyserial")
12437 (version "3.1.1")
12438 (source
12439 (origin
12440 (method url-fetch)
12441 (uri (pypi-uri "pyserial" version))
12442 (sha256
12443 (base32
12444 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
12445 (build-system python-build-system)
0a702009
MB
12446 (arguments
12447 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
12448 ;; #:phases
12449 ;; (modify-phases %standard-phases
12450 ;; (replace 'check
12451 ;; (lambda _
12452 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
517a6c0c
DM
12453 (home-page
12454 "https://github.com/pyserial/pyserial")
12455 (synopsis "Python Serial Port Bindings")
12456 (description "@code{pyserial} provide serial port bindings for Python. It
12457supports different byte sizes, stop bits, parity and flow control with RTS/CTS
12458and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 12459 (license license:bsd-3)))
517a6c0c
DM
12460
12461(define-public python2-pyserial
f210e944 12462 (package-with-python2 python-pyserial))
6eb7af2a
DJ
12463
12464(define-public python-kivy
12465 (package
12466 (name "python-kivy")
12467 (version "1.9.1")
12468 (source
12469 (origin
12470 (method url-fetch)
12471 (uri (pypi-uri "kivy" version))
12472 (file-name (string-append name "-" version ".tar.gz"))
12473 (sha256
12474 (base32
12475 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
12476 (build-system python-build-system)
12477 (arguments
12478 `(#:tests? #f ; Tests require many optional packages
12479 #:phases
12480 (modify-phases %standard-phases
12481 (replace 'build (lambda _ (zero? (system* "make" "force"))))
12482 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
12483 (lambda* (#:key inputs #:allow-other-keys)
12484 (setenv "KIVY_SDL2_PATH"
12485 (string-append (assoc-ref inputs "sdl-union")
12486 "/include/SDL2"))
12487 #t)))))
12488 (native-inputs
f2516de2
HG
12489 `(("pkg-config" ,pkg-config)
12490 ("python-cython" ,python-cython)))
6eb7af2a 12491 (inputs
f2516de2 12492 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
12493 ("mesa" ,mesa)
12494 ("sdl-union"
12495 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
12496 (home-page "http://kivy.org")
12497 (synopsis
12498 "Multitouch application framework")
12499 (description
12500 "A software library for rapid development of
12501hardware-accelerated multitouch applications.")
12502 (license license:expat)))
12503
12504(define-public python2-kivy
12505 (package-with-python2 python-kivy))
12506
12507(define-public python-kivy-next
12508 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
12509 (revision "1"))
12510 (package (inherit python-kivy)
12511 (name "python-kivy-next")
d80a71eb 12512 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
12513 (string-take commit 7)))
12514 (source
12515 (origin
12516 (method git-fetch)
12517 (uri (git-reference
12518 (url "https://github.com/kivy/kivy")
12519 (commit commit)))
12520 (file-name (string-append name "-" version "-checkout"))
12521 (sha256
12522 (base32
12523 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
12524
12525(define-public python2-kivy-next
12526 (package-with-python2 python-kivy-next))
8794bd8b
DC
12527
12528(define-public python-binaryornot
12529 (package
12530 (name "python-binaryornot")
12531 (version "0.4.0")
12532 (source (origin
12533 (method url-fetch)
12534 (uri (pypi-uri "binaryornot" version))
12535 (sha256
12536 (base32
12537 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
12538 (build-system python-build-system)
f22efa01 12539 (propagated-inputs
8794bd8b
DC
12540 `(("python-chardet" ,python-chardet)
12541 ("python-hypothesis" ,python-hypothesis)))
12542 (home-page "https://github.com/audreyr/binaryornot")
12543 (synopsis "Package to check if a file is binary or text")
12544 (description "Ultra-lightweight pure Python package to check if a file is
12545binary or text.")
12546 (license license:bsd-3)
12547 (properties `((python2-variant . ,(delay python2-binaryornot))))))
12548
12549(define-public python2-binaryornot
12550 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
12551 (package (inherit base)
f22efa01 12552 (propagated-inputs
8794bd8b 12553 `(("python2-enum34" ,python2-enum34)
f22efa01 12554 ,@(package-propagated-inputs base))))))
a9ac982a
DC
12555
12556(define-public python-nltk
12557 (package
12558 (name "python-nltk")
12559 (version "3.2.1")
12560 (source (origin
12561 (method url-fetch)
12562 (uri (pypi-uri "nltk" version))
12563 (sha256
12564 (base32
12565 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
12566 (build-system python-build-system)
59f12985
LF
12567 (arguments
12568 '(;; The tests require some extra resources to be downloaded.
12569 ;; TODO Try packaging these resources.
12570 #:tests? #f))
a9ac982a
DC
12571 (home-page "http://nltk.org/")
12572 (synopsis "Natural Language Toolkit")
12573 (description "It provides interfaces to over 50 corpora and lexical
12574resources such as WordNet, along with a suite of text processing libraries
12575for classification, tokenization, stemming, tagging, parsing, and semantic
12576reasoning, wrappers for natural language processing libraries.")
f210e944 12577 (license license:asl2.0)))
a9ac982a
DC
12578
12579(define-public python2-nltk
f210e944 12580 (package-with-python2 python-nltk))
691cd90d
DC
12581
12582(define-public python-pymongo
12583 (package
12584 (name "python-pymongo")
12585 (version "3.3.0")
12586 (source (origin
12587 (method url-fetch)
12588 (uri (pypi-uri "pymongo" version))
12589 (sha256
12590 (base32
12591 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
12592 (build-system python-build-system)
f22efa01 12593 (propagated-inputs
691cd90d 12594 `(("python-certifi" ,python-certifi)))
7bf837fd 12595 (home-page "https://github.com/mongodb/mongo-python-driver")
691cd90d
DC
12596 (synopsis "Python driver for MongoDB")
12597 (description "Python driver for MongoDB.")
f210e944 12598 (license license:asl2.0)))
691cd90d
DC
12599
12600(define-public python2-pymongo
f210e944 12601 (package-with-python2 python-pymongo))
6a6c9d43
DC
12602
12603(define-public python-sh
12604 (package
12605 (name "python-sh")
12606 (version "1.11")
12607 (source (origin
12608 (method url-fetch)
12609 (uri (pypi-uri "sh" version))
12610 (sha256
12611 (base32
12612 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
12613 (build-system python-build-system)
12614 (arguments
12615 `(#:tests? #f)) ; no tests
12616 (home-page "https://github.com/amoffat/sh")
12617 (synopsis "Python subprocess interface")
12618 (description "Abstracts process invocation by providing a function
12619interface for programs.")
f210e944 12620 (license license:expat)))
6a6c9d43
DC
12621
12622(define-public python2-sh
f210e944 12623 (package-with-python2 python-sh))
05b59190 12624
25702397
EF
12625(define-public python-consul
12626 (package
12627 (name "python-consul")
12628 (version "0.6.1")
12629 (source
12630 (origin
12631 (method url-fetch)
12632 (uri (pypi-uri "python-consul" version))
12633 (sha256
12634 (base32
12635 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
12636 (build-system python-build-system)
12637 (native-inputs
fd1d6de7
HG
12638 `(("python-pytest" ,python-pytest)))
12639 (propagated-inputs
12640 `(("python-requests" ,python-requests)
25702397
EF
12641 ("python-six" ,python-six)))
12642 (home-page "https://github.com/cablehead/python-consul")
12643 (synopsis "Python client for Consul")
12644 (description
12645 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
12646discovery, monitoring and configuration.")
12647 (license license:expat)))
12648
12649(define-public python2-consul
f210e944 12650 (package-with-python2 python-consul))
25702397 12651
05b59190
DC
12652(define-public python-schematics
12653 (package
12654 (name "python-schematics")
12655 (version "1.1.1")
12656 (source
12657 (origin
12658 (method url-fetch)
12659 (uri (string-append
12660 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
12661 (file-name (string-append name "-" version ".tar.gz"))
12662 (sha256
12663 (base32
12664 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
12665 (build-system python-build-system)
f22efa01 12666 (propagated-inputs
05b59190
DC
12667 `(("python-six" ,python-six)))
12668 (arguments
12669 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
12670 ; version requirements (eg python-coveralls)
12671 (home-page "https://github.com/schematics/schematics")
12672 (synopsis "Python Data Structures for Humans")
12673 (description "Python Data Structures for Humans.")
f210e944 12674 (license license:bsd-3)))
05b59190
DC
12675
12676(define-public python2-schematics
f210e944 12677 (package-with-python2 python-schematics))
d6907ff7
DC
12678
12679(define-public python-publicsuffix
12680 (package
12681 (name "python-publicsuffix")
12682 (version "1.1.0")
12683 (source (origin
12684 (method url-fetch)
12685 (uri (pypi-uri "publicsuffix" version))
12686 (sha256
12687 (base32
12688 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
12689 (build-system python-build-system)
12690 (arguments
12691 `(#:tests? #f)) ; tests use the internet
12692 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
12693 (synopsis "Get suffix for a domain name")
12694 (description "Get a public suffix for a domain name using the Public Suffix
12695List.")
f210e944 12696 (license license:expat)))
d6907ff7
DC
12697
12698(define-public python2-publicsuffix
f210e944 12699 (package-with-python2 python-publicsuffix))
b2319996
DC
12700
12701(define-public python-publicsuffix2
12702 (package
12703 (name "python-publicsuffix2")
91862162 12704 (version "2.20160818")
b2319996
DC
12705 (source
12706 (origin
12707 (method url-fetch)
12708 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12709 (sha256
12710 (base32
91862162 12711 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
b2319996 12712 (build-system python-build-system)
10797a0a
LF
12713 (arguments
12714 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
12715 (home-page "https://github.com/pombredanne/python-publicsuffix2")
12716 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
12717 (description "Get a public suffix for a domain name using the Public Suffix
12718List. Forked from and using the same API as the publicsuffix package.")
f210e944 12719 (license (list license:expat license:mpl2.0))))
b2319996
DC
12720
12721(define-public python2-publicsuffix2
f210e944 12722 (package-with-python2 python-publicsuffix2))
81f1515d
DC
12723
12724(define-public python-url
12725 (package
12726 (name "python-url")
12727 (version "0.2.0")
12728 (source (origin
12729 (method url-fetch)
12730 (uri (pypi-uri "url" version))
12731 (sha256
12732 (base32
12733 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
12734 (build-system python-build-system)
f22efa01 12735 (propagated-inputs
81f1515d
DC
12736 `(("python-publicsuffix" ,python-publicsuffix)))
12737 (native-inputs
12738 `(("python-coverage" ,python-coverage)
12739 ("python-nose" ,python-nose)))
12740 (arguments
12741 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
7bf837fd 12742 (home-page "https://github.com/seomoz/url-py")
81f1515d
DC
12743 (synopsis "URL Parsing")
12744 (description "Library for parsing urls.")
12745 (license license:expat)
12746 (properties `((python2-variant . ,(delay python2-url))))))
12747
12748(define-public python2-url
12749 (let ((base (package-with-python2 (strip-python2-variant python-url))))
12750 (package (inherit base)
f22efa01 12751 (propagated-inputs
f210e944 12752 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
12753
12754(define-public python-freezegun
12755 (package
12756 (name "python-freezegun")
0c315fb3 12757 (version "0.3.8")
974ee2c1
TS
12758 (source
12759 (origin
12760 (method url-fetch)
12761 (uri (pypi-uri "freezegun" version))
12762 (sha256
12763 (base32
0c315fb3 12764 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
974ee2c1
TS
12765 (build-system python-build-system)
12766 (native-inputs
12767 `(("python-mock" ,python-mock)
12768 ("python-nose" ,python-nose)
4e096968 12769 ("python-coverage" ,python-coverage)))
f22efa01 12770 (propagated-inputs
4e096968 12771 `(("python-six" ,python-six)
22d7360b 12772 ("python-dateutil" ,python-dateutil)))
974ee2c1
TS
12773 (arguments
12774 `(#:phases (modify-phases %standard-phases
12775 ;; The tests are normally executed via `make test`, but the PyPi
12776 ;; package does not include the Makefile.
12777 (replace 'check
12778 (lambda _
12779 (zero? (system* "nosetests" "./tests/")))))))
12780 (home-page "https://github.com/spulec/freezegun")
12781 (synopsis "Test utility for mocking the datetime module")
12782 (description
12783 "FreezeGun is a library that allows your python tests to travel through
12784time by mocking the datetime module.")
12785 (license license:asl2.0)))
12786
12787(define-public python2-freezegun
f210e944
HG
12788 (package-with-python2 python-freezegun))
12789
dddcb25c
MB
12790
12791(define-public python-odfpy
12792 (package
12793 (name "python-odfpy")
12794 (version "1.3.3")
12795 (source (origin
12796 (method url-fetch)
12797 (uri (pypi-uri "odfpy" version))
12798 (sha256
12799 (base32
12800 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
12801 (arguments
12802 `(#:modules ((srfi srfi-1)
12803 (guix build python-build-system)
12804 (guix build utils))
12805 #:phases
12806 (modify-phases %standard-phases
12807 (replace 'check
12808 ;; The test runner invokes python2 and python3 for test*.py.
12809 ;; To avoid having both in inputs, we replicate it here.
12810 (lambda _
12811 (every (lambda (test-file)
12812 (zero? (system* "python" test-file)))
12813 (find-files "tests" "^test.*\\.py$")))))))
12814 (build-system python-build-system)
12815 (home-page "https://github.com/eea/odfpy")
12816 (synopsis "Python API and tools to manipulate OpenDocument files")
12817 (description "Collection of libraries and utility programs written in
12818Python to manipulate OpenDocument 1.2 files.")
12819 (license
12820 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
12821 ;; number of files with other licenses.
12822 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
12823
12824(define-public python2-odfpy
12825 (package-with-python2 python-odfpy))
b30565bd
MB
12826
12827(define-public python-cachecontrol
12828 (package
12829 (name "python-cachecontrol")
12830 (version "0.11.6")
12831 (source
12832 (origin
12833 (method url-fetch)
12834 ;; Pypi does not have tests.
12835 (uri (string-append
12836 "https://github.com/ionrock/cachecontrol/archive/v"
12837 version ".tar.gz"))
12838 (file-name (string-append name "-" version ".tar.gz"))
12839 (sha256
12840 (base32
12841 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
12842 (build-system python-build-system)
12843 (arguments
12844 `(#:phases
12845 (modify-phases %standard-phases
12846 (replace 'check
12847 (lambda _
12848 ;; Drop test that requires internet access.
12849 (delete-file "tests/test_regressions.py")
12850 (setenv "PYTHONPATH"
12851 (string-append (getcwd) "/build/lib:"
12852 (getenv "PYTHONPATH")))
12853 (zero? (system* "py.test" "-vv")))))))
12854 (native-inputs
12855 `(("python-pytest" ,python-pytest)
12856 ("python-redis" ,python-redis)
12857 ("python-webtest" ,python-webtest)
12858 ("python-mock" ,python-mock)))
12859 (propagated-inputs
12860 `(("python-requests" ,python-requests)
12861 ("python-lockfile" ,python-lockfile)))
12862 (home-page "https://github.com/ionrock/cachecontrol")
12863 (synopsis "The httplib2 caching algorithms for use with requests")
12864 (description "CacheControl is a port of the caching algorithms in
12865@code{httplib2} for use with @code{requests} session objects.")
f210e944 12866 (license license:asl2.0)))
b30565bd
MB
12867
12868(define-public python2-cachecontrol
f210e944 12869 (package-with-python2 python-cachecontrol))
243db824
DM
12870
12871(define-public python-lit
12872 (package
12873 (name "python-lit")
12874 (version "0.5.0")
12875 (source
12876 (origin
12877 (method url-fetch)
12878 (uri (pypi-uri "lit" version))
12879 (sha256
12880 (base32
12881 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
12882 (build-system python-build-system)
12883 (home-page "http://llvm.org/")
12884 (synopsis "LLVM Software Testing Tool")
12885 (description "@code{lit} is a portable tool for executing LLVM and Clang
12886style test suites, summarizing their results, and providing indication of
12887failures.")
f210e944 12888 (license license:ncsa)))
243db824
DM
12889
12890(define-public python2-lit
f210e944 12891 (package-with-python2 python-lit))
66f95b20
MB
12892
12893(define-public python-pytest-pep8
12894 (package
12895 (name "python-pytest-pep8")
12896 (version "1.0.6")
12897 (source (origin
12898 (method url-fetch)
12899 (uri (pypi-uri "pytest-pep8" version))
12900 (sha256
12901 (base32
12902 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
12903 (build-system python-build-system)
12904 (arguments
b41a05ce 12905 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
12906 (native-inputs
12907 `(("python-pytest" ,python-pytest)))
12908 (propagated-inputs
12909 `(("python-pep8" ,python-pep8)))
12910 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
12911 (synopsis "Py.test plugin to check PEP8 requirements")
12912 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 12913 (license license:expat)))
66f95b20
MB
12914
12915(define-public python2-pytest-pep8
f210e944 12916 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
12917
12918(define-public python-pytest-flakes
12919 (package
12920 (name "python-pytest-flakes")
12921 (version "1.0.1")
12922 (source (origin
12923 (method url-fetch)
12924 (uri (pypi-uri "pytest-flakes" version))
12925 (sha256
12926 (base32
12927 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
12928 (build-system python-build-system)
12929 (arguments
b41a05ce 12930 `(#:phases
df94a6b5
MB
12931 (modify-phases %standard-phases
12932 (delete 'check)
12933 (add-after 'install 'check
05c2fd36
HG
12934 (lambda* (#:key outputs inputs #:allow-other-keys)
12935 ;; It's easier to run tests after install.
12936 ;; Make installed package available for running the tests
12937 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
12938 (zero? (system* "py.test" "-vv")))))))
12939 (native-inputs
12940 `(("python-coverage" ,python-coverage)
12941 ("python-pytest" ,python-pytest)
12942 ("python-pytest-cache" ,python-pytest-cache)
12943 ("python-pytest-pep8" ,python-pytest-pep8)))
12944 (propagated-inputs
12945 `(("python-pyflakes" ,python-pyflakes)))
12946 (home-page "https://github.com/fschulze/pytest-flakes")
12947 (synopsis "Py.test plugin to check source code with pyflakes")
12948 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 12949 (license license:expat)))
df94a6b5
MB
12950
12951(define-public python2-pytest-flakes
f210e944 12952 (package-with-python2 python-pytest-flakes))
5467ea62
MB
12953
12954(define-public python-natsort
12955 (package
12956 (name "python-natsort")
a06cd95a 12957 (version "5.0.2")
5467ea62
MB
12958 (source (origin
12959 (method url-fetch)
12960 (uri (pypi-uri "natsort" version))
12961 (sha256
12962 (base32
a06cd95a 12963 "0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
5467ea62
MB
12964 (build-system python-build-system)
12965 (arguments
12966 `(#:phases
12967 (modify-phases %standard-phases
12968 (add-before 'check 'set-cachedir
12969 ;; Tests require write access to $HOME by default
12970 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
12971 (native-inputs
12972 `(("python-hypothesis" ,python-hypothesis)
12973 ("python-pytest-cache" ,python-pytest-cache)
12974 ("python-pytest-cov" ,python-pytest-cov)
12975 ("python-pytest-flakes" ,python-pytest-flakes)
12976 ("python-pytest-pep8" ,python-pytest-pep8)))
12977 (propagated-inputs ; TODO: Add python-fastnumbers.
12978 `(("python-pyicu" ,python-pyicu)))
12979 (home-page "https://github.com/SethMMorton/natsort")
12980 (synopsis "Natural sorting for python and shell")
12981 (description
12982 "Natsort lets you apply natural sorting on lists instead of
12983lexicographical. If you use the built-in @code{sorted} method in python
12984on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
12985returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
12986function @code{natsorted} that identifies numbers and sorts them separately
12987from strings. It can also sort version numbers, real numbers, mixed types
12988and more, and comes with a shell command @command{natsort} that exposes this
12989functionality in the command line.")
12990 (license license:expat)
12991 (properties `((python2-variant . ,(delay python2-natsort))))))
12992
12993(define-public python2-natsort
12994 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
12995 (package (inherit base)
12996 (native-inputs
00e10c6e 12997 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
12998 ("python2-mock" ,python2-mock)
12999 ("python2-enum34" ,python2-enum34)
13000 ,@(package-native-inputs base))))))
4efb9c54
SR
13001
13002(define-public python-glances
13003 (package
13004 (name "python-glances")
13005 (version "2.7.1")
13006 (source
13007 (origin
13008 (method url-fetch)
13009 (uri (pypi-uri "Glances" version))
13010 (sha256
13011 (base32
13012 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
13013 (build-system python-build-system)
f22efa01 13014 (propagated-inputs
4efb9c54
SR
13015 `(("python-psutil" ,python-psutil)))
13016 (home-page
13017 "https://github.com/nicolargo/glances")
13018 (synopsis
13019 "A cross-platform curses-based monitoring tool")
13020 (description
13021 "Glances is a curses-based monitoring tool for a wide variety of platforms.
13022Glances uses the PsUtil library to get information from your system. It monitors
13023CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 13024 (license license:lgpl3+)))
4efb9c54
SR
13025
13026(define-public python2-glances
f210e944 13027 (package-with-python2 python-glances))
05b7a593
EF
13028
13029(define-public python-graphql-core
13030 (package
13031 (name "python-graphql-core")
13032 (version "0.5.3")
13033 (source
13034 (origin
13035 (method url-fetch)
13036 (uri (pypi-uri "graphql-core" version))
13037 (sha256
13038 (base32
13039 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
13040 (build-system python-build-system)
13041 (arguments
326f8285
LF
13042 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
13043 #:phases
05b7a593
EF
13044 (modify-phases %standard-phases
13045 (add-after 'unpack 'patch-hardcoded-version
13046 (lambda _ (substitute*
13047 "setup.py"
13048 (("'gevent==1.1rc1'") "'gevent'"))
13049 #t)))))
13050 (native-inputs
13051 `(("python-gevent" ,python-gevent)
13052 ("python-mock" ,python-mock)
13053 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 13054 (propagated-inputs
05b7a593
EF
13055 `(("python-promise" ,python-promise)
13056 ("python-six" ,python-six)))
13057 (home-page "https://github.com/graphql-python/graphql-core")
13058 (synopsis "GraphQL implementation for Python")
13059 (description
13060 "GraphQL implementation for Python. GraphQL is a data query language and
13061runtime designed and used to request and deliver data to mobile and web apps.
13062This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
13063to Python.")
05b7a593
EF
13064 (license license:expat)))
13065
13066(define-public python2-graphql-core
f210e944 13067 (package-with-python2 python-graphql-core))
7ee51575
EF
13068
13069(define-public python-graphql-relay
13070 (package
13071 (name "python-graphql-relay")
b13a5b4d 13072 (version "0.4.5")
7ee51575
EF
13073 (source
13074 (origin
13075 (method url-fetch)
13076 (uri (pypi-uri "graphql-relay" version))
13077 (sha256
13078 (base32
b13a5b4d 13079 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
7ee51575
EF
13080 (build-system python-build-system)
13081 (native-inputs
13082 `(("python-pytest" ,python-pytest)))
f22efa01 13083 (propagated-inputs
7ee51575
EF
13084 `(("python-graphql-core" ,python-graphql-core)
13085 ("python-promise" ,python-promise)
13086 ("python-six" ,python-six)))
13087 (home-page "https://github.com/graphql-python/graphql-relay-py")
13088 (synopsis "Relay implementation for Python")
13089 (description
13090 "This is a library to allow the easy creation of Relay-compliant servers
13091using the GraphQL Python reference implementation of a GraphQL server. It
13092should be noted that the code is a exact port of the original
13093@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
13094from Facebook.")
7ee51575
EF
13095 (license license:expat)))
13096
13097(define-public python2-graphql-relay
f210e944 13098 (package-with-python2 python-graphql-relay))
ddc63a56
EF
13099
13100(define-public python-graphene
13101 (package
13102 (name "python-graphene")
13103 (version "0.10.2")
13104 (source
13105 (origin
13106 (method url-fetch)
13107 (uri (pypi-uri "graphene" version))
13108 (sha256
13109 (base32
13110 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
13111 (build-system python-build-system)
13112 (native-inputs
13113 `(("python-django-filter" ,python-django-filter)
13114 ("python-mock" ,python-mock)
13115 ("python-psycopg2" ,python-psycopg2)
13116 ("python-pytest-django" ,python-pytest-django)
13117 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 13118 (propagated-inputs
ddc63a56
EF
13119 `(("python-graphql-core" ,python-graphql-core)
13120 ("python-graphql-relay" ,python-graphql-relay)
13121 ("python-iso8601" ,python-iso8601)
13122 ("python-promise" ,python-promise)
13123 ("python-six" ,python-six)))
13124 (home-page "http://graphene-python.org/")
13125 (synopsis "GraphQL Framework for Python")
13126 (description
13127 "Graphene is a Python library for building GraphQL schemas/types.
13128A GraphQL schema describes your data model, and provides a GraphQL server
13129with an associated set of resolve methods that know how to fetch data.")
13130 (properties `((python2-variant . ,(delay python2-graphene))))
13131 (license license:expat)))
13132
13133(define-public python2-graphene
13134 (let ((base (package-with-python2
13135 (strip-python2-variant python-graphene))))
13136 (package (inherit base)
13137 (native-inputs
00e10c6e 13138 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 13139 ,@(package-native-inputs base))))))
d488d5d6
EF
13140
13141(define-public python-nautilus
13142 (package
13143 (name "python-nautilus")
13144 (version "0.4.9")
13145 (source
13146 (origin
13147 (method url-fetch)
13148 (uri (pypi-uri "nautilus" version))
13149 (sha256
13150 (base32
13151 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
13152 (build-system python-build-system)
13153 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 13154 (propagated-inputs
d488d5d6
EF
13155 `(("python-bcrypt" ,python-bcrypt)
13156 ("python-click" ,python-click)
13157 ("python-consul" ,python-consul)
d488d5d6
EF
13158 ("python-graphene" ,python-graphene)
13159 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
13160 ("python-peewee" ,python-peewee)
13161 ("python-pika" ,python-pika)
d488d5d6
EF
13162 ("python-tornado" ,python-tornado)
13163 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
13164 (native-inputs
13165 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
13166 (home-page "https://github.com/AlecAivazis/nautilus")
13167 (synopsis "Library for creating microservice applications")
13168 (description
13169 "Nautilus is a framework for flux based microservices that looks to
13170provide extendible implementations of common aspects of a cloud so that you can
13171focus on building massively scalable web applications.")
13172 (license license:expat)))
94cffc63 13173
89cd988b
DM
13174(define-public python-snowballstemmer
13175 (package
13176 (name "python-snowballstemmer")
13177 (version "1.2.1")
13178 (source (origin
1bd858cc
MB
13179 (method url-fetch)
13180 (uri (pypi-uri "snowballstemmer" version))
13181 (sha256
13182 (base32
13183 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
89cd988b
DM
13184 (build-system python-build-system)
13185 (arguments
13186 `(;; No tests exist
13187 #:tests? #f))
13188 (home-page "https://github.com/shibukawa/snowball_py")
13189 (synopsis "Snowball stemming library collection for Python")
13190 (description "This package provides 16 word stemmer algorithms generated
13191from Snowball algorithms. It includes the 15 original ones plus the Poerter
13192English stemmer.")
13193 (license license:bsd-3)))
13194
13195(define-public python2-snowballstemmer
13196 (package-with-python2 python-snowballstemmer))
13197
754bfd70
DM
13198(define-public python-sphinx-cloud-sptheme
13199 (package
13200 (name "python-sphinx-cloud-sptheme")
5095bc7d 13201 (version "1.8.0")
754bfd70 13202 (source (origin
1bd858cc
MB
13203 (method url-fetch)
13204 (uri (pypi-uri "cloud_sptheme" version))
13205 (sha256
13206 (base32
5095bc7d 13207 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
1bd858cc 13208 (build-system python-build-system)
a31e2f1a
MB
13209 ;; FIXME: The 'pypi' release archive does not contain tests.
13210 (arguments '(#:tests? #f))
1bd858cc
MB
13211 (native-inputs
13212 `(("python-sphinx" ,python-sphinx)))
13213 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
13214 (synopsis "'Cloud' theme for Sphinx documenter")
13215 (description "This package contains the \"Cloud\" theme for Sphinx and some
754bfd70 13216related extensions.")
1bd858cc 13217 (license license:bsd-3)))
754bfd70
DM
13218
13219(define-public python2-sphinx-cloud-sptheme
13220 (package-with-python2 python-sphinx-cloud-sptheme))
13221
807a5b32
DM
13222(define-public python-sphinx-alabaster-theme
13223 (package
13224 (name "python-sphinx-alabaster-theme")
13225 (version "0.7.9")
1bd858cc
MB
13226 (source (origin
13227 (method url-fetch)
13228 (uri (pypi-uri "alabaster" version))
13229 (sha256
13230 (base32
13231 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
807a5b32
DM
13232 (build-system python-build-system)
13233 (propagated-inputs
13234 `(("python-pygments" ,python-pygments)))
13235 (home-page "https://alabaster.readthedocs.io/")
13236 (synopsis "Configurable sidebar-enabled Sphinx theme")
13237 (description "Alabaster is a visually (c)lean, responsive, configurable
13238theme for the Sphinx documentation system. It's the default theme of Sphinx.")
13239 (license license:bsd-3)))
13240
13241(define-public python2-sphinx-alabaster-theme
13242 (package-with-python2 python-sphinx-alabaster-theme))
13243
66d3f50a
LF
13244(define-public python-betamax
13245 (package
13246 (name "python-betamax")
13247 (version "0.8.0")
13248 (source
13249 (origin
13250 (method url-fetch)
13251 (uri (pypi-uri "betamax" version))
13252 (sha256
13253 (base32
13254 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
13255 (build-system python-build-system)
13256 (arguments
13257 '(;; Many tests fail because they require networking.
13258 #:tests? #f))
c415f763 13259 (propagated-inputs
66d3f50a
LF
13260 `(("python-requests" ,python-requests)))
13261 (home-page "https://github.com/sigmavirus24/betamax")
13262 (synopsis "Record HTTP interactions with python-requests")
13263 (description "Betamax will record your test suite's HTTP interactions and
13264replay them during future tests. It is designed to work with python-requests.")
f210e944 13265 (license license:expat)))
66d3f50a
LF
13266
13267(define-public python2-betamax
f210e944 13268 (package-with-python2 python-betamax))
ca0635b4 13269
1eb6b724
OP
13270(define-public python-betamax-matchers
13271 (package
13272 (name "python-betamax-matchers")
13273 (version "0.4.0")
13274 (source
13275 (origin
13276 (method url-fetch)
13277 (uri (pypi-uri "betamax-matchers" version))
13278 (sha256
13279 (base32
13280 "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
13281 (build-system python-build-system)
13282 (propagated-inputs
13283 `(("python-betamax" ,python-betamax)
13284 ("python-requests-toolbelt" ,python-requests-toolbelt)))
13285 (home-page "https://github.com/sigmavirus24/betamax_matchers")
13286 (synopsis "VCR imitation for python-requests")
13287 (description "@code{betamax-matchers} provides a set of Matchers for
13288Betamax.")
13289 (license license:asl2.0)))
13290
13291(define-public python2-betamax-matchers
13292 (package-with-python2 python-betamax-matchers))
13293
94cffc63
LF
13294(define-public python-s3transfer
13295 (package
13296 (name "python-s3transfer")
46841c07 13297 (version "0.1.11")
94cffc63
LF
13298 (source (origin
13299 (method url-fetch)
13300 (uri (pypi-uri "s3transfer" version))
13301 (sha256
13302 (base32
46841c07 13303 "0yfrfnf404cxzn3iswibqjxklsl0b1lwgqiml6pwiqj79a7zbwbn"))))
94cffc63 13304 (build-system python-build-system)
fad8bf97
LF
13305 (arguments
13306 `(#:phases
13307 (modify-phases %standard-phases
13308 (replace 'check
13309 (lambda _
13310 ;; 7 of the 'integration' tests require network access or login
13311 ;; credentials.
13312 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 13313 (native-inputs
fad8bf97
LF
13314 `(("python-docutils" ,python-docutils)
13315 ("python-mock" ,python-mock)
13316 ("python-nose" ,python-nose)))
f22efa01 13317 (propagated-inputs
94cffc63
LF
13318 `(("python-botocore" ,python-botocore)))
13319 (synopsis "Amazon S3 Transfer Manager")
13320 (description "S3transfer is a Python library for managing Amazon S3
13321transfers.")
13322 (home-page "https://github.com/boto/s3transfer")
13323 (license license:asl2.0)
13324 (properties `((python2-variant . ,(delay python2-s3transfer))))))
13325
13326(define-public python2-s3transfer
13327 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
13328 (package
13329 (inherit base)
13330 (native-inputs
13331 `(("python2-futures" ,python2-futures)
94cffc63 13332 ,@(package-native-inputs base))))))
8ab59181
HG
13333
13334(define-public python-setproctitle
13335(package
13336 (name "python-setproctitle")
13337 (version "1.1.10")
13338 (source
13339 (origin
13340 (method url-fetch)
13341 (uri (pypi-uri "setproctitle" version))
13342 (sha256
13343 (base32
13344 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
13345 (build-system python-build-system)
13346 (arguments
13347 '(#:phases
13348 (modify-phases %standard-phases
13349 (add-before 'check 'patch-Makefile
13350 ;; Stricly this is only required for the python2 variant.
13351 ;; But adding a phase in an inherited package seems to be
13352 ;; cumbersum. So we patch even for python3.
13353 (lambda _
13354 (let ((nose (assoc-ref %build-inputs "python2-nose")))
13355 (when nose
13356 (substitute* "Makefile"
13357 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
13358 (string-append nose "/bin/nosetests "))))
13359 #t)))
13360 (replace 'check
13361 (lambda _
13362 (setenv "PYTHON" (or (which "python3") (which "python")))
13363 (setenv "PYCONFIG" (or (which "python3-config")
13364 (which "python-config")))
13365 (setenv "CC" "gcc")
13366 ;; No need to extend PYTHONPATH to find the built package, since
13367 ;; the Makefile will build anyway
13368 (zero? (system* "make" "check")))))))
13369 (native-inputs
13370 `(("procps" ,procps))) ; required for tests
13371 (home-page
13372 "https://github.com/dvarrazzo/py-setproctitle")
13373 (synopsis
13374 "Setproctitle implementation for Python to customize the process title")
13375 (description "The library allows a process to change its title (as displayed
13376by system tools such as ps and top).
13377
13378Changing the title is mostly useful in multi-process systems, for
13379example when a master process is forked: changing the children's title
13380allows to identify the task each process is busy with. The technique
13381is used by PostgreSQL and the OpenSSH Server for example.")
13382 (license license:bsd-3)
13383 (properties `((python2-variant . ,(delay python2-setproctitle))))))
13384
13385(define-public python2-setproctitle
13386 (let ((base (package-with-python2
13387 (strip-python2-variant python-setproctitle))))
13388 (package
13389 (inherit base)
13390 (native-inputs `(("python2-nose" ,python2-nose)
13391 ,@(package-native-inputs base))))))
162e42d8
HG
13392
13393(define-public python-validictory
13394 (package
13395 (name "python-validictory")
13396 (version "1.0.1")
13397 (source
13398 (origin
13399 (method url-fetch)
13400 (uri (pypi-uri "validictory" version))
13401 (sha256
13402 (base32
13403 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
13404 (build-system python-build-system)
13405 (arguments
13406 '(#:phases
13407 (modify-phases %standard-phases
13408 (add-after 'unpack 'bootstrap
13409 ;; Move the tests out of the package directory to avoid
13410 ;; packaging them.
13411 (lambda* _
13412 (rename-file "validictory/tests" "tests")
13413 (delete-file "tests/__init__.py")))
13414 (replace 'check
13415 (lambda _
13416 ;; Extend PYTHONPATH so the built package will be found.
13417 (setenv "PYTHONPATH"
13418 (string-append (getcwd) "/build/lib:"
13419 (getenv "PYTHONPATH")))
13420 (zero? (system* "py.test" "-vv" )))))))
13421 (native-inputs
13422 `(("python-pytest" ,python-pytest)))
13423 (home-page
13424 "https://github.com/jamesturk/validictory")
13425 (synopsis "General purpose Python data validator")
13426 (description "It allows validation of arbitrary Python data structures.
13427
13428The schema format is based on the JSON Schema
13429proposal (http://json-schema.org), so combined with json the library is also
13430useful as a validator for JSON data.")
f210e944 13431 (license license:expat)))
162e42d8
HG
13432
13433(define-public python2-validictory
f210e944 13434 (package-with-python2 python-validictory))
0990edfe
DM
13435
13436(define-public python-aniso8601
13437 (package
13438 (name "python-aniso8601")
13439 (version "1.1.0")
13440 (source
13441 (origin
13442 (method url-fetch)
13443 (uri (pypi-uri "aniso8601" version))
13444 (sha256
13445 (base32
13446 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
13447 (build-system python-build-system)
13448 (propagated-inputs
22d7360b 13449 `(("python-dateutil" ,python-dateutil)))
0990edfe
DM
13450 (home-page
13451 "https://bitbucket.org/nielsenb/aniso8601")
13452 (synopsis
13453 "Python library for parsing ISO 8601 strings")
13454 (description
13455 "This package contains a library for parsing ISO 8601 datetime strings.")
13456 (license license:bsd-3)))
999d964d
DM
13457
13458(define-public python-flask-restful
13459 (package
13460 (name "python-flask-restful")
13461 (version "0.3.5")
13462 (source
13463 (origin
13464 (method url-fetch)
13465 (uri (pypi-uri "Flask-RESTful" version))
13466 (sha256
13467 (base32
13468 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
13469 (build-system python-build-system)
13470 (propagated-inputs
13471 `(("python-aniso8601" ,python-aniso8601)
13472 ("python-flask" ,python-flask)
13473 ("python-pycrypto" ,python-pycrypto)
13474 ("python-pytz" ,python-pytz)))
13475 (native-inputs
13476 `(;; Optional dependency of Flask. Tests need it.
13477 ("python-blinker" ,python-blinker)
13478 ("python-mock" ,python-mock) ; For tests
13479 ("python-nose" ,python-nose) ; For tests
13480 ("python-sphinx" ,python-sphinx)))
13481 (home-page
13482 "https://www.github.com/flask-restful/flask-restful/")
13483 (synopsis
13484 "Flask module for creating REST APIs")
13485 (description
13486 "This package contains a Flask module for creating REST APIs.")
13487 (license license:bsd-3)))
31288222
DM
13488
13489(define-public python-flask-basicauth
13490 (package
13491 (name "python-flask-basicauth")
13492 (version "0.2.0")
13493 (source
13494 (origin
13495 (method url-fetch)
13496 (uri (pypi-uri "Flask-BasicAuth" version))
13497 (sha256
13498 (base32
13499 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
13500 (build-system python-build-system)
13501 (propagated-inputs
13502 `(("python-flask" ,python-flask)))
13503 (home-page
13504 "https://github.com/jpvanhal/flask-basicauth")
13505 (synopsis
13506 "HTTP basic access authentication for Flask")
13507 (description
13508 "This package provides HTTP basic access authentication for Flask.")
13509 (license license:bsd-3)))
903276d0
DM
13510
13511(define-public python-flask-sqlalchemy
13512 (package
13513 (name "python-flask-sqlalchemy")
13514 (version "2.1")
13515 (source
13516 (origin
13517 (method url-fetch)
13518 (uri (pypi-uri "Flask-SQLAlchemy" version))
13519 (sha256
13520 (base32
13521 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
13522 (build-system python-build-system)
13523 (propagated-inputs
13524 `(("python-flask" ,python-flask)
13525 ("python-sqlalchemy" ,python-sqlalchemy)))
13526 (home-page
7bf837fd 13527 "https://github.com/mitsuhiko/flask-sqlalchemy")
903276d0
DM
13528 (synopsis
13529 "Module adding SQLAlchemy support to your Flask application")
13530 (description
13531 "This package adds SQLAlchemy support to your Flask application.")
13532 (license license:bsd-3)))
329b4b3b
LF
13533
13534(define-public python-pyev
13535 (package
13536 (name "python-pyev")
13537 (version "0.9.0")
13538 (source
13539 (origin
13540 (method url-fetch)
13541 (uri (pypi-uri "pyev" version))
13542 (sha256
13543 (base32
13544 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
13545 (build-system python-build-system)
13546 (arguments
13547 `(#:tests? #f ; no test suite
13548 #:phases
13549 (modify-phases %standard-phases
13550 (add-after 'unpack 'patch
13551 (lambda* (#:key inputs #:allow-other-keys)
13552 (let ((libev (string-append (assoc-ref inputs "libev")
13553 "/lib/libev.so.4")))
13554 (substitute* "setup.py"
13555 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
13556 (string-append "libev_dll_name = \"" libev "\"")))))))))
13557 (inputs
13558 `(("libev" ,libev)))
13559 (home-page "http://pythonhosted.org/pyev/")
13560 (synopsis "Python libev interface")
13561 (description "Pyev provides a Python interface to libev.")
13562 (license license:gpl3)))
13563
13564(define-public python2-pyev
13565 (package-with-python2 python-pyev))
45b4f127
DM
13566
13567(define-public python-imagesize
13568 (package
13569 (name "python-imagesize")
13570 (version "0.7.1")
13571 (source
13572 (origin
13573 (method url-fetch)
13574 (uri (pypi-uri "imagesize" version))
13575 (sha256
13576 (base32
13577 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
13578 (build-system python-build-system)
9422c98a
LF
13579 (arguments
13580 '(;; Test files are not distributed on PyPi:
13581 ;; https://github.com/shibukawa/imagesize_py/issues/7
13582 #:tests? #f))
45b4f127
DM
13583 (home-page "https://github.com/shibukawa/imagesize_py")
13584 (synopsis "Gets image size of files in variaous formats in Python")
13585 (description
13586 "This package allows determination of image size from
13587PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 13588 (license license:expat)))
45b4f127
DM
13589
13590(define-public python2-imagesize
f210e944 13591 (package-with-python2 python-imagesize))
2f6dd9cd
AI
13592
13593(define-public python-axolotl-curve25519
13594 (package
13595 (name "python-axolotl-curve25519")
13596 (version "0.1")
13597 (source
13598 (origin
13599 (method git-fetch)
13600 (uri (git-reference
5f13bf09 13601 (url "https://github.com/tgalal/python-axolotl-curve25519")
2f6dd9cd
AI
13602 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
13603 (file-name (string-append name "-" version "-checkout"))
13604 (sha256
13605 (base32
13606 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
13607 (build-system python-build-system)
13608 (arguments
13609 `(;; Prevent creation of the egg. This works around
13610 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
13611 #:configure-flags '("--root=/")))
2f6dd9cd
AI
13612 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
13613 (synopsis "Python wrapper for curve25519 library")
13614 (description "This is a python wrapper for the curve25519 library
13615with ed25519 signatures. The C code was pulled from
13616libaxolotl-android. At the moment this wrapper is meant for use by
13617python-axolotl.")
13618 (license (list license:gpl3 ; Most files
683cdbf5 13619 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
13620
13621(define-public python2-axolotl-curve25519
13622 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
13623
13624(define-public python-axolotl
13625 (package
13626 (name "python-axolotl")
13627 (version "0.1.35")
13628 (source
13629 (origin
13630 (method url-fetch)
13631 (uri (string-append
13632 "https://github.com/tgalal/python-axolotl/archive/"
13633 version ".tar.gz"))
13634 (file-name (string-append name "-" version ".tar.gz"))
13635 (sha256
13636 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
13637 (build-system python-build-system)
13638 (arguments
13639 `(#:phases
13640 (modify-phases %standard-phases
13641 ;; Don't install tests
13642 (add-before 'install 'remove-tests
13643 (lambda _
13644 (for-each delete-file-recursively
13645 '("axolotl/tests" "build/lib/axolotl/tests"))
01fb9f66 13646 #t)))))
06ff0837
AI
13647 (propagated-inputs
13648 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
13649 ("python-dateutil" ,python-dateutil)
13650 ("python-protobuf" ,python-protobuf)
13651 ("python-pycrypto" ,python-pycrypto)))
13652 (home-page "https://github.com/tgalal/python-axolotl")
13653 (synopsis "Python port of libaxolotl-android")
13654 (description "This is a python port of libaxolotl-android. This
13655is a ratcheting forward secrecy protocol that works in synchronous and
13656asynchronous messaging environments.")
13657 (license license:gpl3)))
13658
13659(define-public python2-axolotl
13660 (package-with-python2 python-axolotl))
e2fca490
DM
13661
13662(define-public python-termstyle
13663 (package
13664 (name "python-termstyle")
13665 (version "0.1.11")
13666 (source
13667 (origin
13668 (method url-fetch)
13669 (uri (pypi-uri "termstyle" version))
13670 (sha256
13671 (base32
13672 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
13673 (build-system python-build-system)
7917a135
MB
13674 (arguments
13675 '(#:phases
13676 (modify-phases %standard-phases
13677 (replace 'check
13678 (lambda _
13679 (zero? (system* "python" "test3.py")))))))
7bf837fd 13680 (home-page "https://github.com/gfxmonk/termstyle")
e2fca490
DM
13681 (synopsis "Console text coloring for Python")
13682 (description "This package provides console text coloring for Python.")
13683 (license license:bsd-3)))
1e6112d8
DM
13684
13685(define-public python-rednose
13686 (package
13687 (name "python-rednose")
13688 (version "1.2.1")
13689 (source
13690 (origin
13691 (method url-fetch)
13692 (uri (pypi-uri "rednose" version))
13693 (sha256
13694 (base32
13695 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
13696 (build-system python-build-system)
13697 (arguments
13698 `(#:phases
13699 (modify-phases %standard-phases
13700 (add-after 'unpack 'fix-deps
13701 (lambda _
13702 ;; See <https://github.com/JBKahn/rednose/issues/12>
13703 (substitute* "setup.py"
13704 (("python-termstyle") "termstyle"))
13705 #t)))))
13706 (propagated-inputs
13707 `(("python-colorama" ,python-colorama)
13708 ("python-termstyle" ,python-termstyle)))
13709 (native-inputs
13710 `(("python-six" ,python-six)
13711 ("python-nose" ,python-nose)))
13712 (home-page "https://github.com/JBKahn/rednose")
13713 (synopsis "Colored output for Python nosetests")
13714 (description "This package provides colored output for the
13715@command{nosetests} command of the Python Nose unit test framework.")
13716 (license license:bsd-3)))
0a7f17f0 13717
ef74a425
MFM
13718(define-public python2-rednose
13719 (package-with-python2 python-rednose))
13720
0a7f17f0
DM
13721(define-public python-flask-restplus
13722 (package
13723 (name "python-flask-restplus")
13724 (version "0.9.2")
13725 (source
13726 (origin
13727 (method url-fetch)
13728 (uri (pypi-uri "flask-restplus" version))
13729 (sha256
13730 (base32
13731 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
13732 (build-system python-build-system)
59f74825
MB
13733 (arguments
13734 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
13735 ;; #:phases
13736 ;; (modify-phases %standard-phases
13737 ;; (replace 'check
13738 ;; (lambda _
13739 ;; (zero? (system* "nosetests")))))))
0a7f17f0
DM
13740 (propagated-inputs
13741 `(("python-aniso8601" ,python-aniso8601)
13742 ("python-flask" ,python-flask)
13743 ("python-jsonschema" ,python-jsonschema)
13744 ("python-pytz" ,python-pytz)
13745 ("python-six" ,python-six)))
13746 (native-inputs
13747 `(("python-tzlocal" ,python-tzlocal)
13748 ("python-blinker" ,python-blinker)
13749 ("python-nose" ,python-nose)
13750 ("python-rednose" ,python-rednose)))
13751 (home-page "https://github.com/noirbizarre/flask-restplus")
13752 (synopsis "Framework for documented API development with Flask")
13753 (description "This package provides a framework for API development with
13754the Flask web framework in Python. It is similar to package
13755@code{python-flask-restful} but supports the @code{python-swagger}
13756documentation builder.")
13757 (license license:expat)))
1ed21519
DM
13758
13759(define-public python-sadisplay
13760 (package
13761 (name "python-sadisplay")
13762 (version "0.4.6")
13763 (source
13764 (origin
13765 (method url-fetch)
13766 (uri (pypi-uri "sadisplay" version))
13767 (sha256
13768 (base32
13769 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
13770 (build-system python-build-system)
13771 (propagated-inputs
13772 `(("python-sqlalchemy" ,python-sqlalchemy)))
13773 (native-inputs
13774 `(("python-nose" ,python-nose)))
13775 (home-page "https://bitbucket.org/estin/sadisplay")
13776 (synopsis "SQLAlchemy schema displayer")
13777 (description "This package provides a program to build Entity
13778Relationship diagrams from a SQLAlchemy model (or directly from the
13779database).")
13780 (license license:bsd-3)))
13781
13782(define-public python2-sadisplay
13783 (package-with-python2 python-sadisplay))
444a79b6
DM
13784
13785(define-public python-flask-restful-swagger
13786 (package
13787 (name "python-flask-restful-swagger")
13788 (version "0.19")
13789 (source
13790 (origin
13791 (method url-fetch)
13792 (uri (pypi-uri "flask-restful-swagger" version))
13793 (sha256
13794 (base32
13795 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
13796 (build-system python-build-system)
13797 (propagated-inputs
13798 `(("python-flask-restful" ,python-flask-restful)))
13799 (home-page "https://github.com/rantav/flask-restful-swagger")
13800 (synopsis "Extract Swagger specs from Flask-Restful projects")
13801 (description "This package lets you extract Swagger API documentation
13802specs from your Flask-Restful projects.")
13803 (license license:expat)))
13804
13805(define-public python2-flask-restful-swagger
13806 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
13807
13808(define-public python-argcomplete
13809 (package
13810 (name "python-argcomplete")
13811 (version "1.7.0")
13812 (source
13813 (origin
13814 (method url-fetch)
13815 (uri (pypi-uri "argcomplete" version))
13816 (sha256
13817 (base32
13818 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
13819 (build-system python-build-system)
80ce42bd
MB
13820 (native-inputs
13821 `(("python-pexpect" ,python-pexpect)
240d3cef
LC
13822 ("tcsh" ,tcsh)
13823 ("bash-full" ,bash))) ;full Bash for 'test_file_completion'
6c2e82bc
TGR
13824 (home-page "https://github.com/kislyuk/argcomplete")
13825 (synopsis "Shell tab completion for Python argparse")
13826 (description "argcomplete provides extensible command line tab completion
13827of arguments and options for Python scripts using @code{argparse}. It's
13828particularly useful for programs with many options or sub-parsers that can
13829dynamically suggest completions; for example, when browsing resources over the
13830network.")
13831 (license license:asl2.0)))
13832
13833(define-public python2-argcomplete
13834 (package-with-python2 python-argcomplete))
361a2fcf
TGR
13835
13836(define-public python-xopen
13837 (package
13838 (name "python-xopen")
13839 (version "0.1.1")
13840 (source
13841 (origin
13842 (method url-fetch)
13843 (uri (pypi-uri "xopen" version))
13844 (sha256
13845 (base32
13846 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
13847 (file-name (string-append name "-" version ".tar.gz"))))
13848 (build-system python-build-system)
13849 (home-page "https://github.com/marcelm/xopen/")
13850 (synopsis "Open compressed files transparently")
13851 (description "This module provides an @code{xopen} function that works like
13852Python's built-in @code{open} function, but can also deal with compressed files.
13853Supported compression formats are gzip, bzip2 and, xz, and are automatically
13854recognized by their file extensions. The focus is on being as efficient as
13855possible on all supported Python versions.")
13856 (license license:expat)))
13857
13858(define-public python2-xopen
13859 (package-with-python2 python-xopen))
8d67610b
DM
13860
13861(define-public python2-cheetah
13862 (package
13863 (name "python2-cheetah")
13864 (version "2.4.4")
13865 (source
13866 (origin
13867 (method url-fetch)
13868 (uri (pypi-uri "Cheetah" version))
13869 (sha256
13870 (base32
13871 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
13872 (build-system python-build-system)
13873 (arguments
13874 `(#:python ,python-2))
13875 (propagated-inputs
13876 `(("python2-markdown" ,python2-markdown)))
13877 (home-page "https://pythonhosted.org/Cheetah/")
13878 (synopsis "Template engine")
13879 (description "Cheetah is a text-based template engine and Python code
13880generator.
13881
13882Cheetah can be used as a standalone templating utility or referenced as
13883a library from other Python applications. It has many potential uses,
13884but web developers looking for a viable alternative to ASP, JSP, PHP and
13885PSP are expected to be its principle user group.
13886
13887Features:
13888@enumerate
13889@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
13890 text-based format.
13891@item Cleanly separates content, graphic design, and program code.
13892@item Blends the power and flexibility of Python with a simple template language
13893 that non-programmers can understand.
13894@item Gives template writers full access to any Python data structure, module,
13895 function, object, or method in their templates.
13896@item Makes code reuse easy by providing an object-orientated interface to
13897 templates that is accessible from Python code or other Cheetah templates.
13898 One template can subclass another and selectively reimplement sections of it.
13899@item Provides a simple, yet powerful, caching mechanism that can dramatically
13900 improve the performance of a dynamic website.
13901@item Compiles templates into optimized, yet readable, Python code.
13902@end enumerate")
13903 (license (license:x11-style "file://LICENSE"))))
916aafa4 13904
d83d8722
DM
13905(define-public python-dulwich
13906 (package
13907 (name "python-dulwich")
13908 (version "0.16.3")
13909 (source
13910 (origin
13911 (method url-fetch)
13912 (uri (list (string-append "https://www.dulwich.io/releases/"
13913 "dulwich-" version ".tar.gz")
13914 (pypi-uri "dulwich" version)))
13915 (sha256
13916 (base32 "0fl47vzfgc3w3rmhn8naii905cjqcp0vc68iyvymxp7567hh6als"))))
13917 (build-system python-build-system)
13918 (arguments
13919 `(#:phases
13920 (modify-phases %standard-phases
13921 (add-before 'check 'fix-tests
13922 (lambda* (#:key inputs #:allow-other-keys)
13923 ;; The tests use Popen with a custom environment which doesn't
13924 ;; include PATH.
13925 (substitute* "dulwich/tests/compat/utils.py"
13926 (("'git'") (string-append "'"
13927 (which "git")
13928 "'")))
13929 (substitute* '("dulwich/tests/test_repository.py"
13930 "dulwich/tests/test_hooks.py")
13931 (("#!/bin/sh") (string-append "#!" (which "sh"))))
13932 (setenv "TEST_RUNNER" "unittest")
13933 (setenv "PYTHONHASHSEED" "random")
13934 #t)))))
13935 (propagated-inputs
13936 `(("python-fastimport" ,python-fastimport)))
13937 (native-inputs
13938 `(("python-mock" ,python-mock)
13939 ("python-geventhttpclient" ,python-geventhttpclient)
13940 ("git" ,git)))
13941 (home-page "https://www.dulwich.io/")
13942 (synopsis "Git implementation in Python")
13943 (description "Dulwich is an implementation of the Git file formats and
13944protocols written in pure Python.")
13945 ;; Can be used with either license.
13946 (license (list license:asl2.0 license:gpl2+))))
13947
13948(define-public python2-dulwich
13949 (package-with-python2 python-dulwich))
424b1ae7 13950
916aafa4
CZ
13951(define-public python-pbkdf2
13952 (package
13953 (name "python-pbkdf2")
13954 (version "1.3")
13955 (source
13956 (origin
13957 (method url-fetch)
13958 (uri (pypi-uri "pbkdf2" version))
13959 (sha256
13960 (base32
13961 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
13962 (build-system python-build-system)
fffcd8b8
MB
13963 (arguments
13964 '(#:phases
13965 (modify-phases %standard-phases
13966 (replace 'check
13967 (lambda _
13968 (setenv "PYTHONPATH"
13969 (string-append (getcwd) "/build/lib:"
13970 (getenv "PYTHONPATH")))
13971 (zero? (system* "python" "test/test_pbkdf2.py")))))))
916aafa4
CZ
13972 (propagated-inputs
13973 `(("python-pycrypto" ,python-pycrypto))) ; optional
13974 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
13975 (synopsis "Password-based key derivation")
13976 (description "This module implements the password-based key derivation
13977function, PBKDF2, specified in RSA PKCS#5 v2.0.
13978
13979PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
13980is part of the RSA Public Key Cryptography Standards series. The provided
13981implementation takes a password or a passphrase and a salt value (and
13982optionally a iteration count, a digest module, and a MAC module) and provides
13983a file-like object from which an arbitrarly-sized key can be read.")
13984 (license license:expat)))
13985
13986(define-public python2-pbkdf2
13987 (package-with-python2 python-pbkdf2))
cba84a38
CZ
13988
13989(define-public python-qrcode
13990 (package
13991 (name "python-qrcode")
13992 (version "5.3")
13993 (source
13994 (origin
13995 (method url-fetch)
13996 (uri (pypi-uri "qrcode" version))
13997 (sha256
13998 (base32
13999 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
14000 (build-system python-build-system)
6925cd78
MB
14001 (arguments
14002 ;; FIXME: Tests require packaging 'pymaging'.
14003 '(#:tests? #f))
cba84a38
CZ
14004 (propagated-inputs
14005 `(("python-lxml" ,python-lxml) ; for SVG output
14006 ("python-pillow" ,python-pillow) ; for PNG output
14007 ("python-six" ,python-six)))
14008 (home-page "https://github.com/lincolnloop/python-qrcode")
14009 (synopsis "QR Code image generator")
14010 (description "This package provides a pure Python QR Code generator
14011module. It uses the Python Imaging Library (PIL) to allow for the generation
14012of QR Codes.
14013
14014In addition this package provides a command line tool to generate QR codes and
14015either write these QR codes to a file or do the output as ascii art at the
14016console.")
14017 (license license:bsd-3)))
14018
14019(define-public python2-qrcode
14020 (package-with-python2 python-qrcode))
af7caada
CZ
14021
14022;; SlowAES isn't compatible with Python 3.
14023(define-public python2-slowaes
14024 (package
14025 (name "python2-slowaes")
14026 (version "0.1a1")
14027 (source
14028 (origin
14029 (method url-fetch)
14030 (uri (pypi-uri "slowaes" version))
14031 (sha256
14032 (base32
14033 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
14034 (build-system python-build-system)
14035 (arguments `(#:python ,python-2))
14036 (home-page "http://code.google.com/p/slowaes/")
14037 (synopsis "Implementation of AES in Python")
14038 (description "This package contains an implementation of AES in Python.
14039This implementation is slow (hence the project name) but still useful when
14040faster ones are not available.")
14041 (license license:asl2.0)))
1a917fc9
MFM
14042
14043(define-public python-rst2ansi
14044 (package
14045 (name "python-rst2ansi")
14046 (version "0.1.5")
14047 (source
14048 (origin
14049 (method url-fetch)
14050 (uri (pypi-uri "rst2ansi" version))
14051 (sha256
14052 (base32
14053 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
14054 (build-system python-build-system)
14055 (propagated-inputs
14056 `(("python-docutils" ,python-docutils)))
14057 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
14058 (synopsis "Convert RST to ANSI-decorated console output")
14059 (description
14060 "Python module dedicated to rendering RST (reStructuredText) documents
14061to ansi-escaped strings suitable for display in a terminal.")
14062 (license license:expat)))
2f4623db 14063
ca0e62bf
SR
14064(define-public python-ansi2html
14065 (package
14066 (name "python-ansi2html")
14067 (version "1.2.0")
14068 (source
14069 (origin
14070 (method url-fetch)
14071 (uri (pypi-uri "ansi2html" version))
14072 (sha256
14073 (base32
14074 "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
14075 (build-system python-build-system)
14076 (native-inputs
14077 `(("python-mock" ,python-mock)
14078 ("python-nose" ,python-nose)))
14079 (propagated-inputs
14080 `(("python-six" ,python-six)))
14081 (home-page "http://github.com/ralphbean/ansi2html")
14082 (synopsis "Convert ANSI-decorated console output to HTML")
14083 (description
14084 "@command{ansi2html} is a Python library and command line utility for
14085convering text with ANSI color codes to HTML or LaTeX.")
14086 (license license:gpl3+)))
14087
14088(define-public python2-ansi2html
14089 (package-with-python2 python-ansi2html))
14090
2f4623db
MFM
14091(define-public python-ddt
14092 (package
14093 (name "python-ddt")
14094 (version "1.1.1")
14095 (source
14096 (origin
14097 (method url-fetch)
14098 (uri (pypi-uri "ddt" version))
14099 (sha256
14100 (base32
14101 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
14102 (build-system python-build-system)
14103 (native-inputs
14104 `(("python-mock" ,python-mock)
14105 ("python-nose" ,python-nose)))
14106 (propagated-inputs
14107 `(("python-six" ,python-six)
14108 ("python-pyyaml" ,python-pyyaml)))
14109 (home-page "https://github.com/txels/ddt")
14110 (synopsis "Data-Driven Tests")
14111 (description
14112 "DDT (Data-Driven Tests) allows you to multiply one test case by running
14113it with different test data, and make it appear as multiple test cases.")
14114 (license license:expat)))
14115
14116(define-public python2-ddt
14117 (package-with-python2 python-ddt))
2299b137
MFM
14118
14119(define-public python-pycosat
14120 (package
14121 (name "python-pycosat")
14122 (version "0.6.1")
14123 (source
14124 (origin
14125 (method url-fetch)
14126 (uri (pypi-uri "pycosat" version))
14127 (sha256
14128 (base32
14129 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
14130 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
14131 (build-system python-build-system)
14132 (home-page "https://github.com/ContinuumIO/pycosat")
14133 (synopsis "Bindings to picosat (a SAT solver)")
14134 (description
14135 "This package provides efficient Python bindings to @code{picosat} on
14136the C level. When importing pycosat, the @code{picosat} solver becomes part
14137of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
14138Problem} (SAT) solver.")
14139 (license license:expat)))
14140
14141(define-public python2-pycosat
14142 (package-with-python2 python-pycosat))
8fd68504
MFM
14143
14144(define-public python2-ruamel.ordereddict
14145 (package
14146 (name "python2-ruamel.ordereddict")
14147 (version "0.4.9")
14148 (source
14149 (origin
14150 (method url-fetch)
14151 (uri (pypi-uri "ruamel.ordereddict" version))
14152 (sha256
14153 (base32
14154 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
14155 (build-system python-build-system)
14156 (arguments
14157 `(#:python ,python-2
14158 #:phases
14159 (modify-phases %standard-phases
14160 (delete 'check)
14161 (add-after 'install 'check
14162 (lambda* (#:key inputs outputs #:allow-other-keys)
14163 (add-installed-pythonpath inputs outputs)
14164 (zero? (system* "python" "test/testordereddict.py")))))))
14165 (home-page "https://bitbucket.org/ruamel/ordereddict")
14166 (synopsis "Version of dict that keeps keys in insertion order")
14167 (description
14168 "This is an implementation of an ordered dictionary with @dfn{Key
14169Insertion Order} (KIO: updates of values do not affect the position of the
14170key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
14171removed and put at the back). The standard library module @code{OrderedDict},
14172implemented later, implements a subset of @code{ordereddict} functionality.
14173Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
14174Order} (KSO, no sorting function can be specified, but a transform can be
14175specified to apply on the key before comparison (e.g. @code{string.lower})).")
14176 (license license:expat)))
d8768e31
EB
14177
14178(define-public python-pypeg2
14179 (package
14180 (name "python-pypeg2")
14181 (version "2.15.2")
14182 (source
14183 (origin
14184 (method url-fetch)
14185 (uri (pypi-uri "pyPEG2" version))
14186 (sha256
14187 (base32
14188 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
14189 (build-system python-build-system)
14190 (propagated-inputs `(("python-lxml" ,python-lxml)))
14191 (arguments
14192 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
14193 '(#:tests? #f))
14194 (home-page "https://fdik.org/pyPEG/")
14195 (synopsis "Parsering Expression Grammars in Python")
14196 (description "PyPEG is an intrinsic parser interpreter framework for
14197Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
14198parse many formal languages.")
14199 (license license:gpl2)))
33e9490c
AI
14200
14201(define-public python2-cliapp
14202 (package
14203 (name "python2-cliapp")
f6c58215 14204 (version "1.20170823")
33e9490c
AI
14205 (source
14206 (origin
14207 (method url-fetch)
14208 (uri (string-append
14209 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
14210 version ".tar.gz"))
14211 (sha256
14212 (base32
f6c58215 14213 "1i9gik0xrj6jmi95s5w988jl1y265baz5xm5pbqdyvsh8h9ln6yq"))))
33e9490c
AI
14214 (build-system python-build-system)
14215 (arguments
689042e5
AI
14216 `(#:python ,python-2
14217 #:phases
14218 (modify-phases %standard-phases
14219 ;; check phase needs to be run before the build phase. If not,
14220 ;; coverage-test-runner looks for tests for the built source files,
14221 ;; and fails.
14222 (delete 'check)
14223 (add-before 'build 'check
14224 (lambda _
14225 ;; Disable python3 tests
14226 (substitute* "check"
14227 (("python3") "# python3"))
14228 (zero? (system* "./check")))))))
14229 (native-inputs
14230 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
14231 ("python2-pep8" ,python2-pep8)))
33e9490c
AI
14232 (propagated-inputs
14233 `(("python2-pyaml" ,python2-pyaml)))
14234 (home-page "https://liw.fi/cliapp/")
14235 (synopsis "Python framework for command line programs")
14236 (description "@code{python2-cliapp} is a python framework for
14237command line programs. It contains the typical stuff such programs
14238need to do, such as parsing the command line for options, and
14239iterating over input files.")
14240 (license license:gpl2+)))
14241
77e99411
AI
14242(define-public python2-ttystatus
14243 (package
14244 (name "python2-ttystatus")
2d6da794 14245 (version "0.35")
77e99411
AI
14246 (source
14247 (origin
14248 (method url-fetch)
14249 (uri (string-append
14250 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
14251 version ".tar.gz"))
14252 (sha256
14253 (base32
2d6da794 14254 "0vivqbw7ddhsq1zj3g9cvvv4f0phl0pis2smsnwcr2szz2fk3hl6"))))
77e99411 14255 (build-system python-build-system)
f6180862
AI
14256 (native-inputs
14257 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
14258 ("python2-pep8" ,python2-pep8)))
77e99411 14259 (arguments
f6180862
AI
14260 `(#:python ,python-2
14261 #:phases
14262 (modify-phases %standard-phases
14263 ;; check phase needs to be run before the build phase. If not,
14264 ;; coverage-test-runner looks for tests for the built source files,
14265 ;; and fails.
14266 (delete 'check)
14267 (add-before 'build 'check
14268 (lambda _
14269 (zero? (system* "make" "check")))))))
77e99411
AI
14270 (home-page "https://liw.fi/ttystatus/")
14271 (synopsis "Python library for showing progress reporting and
14272status updates on terminals")
14273 (description "@code{python2-ttystatus} is a python library for
14274showing progress reporting and status updates on terminals, for
14275command line programs. Output is automatically adapted to the width
14276of the terminal: truncated if it does not fit, and resized if the
14277terminal size changes.")
14278 (license license:gpl3+)))
c220f0b4
AI
14279
14280(define-public python2-tracing
14281 (package
14282 (name "python2-tracing")
14283 (version "0.10")
14284 (source
14285 (origin
14286 (method url-fetch)
14287 (uri (string-append
14288 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
14289 version ".tar.gz"))
14290 (sha256
14291 (base32
14292 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
14293 (build-system python-build-system)
14294 (arguments
14295 `(#:python ,python-2))
14296 (home-page "https://liw.fi/tracing/")
14297 (synopsis "Python debug logging helper")
14298 (description "@code{python2-tracing} is a python library for
14299logging debug messages. It provides a way to turn debugging messages
14300on and off, based on the filename they occur in. It is much faster
14301than using @code{logging.Filter} to accomplish the same thing, which
14302matters when code is run in production mode. The actual logging still
14303happens using the @code{logging} library.")
14304 (license license:gpl3+)))
b6b2ca5d
AI
14305
14306(define-public python2-larch
14307 (package
14308 (name "python2-larch")
14309 (version "1.20151025")
14310 (source
14311 (origin
14312 (method url-fetch)
14313 (uri (string-append
14314 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
14315 version ".tar.gz"))
a0596a2f
AI
14316 (patches (search-patches
14317 "python2-larch-coverage-4.0a6-compatibility.patch"))
b6b2ca5d
AI
14318 (sha256
14319 (base32
14320 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
14321 (build-system python-build-system)
14322 (arguments
a0596a2f
AI
14323 `(#:python ,python-2
14324 #:phases
14325 (modify-phases %standard-phases
14326 ;; check phase needs to be run before the build phase. If not,
14327 ;; coverage-test-runner looks for tests for the built source files,
14328 ;; and fails.
14329 (delete 'check)
14330 (add-before 'build 'check
14331 (lambda _
14332 (zero? (system* "make" "check")))))))
14333 (native-inputs
14334 `(("cmdtest" ,cmdtest)
14335 ("python2-coverage-test-runner" ,python2-coverage-test-runner)))
b6b2ca5d
AI
14336 (propagated-inputs
14337 `(("python2-tracing" ,python2-tracing)))
14338 (home-page "https://liw.fi/larch/")
14339 (synopsis "Python copy-on-write B-tree library")
14340 (description "@code{python2-larch} is an implementation of
14341particular kind of B-tree, based on research by Ohad Rodeh. See
14342@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
14343on the data structure.
14344
14345The distinctive feature of this B-tree is that a node is never
14346(conceptually) modified. Instead, all updates are done by
14347copy-on-write. This makes it easy to clone a tree, and modify only the
14348clone, while other processes access the original tree.")
14349 (license license:gpl3+)))
35db2d3c
AP
14350
14351(define-public python-htmlmin
14352 (package
14353 (name "python-htmlmin")
14354 (version "0.1.10")
14355 (source
14356 (origin
14357 (method url-fetch)
14358 (uri (pypi-uri "htmlmin" version))
14359 (sha256
14360 (base32
14361 "0qxa93j3p1ak32qh8d9kshqv8v3z0hkc13dwbhp5cn7sn3xmsp6a"))))
14362 (arguments
14363 `(#:tests? #f)) ;htmlmin has no tests
14364 (build-system python-build-system)
14365 (home-page "https://htmlmin.readthedocs.org/en/latest/")
14366 (synopsis "HTML minifier")
14367 (description "@code{htmlmin} is an HTML minifier that just works.
14368It comes with safe defaults and easily configurable options.")
14369 (license license:bsd-3)))
14370
14371(define-public python2-htmlmin
14372 (package-with-python2 python-htmlmin))
78c55663
AP
14373
14374(define-public python-flask-htmlmin
14375 (package
14376 (name "python-flask-htmlmin")
14377 (version "1.2")
14378 (source
14379 (origin
14380 (method url-fetch)
14381 (uri (pypi-uri "Flask-HTMLmin" version))
14382 (sha256
14383 (base32
14384 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
14385 (propagated-inputs
14386 `(("python-flask" ,python-flask)
14387 ("python-htmlmin" ,python-htmlmin)))
14388 (build-system python-build-system)
14389 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
14390 (synopsis "HTML response minifier for Flask")
14391 (description
14392 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
14393 (license license:bsd-3)))
14394
14395(define-public python2-flask-htmlmin
14396 (package-with-python2 python-flask-htmlmin))
a71c8638
AP
14397
14398(define-public python-flask-login
14399 (package
14400 (name "python-flask-login")
14401 (version "0.4.0")
14402 (source
14403 (origin
14404 (method url-fetch)
14405 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
14406 version ".tar.gz"))
14407 (file-name (string-append name "-" version ".tar.gz"))
14408 (sha256
14409 (base32
14410 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
14411 (arguments
14412 ;; Tests fail PEP8 compliance. See:
14413 ;; https://github.com/maxcountryman/flask-login/issues/340
14414 `(#:tests? #f))
14415 (build-system python-build-system)
14416 (home-page "https://github.com/maxcountryman/flask-login")
14417 (synopsis "User session management for Flask")
14418 (description
14419 "@code{Flask-Login} provides user session management for Flask. It
14420handles the common tasks of logging in, logging out, and remembering your
14421users' sessions over extended periods of time.")
14422 (license license:expat)))
14423
14424(define-public python2-flask-login
14425 (package-with-python2 python-flask-login))
d5ef113c
AI
14426
14427(define-public python-astroid
14428 (package
14429 (name "python-astroid")
de2f56cf 14430 (version "1.5.3")
d5ef113c
AI
14431 (source
14432 (origin
14433 (method url-fetch)
14434 (uri (string-append
14435 "https://github.com/PyCQA/astroid/archive/astroid-"
14436 version ".tar.gz"))
14437 (sha256
14438 (base32
de2f56cf 14439 "0isn5p7f9n48hmksgbrj7dkm9dyglnayzn5jngk37qywg8a74ngn"))))
d5ef113c
AI
14440 (build-system python-build-system)
14441 (propagated-inputs
14442 `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
14443 ("python-six" ,python-six)
14444 ("python-wrapt" ,python-wrapt)))
14445 (arguments
14446 `(#:phases
14447 (modify-phases %standard-phases
14448 (replace 'check
14449 (lambda _
14450 (zero? (system* "python" "-m" "unittest" "discover"
14451 "-p" "unittest*.py")))))))
14452 (home-page "https://github.com/PyCQA/astroid")
14453 (synopsis "Common base representation of python source code for pylint and
14454other projects")
14455 (description "@code{python-astroid} provides a common base representation
14456of python source code for projects such as pychecker, pyreverse, pylint, etc.
14457
14458It provides a compatible representation which comes from the _ast module. It
14459rebuilds the tree generated by the builtin _ast module by recursively walking
14460down the AST and building an extended ast. The new node classes have
14461additional methods and attributes for different usages. They include some
14462support for static inference and local name scopes. Furthermore, astroid
14463builds partial trees by inspecting living objects.")
de2f56cf
MB
14464 (license license:lgpl2.1+)
14465 (properties `((python2-variant . ,(delay python2-astroid))))))
d5ef113c
AI
14466
14467(define-public python2-astroid
de2f56cf
MB
14468 (let ((base (package-with-python2
14469 (strip-python2-variant python-astroid))))
14470 (package (inherit base)
14471 (propagated-inputs
14472 `(("python2-backports-functools-lru-cache"
14473 ,python2-backports-functools-lru-cache)
14474 ("python2-enum34" ,python2-enum34)
14475 ("python2-singledispatch" ,python2-singledispatch)
14476 ,@(package-propagated-inputs base))))))
6ba0af79
AI
14477
14478(define-public python-isort
14479 (package
14480 (name "python-isort")
14481 (version "4.2.5")
14482 (source
14483 (origin
14484 (method url-fetch)
14485 (uri (string-append
14486 "https://github.com/timothycrosley/isort/archive/"
14487 version ".tar.gz"))
14488 (file-name (string-append name "-" version ".tar.gz"))
14489 (sha256
14490 (base32
14491 "0zsrgkb0krn5476yncy5dd56k7dk34zqb4bnlvwy44ixgilyjmfh"))))
14492 (build-system python-build-system)
14493 (native-inputs
14494 `(("python-mock" ,python-mock)
14495 ("python-pytest" ,python-pytest)))
14496 (home-page "https://github.com/timothycrosley/isort")
14497 (synopsis "Python utility/library to sort python imports")
14498 (description "@code{python-isort} is a python utility/library to sort
14499imports alphabetically, and automatically separated into sections. It
14500provides a command line utility, a python library and plugins for various
14501editors.")
14502 (license license:expat)))
14503
14504(define-public python2-isort
14505 (package-with-python2 python-isort))
965a083e
AI
14506
14507(define-public python2-backports-functools-lru-cache
14508 (package
14509 (name "python2-backports-functools-lru-cache")
14510 (version "1.3")
14511 (source
14512 (origin
14513 (method url-fetch)
14514 ;; only the pypi tarballs contain the necessary metadata
14515 (uri (pypi-uri "backports.functools_lru_cache" version))
14516 (sha256
14517 (base32
14518 "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4"))))
14519 (build-system python-build-system)
14520 (native-inputs
14521 `(("python2-setuptools-scm" ,python2-setuptools-scm)))
14522 (arguments
14523 `(#:python ,python-2))
14524 (home-page "https://github.com/jaraco/backports.functools_lru_cache")
14525 (synopsis "Backport of functools.lru_cache from Python 3.3")
14526 (description "@code{python2-backports-functools-lru-cache} is a backport
14527of @code{functools.lru_cache} from python 3.3.")
14528 (license license:expat)))
23db3fc6
AI
14529
14530(define-public python-configparser
14531 (package
14532 (name "python-configparser")
14533 (version "3.5.0")
14534 (source
14535 (origin
14536 (method url-fetch)
14537 (uri (string-append
14538 "https://bitbucket.org/ambv/configparser/get/"
14539 version ".tar.bz2"))
14540 (file-name (string-append name "-" version ".tar.gz"))
14541 (sha256
14542 (base32
14543 "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
14544 (build-system python-build-system)
14545 (home-page "http://docs.python.org/py3k/library/configparser.html")
14546 (synopsis "Backport of configparser from python 3.5")
14547 (description "@code{python-configparser} is a backport of
14548@code{configparser} from Python 3.5 so that it can be used directly
14549in other versions.")
14550 (license license:expat)))
14551
14552(define-public python2-configparser
14553 (package-with-python2 python-configparser))
61550ded
AI
14554
14555(define-public python2-coverage-test-runner
14556 (package
14557 (name "python2-coverage-test-runner")
14558 (version "1.11")
14559 (source
14560 (origin
14561 (method url-fetch)
14562 (uri (string-append
14563 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
14564 "coverage-test-runner/snapshot/coverage-test-runner-"
14565 version ".tar.gz"))
14566 (sha256
14567 (base32
14568 "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
14569 (build-system python-build-system)
14570 (arguments
14571 `(#:python ,python-2
14572 #:phases
14573 (modify-phases %standard-phases
14574 (replace 'check
14575 (lambda _
14576 (zero? (system* "./testrun")))))))
14577 (propagated-inputs
14578 `(("python2-coverage" ,python2-coverage)))
14579 (home-page "https://liw.fi/coverage-test-runner/")
14580 (synopsis "Python module for running unit tests")
14581 (description "@code{CoverageTestRunner} is a python module for running
d1e4ad1b 14582unit tests and failing them if the unit test module does not exercise all
61550ded
AI
14583statements in the module it tests.")
14584 (license license:gpl3+)))
315944a3
AI
14585
14586(define-public python-pylint
14587 (package
14588 (name "python-pylint")
a8a964db 14589 (version "1.7.2")
315944a3
AI
14590 (source
14591 (origin
14592 (method url-fetch)
14593 (uri (string-append
14594 "https://github.com/PyCQA/pylint/archive/pylint-"
14595 version ".tar.gz"))
14596 (sha256
14597 (base32
a8a964db 14598 "0mzn1czhf1mgr2wiqfihb274sja02h899b85kywdpivppa9nwrmp"))))
315944a3
AI
14599 (build-system python-build-system)
14600 (native-inputs
a8a964db
MB
14601 `(("python-pytest" ,python-pytest)
14602 ("python-pytest-runner" ,python-pytest-runner)
14603 ("python-tox" ,python-tox)))
315944a3
AI
14604 (propagated-inputs
14605 `(("python-astroid" ,python-astroid)
14606 ("python-isort" ,python-isort)
14607 ("python-mccabe" ,python-mccabe)
14608 ("python-six" ,python-six)))
14609 (arguments
14610 `(#:phases
14611 (modify-phases %standard-phases
14612 (replace 'check
14613 (lambda _
14614 ;; Somehow, tests for python2-pylint
14615 ;; fail if run from the build directory
14616 (let ((work "/tmp/work"))
14617 (mkdir-p work)
14618 (setenv "PYTHONPATH"
14619 (string-append (getenv "PYTHONPATH") ":" work))
14620 (copy-recursively "." work)
14621 (with-directory-excursion "/tmp"
14622 (zero? (system* "python" "-m" "unittest" "discover"
14623 "-s" (string-append work "/pylint/test")
14624 "-p" "*test_*.py")))))))))
14625 (home-page "https://github.com/PyCQA/pylint")
14626 (synopsis "Python source code analyzer which looks for coding standard
14627errors")
14628 (description "Pylint is a Python source code analyzer which looks
14629for programming errors, helps enforcing a coding standard and sniffs
14630for some code smells (as defined in Martin Fowler's Refactoring book).
14631
14632Pylint has many rules enabled by default, way too much to silence them
14633all on a minimally sized program. It's highly configurable and handle
14634pragmas to control it from within your code. Additionally, it is
14635possible to write plugins to add your own checks.")
462ae6f6 14636 (properties `((python2-variant . ,(delay python2-pylint))))
315944a3
AI
14637 (license license:gpl2+)))
14638
14639(define-public python2-pylint
462ae6f6
DM
14640 (let ((pylint (package-with-python2
14641 (strip-python2-variant python-pylint))))
315944a3
AI
14642 (package (inherit pylint)
14643 (propagated-inputs
14644 `(("python2-backports-functools-lru-cache"
14645 ,python2-backports-functools-lru-cache)
14646 ("python2-configparser" ,python2-configparser)
14647 ,@(package-propagated-inputs pylint))))))
5d0c3ba8
MFM
14648
14649(define-public python-paramunittest
14650 (package
14651 (name "python-paramunittest")
14652 (version "0.2")
14653 (source
14654 (origin
14655 (method url-fetch)
14656 (uri (pypi-uri "ParamUnittest" version))
14657 (sha256
14658 (base32
14659 "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
14660 (build-system python-build-system)
14661 (home-page
14662 "https://github.com/rik0/ParamUnittest")
14663 (synopsis
14664 "Simple extension to have parametrized unit tests")
14665 (description
14666 "This package allows to create parametrized unit-tests that work with the standard
14667unittest package. A parametrized test case is automatically converted to multiple test
14668cases. Since they are TestCase subclasses, they work with other test suites that
14669recognize TestCases.")
14670 (license license:bsd-2)))
14671
14672(define-public python2-python-paramunittest
14673 (package-with-python2 python-paramunittest))
eec21d4b
MFM
14674
14675(define-public python-mando
14676 (package
14677 (name "python-mando")
14678 (version "0.5")
14679 (source
14680 (origin
14681 (method url-fetch)
14682 (uri (pypi-uri "mando" version))
14683 (sha256
14684 (base32
14685 "0q05h66439gqdmlk4jqm6xrwrzfdgs4mwk70barxhr2y83qbbdc0"))))
14686 (build-system python-build-system)
14687 (propagated-inputs
14688 `(("python-rst2ansi" ,python-rst2ansi)))
14689 (native-inputs
14690 `(("python-sphinx" ,python-sphinx-1.5.3)
14691 ("python-paramunittest" ,python-paramunittest)))
14692 (home-page "https://mando.readthedocs.org/")
14693 (synopsis
14694 "Wrapper around argparse, allowing creation of complete CLI applications")
14695 (description
14696 "This package is a wrapper around argparse, allowing you to write complete CLI
14697 applications in seconds while maintaining all the flexibility.")
14698 (license license:expat)))
14699
14700(define-public python2-mando
14701 (package-with-python2 python-mando))
b98d4ec0
MFM
14702
14703(define-public python-mando-0.3.1
14704 ;; python-radon (version 1.5.0) has a requirement
14705 ;; for mando<0.4,>=0.3
14706 (package
14707 (inherit python-mando)
14708 (name "python-mando")
14709 (version "0.3.1")
14710 (source
14711 (origin
14712 (method url-fetch)
14713 (uri (string-append "https://github.com/rubik/mando/archive/v"
14714 version
14715 ".tar.gz"))
14716 (sha256
14717 (base32
14718 "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
16fe516e
BS
14719
14720(define-public python-fudge
14721 (package
14722 (name "python-fudge")
14723 ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
14724 ;; package, which is currently the only use of this package.
14725 (version "0.9.6")
14726 (source
14727 (origin
14728 (method url-fetch)
14729 (uri (pypi-uri "fudge" version))
14730 (sha256
14731 (base32
14732 "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
14733 (build-system python-build-system)
14734 (arguments
14735 `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package.
14736 (home-page "https://github.com/fudge-py/fudge")
14737 (synopsis "Replace real objects with fakes/mocks/stubs while testing")
14738 (description
14739 "Fudge is a Python module for using fake objects (mocks and stubs) to
14740test real ones.
14741
14742In readable Python code, you declare the methods available on your fake object
14743and how they should be called. Then you inject that into your application and
14744start testing. This declarative approach means you don’t have to record and
14745playback actions and you don’t have to inspect your fakes after running code.
14746If the fake object was used incorrectly then you’ll see an informative
14747exception message with a traceback that points to the culprit.")
14748 (license license:expat)))
14749
14750(define-public python2-fudge
14751 (package-with-python2 python-fudge))
f3f8d159
DM
14752
14753(define-public python-oauth2client
14754 (package
14755 (name "python-oauth2client")
14756 (version "4.0.0")
14757 (source
14758 (origin
14759 (method url-fetch)
14760 (uri (pypi-uri "oauth2client" version))
14761 (sha256
14762 (base32
14763 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
14764 (build-system python-build-system)
14765 (arguments
14766 `(#:tests? #f))
14767 (propagated-inputs
14768 `(("python-httplib2" ,python-httplib2)
14769 ("python-pyasn1" ,python-pyasn1)
14770 ("python-pyasn1-modules" ,python-pyasn1-modules)
14771 ("python-rsa" ,python-rsa)
14772 ("python-six" ,python-six)))
14773 (home-page "http://github.com/google/oauth2client/")
14774 (synopsis "OAuth 2.0 client library")
14775 (description "@code{python-oauth2client} provides an OAuth 2.0 client
14776library for Python")
14777 (license license:asl2.0)))
6e7302e9
DM
14778
14779(define-public python-flask-oidc
14780 (package
14781 (name "python-flask-oidc")
14782 (version "1.1.1")
14783 (source
14784 (origin
14785 (method url-fetch)
14786 (uri (pypi-uri "flask-oidc" version))
14787 (sha256
14788 (base32
14789 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
14790 (build-system python-build-system)
14791 (propagated-inputs
14792 `(("python-flask" ,python-flask)
14793 ("python-itsdangerous" ,python-itsdangerous)
14794 ("python-oauth2client" ,python-oauth2client)
14795 ("python-six" ,python-six)))
14796 (native-inputs
14797 `(("python-nose" ,python-nose)
14798 ("python-mock" ,python-mock)))
14799 (home-page "https://github.com/puiterwijk/flask-oidc")
14800 (synopsis "OpenID Connect extension for Flask")
14801 (description "@code{python-flask-oidc} provides an OpenID Connect extension
14802for Flask.")
14803 (license license:bsd-2)))
7e16478f
DM
14804
14805(define-public python-mwclient
14806 (package
14807 (name "python-mwclient")
14808 (version "0.8.4")
14809 (source
14810 (origin
14811 (method url-fetch)
14812 ;; The PyPI version wouldn't contain tests.
14813 (uri (string-append "https://github.com/mwclient/mwclient/archive/"
14814 "v" version ".tar.gz"))
14815 (sha256
14816 (base32
14817 "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv"))))
14818 (build-system python-build-system)
14819 (propagated-inputs
14820 `(("python-requests" ,python-requests)
14821 ("python-requests-oauthlib"
14822 ,python-requests-oauthlib)
14823 ("python-six" ,python-six)))
14824 (native-inputs
14825 `(("python-mock" ,python-mock)
14826 ("python-pytest" ,python-pytest)
14827 ("python-pytest-pep8" ,python-pytest-pep8)
14828 ("python-pytest-cache" ,python-pytest-cache)
14829 ("python-pytest-cov" ,python-pytest-cov)
14830 ("python-responses" ,python-responses)))
14831 (home-page "https://github.com/btongminh/mwclient")
14832 (synopsis "MediaWiki API client")
14833 (description "This package provides a MediaWiki API client.")
14834 (license license:expat)))
14835
14836(define-public python2-mwclient
14837 (package-with-python2 python-mwclient))
59a97288
JL
14838
14839(define-public python-pytest-warnings
14840 (package
14841 (name "python-pytest-warnings")
14842 (version "0.2.0")
14843 (source
14844 (origin
14845 (method url-fetch)
14846 (uri (pypi-uri "pytest-warnings" version))
14847 (sha256
14848 (base32
14849 "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
14850 (build-system python-build-system)
14851 (propagated-inputs
14852 `(("pytest" ,python-pytest-3.0)))
14853 (home-page "https://github.com/fschulze/pytest-warnings")
14854 (synopsis "Pytest plugin to list Python warnings in pytest report")
14855 (description
14856 "Python-pytest-warnings is a pytest plugin to list Python warnings in
14857pytest report.")
14858 (license license:expat)))
14859
14860(define-public python2-pytest-warnings
14861 (package-with-python2 python-pytest-warnings))
2d6e56ba 14862
a12b30a0
DM
14863(define-public python-pytest-capturelog
14864 (package
14865 (name "python-pytest-capturelog")
14866 (version "0.7")
14867 (source
14868 (origin
14869 (method url-fetch)
14870 (uri (pypi-uri "pytest-capturelog" version ".tar.gz"))
14871 (sha256
14872 (base32
14873 "038049nyjl7di59ycnxvc9nydivc5m8np3hqq84j2iirkccdbs5n"))))
14874 (build-system python-build-system)
14875 (propagated-inputs
14876 `(("pytest" ,python-pytest-3.0)))
14877 (home-page "http://bitbucket.org/memedough/pytest-capturelog/overview")
14878 (synopsis "Pytest plugin to catch log messages")
14879 (description
14880 "Python-pytest-catchlog is a pytest plugin to catch log messages.")
14881 (license license:expat)))
14882
14883(define-public python2-pytest-capturelog
14884 (package-with-python2 python-pytest-capturelog))
14885
2d6e56ba
JL
14886(define-public python-pytest-catchlog
14887 (package
14888 (name "python-pytest-catchlog")
14889 (version "1.2.2")
14890 (source
14891 (origin
14892 (method url-fetch)
14893 (uri (pypi-uri "pytest-catchlog" version ".zip"))
14894 (sha256
14895 (base32
14896 "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
14897 (build-system python-build-system)
14898 (native-inputs
14899 `(("unzip" ,unzip)))
14900 (propagated-inputs
14901 `(("pytest" ,python-pytest-3.0)))
14902 (home-page "https://github.com/eisensheng/pytest-catchlog")
14903 (synopsis "Pytest plugin to catch log messages")
14904 (description
14905 "Python-pytest-catchlog is a pytest plugin to catch log messages. This is
14906a fork of pytest-capturelog.")
14907 (license license:expat)))
14908
14909(define-public python2-pytest-catchlog
14910 (package-with-python2 python-pytest-catchlog))
75805449
JL
14911
14912(define-public python-utils
14913 (package
14914 (name "python-utils")
14915 (version "2.1.0")
14916 (source (origin
14917 (method url-fetch)
14918 (uri (pypi-uri "python-utils" version))
14919 (sha256
14920 (base32
14921 "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
14922 (build-system python-build-system)
14923 (native-inputs
14924 `(("pytest-runner" ,python-pytest-runner)
14925 ("pytest" ,python-pytest)
14926 ("six" ,python-six)))
14927 (home-page "https://github.com/WoLpH/python-utils")
14928 (synopsis "Convenient utilities not included with the standard Python install")
14929 (description
14930 "Python Utils is a collection of small Python functions and classes which
14931make common patterns shorter and easier.")
14932 (license license:bsd-2)))
14933
14934(define-public python2-utils
14935 (package-with-python2 python-utils))
709a5a93
JL
14936
14937(define-public python-webassets
14938 (package
14939 (name "python-webassets")
14940 (version "0.12.1")
14941 (source
14942 (origin
14943 (method url-fetch)
14944 (uri (pypi-uri "webassets" version))
14945 (sha256
14946 (base32
14947 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
14948 (build-system python-build-system)
14949 (native-inputs
14950 `(("python-jinja2" ,python-jinja2)
14951 ("python-mock" ,python-mock)
14952 ("python-nose" ,python-nose)
14953 ("python-pytest" ,python-pytest)))
14954 (home-page "https://github.com/miracle2k/webassets")
14955 (synopsis "Media asset management")
14956 (description "Merges, minifies and compresses Javascript and CSS files,
14957supporting a variety of different filters, including YUI, jsmin, jspacker or
14958CSS tidy. Also supports URL rewriting in CSS files.")
14959 (license license:bsd-2)))
4c066b72
JL
14960
14961(define-public python-sphinx-me
14962 (package
14963 (name "python-sphinx-me")
14964 (version "0.3")
14965 (source
14966 (origin
14967 (method url-fetch)
14968 (uri (pypi-uri "sphinx-me" version))
14969 (sha256
14970 (base32
14971 "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
14972 (build-system python-build-system)
14973 (home-page "https://github.com/stephenmcd/sphinx-me")
14974 (synopsis "Create a Sphinx documentation shell")
14975 (description
14976 "Create a Sphinx documentation shell for your project and include the
14977README file as the documentation index. It handles extracting the required
14978meta data such as the project name, author and version from your project for
14979use in your Sphinx docs.")
14980 (license license:bsd-2)))
14981
14982(define-public python2-sphinx-me
14983 (package-with-python2 python-sphinx-me))
03ded2fd
JL
14984
14985(define-public python-cssmin
14986 (package
14987 (name "python-cssmin")
14988 (version "0.2.0")
14989 (source
14990 (origin
14991 (method url-fetch)
14992 (uri (pypi-uri "cssmin" version))
14993 (sha256
14994 (base32
14995 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
14996 (build-system python-build-system)
14997 (home-page "https://github.com/zacharyvoase/cssmin")
14998 (synopsis "Python port of the YUI CSS Compressor")
14999 (description "Python port of the YUI CSS Compressor.")
15000 (license (list license:expat license:bsd-3))))
15001
15002(define-public python2-cssmin
15003 (package-with-python2 python-cssmin))
186d4f8d
JL
15004
15005(define-public python-diff-match-patch
15006 (package
15007 (name "python-diff-match-patch")
15008 (version "20121119")
15009 (source
15010 (origin
15011 (method url-fetch)
15012 (uri (pypi-uri "diff-match-patch" version))
15013 (sha256
15014 (base32
15015 "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
15016 (build-system python-build-system)
15017 (home-page "https://code.google.com/p/google-diff-match-patch")
15018 (synopsis "Synchronize plain text")
15019 (description "Diff Match and Patch libraries offer robust algorithms to
15020perform the operations required for synchronizing plain text.")
15021 (license license:asl2.0)))
15022
15023(define-public python2-diff-match-patch
15024 (package-with-python2 python-diff-match-patch))
d15a4791
JL
15025
15026(define-public python-dirsync
15027 (package
15028 (name "python-dirsync")
15029 (version "2.2.2")
15030 (source
15031 (origin
15032 (method url-fetch)
15033 (uri (pypi-uri "dirsync" version ".zip"))
15034 (sha256
15035 (base32
15036 "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
15037 (build-system python-build-system)
15038 (native-inputs
15039 `(("unzip" ,unzip)))
15040 (propagated-inputs
15041 `(("six" ,python-six)))
15042 (home-page "https://bitbucket.org/tkhyn/dirsync")
15043 (synopsis "Advanced directory tree synchronisation tool")
15044 (description "Advanced directory tree synchronisation tool.")
15045 (license license:expat)))
15046
15047(define-public python2-dirsync
15048 (package-with-python2 python-dirsync))
1b16f1ec
JL
15049
15050(define-public python-nosexcover
15051 (package
15052 (name "python-nosexcover")
15053 (version "1.0.11")
15054 (source (origin
15055 (method url-fetch)
15056 (uri (pypi-uri "nosexcover" version))
15057 (sha256
15058 (base32
15059 "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
15060 (build-system python-build-system)
15061 (propagated-inputs
15062 `(("python-coverage" ,python-coverage)
15063 ("python-nose" ,python-nose)))
15064 (home-page "http://github.com/cmheisel/nose-xcover")
15065 (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
15066 (description "Nose-xcover is a companion to the built-in
15067@code{nose.plugins.cover}. This plugin will write out an XML coverage report
15068to a file named coverage.xml.
15069
15070It will honor all the options you pass to the Nose coverage plugin,
15071especially -cover-package.")
15072 (license license:expat)))
15073
15074(define-public python2-nosexcover
15075 (package-with-python2 python-nosexcover))
afdfbb1d
JL
15076
15077(define-public python-elasticsearch
15078 (package
15079 (name "python-elasticsearch")
15080 (version "1.0.0")
15081 (source
15082 (origin
15083 (method url-fetch)
15084 (uri (pypi-uri "elasticsearch" version))
15085 (sha256
15086 (base32
15087 "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
15088 (build-system python-build-system)
15089 (native-inputs
15090 `(("python-mock" ,python-mock)
15091 ("python-nosexcover" ,python-nosexcover)
15092 ("python-pyaml" ,python-pyaml)
15093 ("python-requests" ,python-requests)))
15094 (propagated-inputs
15095 `(("urllib3" ,python-urllib3)))
15096 (arguments
15097 ;; tests require the test_elasticsearch module but it is not distributed.
15098 `(#:tests? #f))
15099 (home-page "https://github.com/elastic/elasticsearch-py")
15100 (synopsis "Low-level client for Elasticsearch")
15101 (description "Official low-level client for Elasticsearch. Its goal is to
15102provide common ground for all Elasticsearch-related code in Python; because of
15103this it tries to be opinion-free and very extendable.")
15104 (license license:expat)))
15105
15106(define-public python2-elasticsearch
15107 (package-with-python2 python-elasticsearch))
a17ccbbb
JL
15108
15109(define-public python-levenshtein
15110 (package
15111 (name "python-levenshtein")
15112 (version "0.12.0")
15113 (source
15114 (origin
15115 (method url-fetch)
15116 (uri (pypi-uri "python-Levenshtein" version))
15117 (sha256
15118 (base32
15119 "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
15120 (build-system python-build-system)
15121 (home-page "https://github.com/ztane/python-Levenshtein")
15122 (synopsis "Fast computation of Levenshtein distance and string similarity")
15123 (description
15124 "The Levenshtein Python C extension module contains functions for fast computation of
15125@enumerate
15126@item Levenshtein (edit) distance, and edit operations
15127@item string similarity
15128@item approximate median strings, and generally string averaging
15129@item string sequence and set similarity
15130@end enumerate
15131It supports both normal and Unicode strings.")
15132 (license license:gpl2+)))
15133
15134(define-public python2-levenshtein
15135 (package-with-python2 python-levenshtein))
38a370d2
JL
15136
15137(define-public python-scandir
15138 (package
15139 (name "python-scandir")
15140 (version "1.4")
15141 (source
15142 (origin
15143 (method url-fetch)
15144 (uri (pypi-uri "scandir" version))
15145 (sha256
15146 (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
15147 (build-system python-build-system)
15148 (home-page "https://github.com/benhoyt/scandir")
15149 (synopsis "Directory iteration function")
15150 (description
15151 "Directory iteration function like os.listdir(), except that instead of
15152returning a list of bare filenames, it yields DirEntry objects that include
15153file type and stat information along with the name. Using scandir() increases
15154the speed of os.walk() by 2-20 times (depending on the platform and file
15155system) by avoiding unnecessary calls to os.stat() in most cases.")
15156 (license license:bsd-3)))
15157
15158(define-public python2-scandir
15159 (package-with-python2 python-scandir))
18c25460
JL
15160
15161(define-public python2-stemming
15162 (package
15163 (name "python2-stemming")
15164 (version "1.0.1")
15165 (source
15166 (origin
15167 (method url-fetch)
15168 (uri (pypi-uri "stemming" version))
15169 (sha256
15170 (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
15171 (build-system python-build-system)
15172 (arguments
15173 `(#:python ,python-2))
15174 (home-page "https://bitbucket.org/mchaput/stemming/overview")
15175 (synopsis "Python implementations of various stemming algorithms")
15176 (description
15177 "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
15178stemming algorithms for English. These implementations are straightforward and
15179efficient, unlike some Python versions of the same algorithms available on the
15180Web. This package is an extraction of the stemming code included in the Whoosh
15181search engine.")
15182 (license license:public-domain)))
54153b85
JL
15183
15184(define-public python-factory-boy
15185 (package
15186 (name "python-factory-boy")
15187 (version "2.8.1")
15188 (source
15189 (origin
15190 (method url-fetch)
15191 (uri (pypi-uri "factory_boy" version))
15192 (sha256
15193 (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
15194 (build-system python-build-system)
15195 (arguments
15196 ;; Tests are not included in the tarball.
15197 `(#:tests? #f))
15198 (propagated-inputs
15199 `(("faker" ,python-faker)))
15200 (home-page "https://github.com/benhoyt/scandir")
15201 (synopsis "Versatile test fixtures replacement")
15202 (description
15203 "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
15204
15205As a fixtures replacement tool, it aims to replace static, hard to maintain
15206fixtures with easy-to-use factories for complex object.
15207
15208Instead of building an exhaustive test setup with every possible combination
15209of corner cases, factory_boy allows you to use objects customized for the
15210current test, while only declaring the test-specific fields")
15211 (license license:expat)))
15212
15213(define-public python2-factory-boy
15214 (package-with-python2 python-factory-boy))
5f25fd69
JL
15215
15216(define-public python-translate-toolkit
15217 (package
15218 (name "python-translate-toolkit")
15219 (version "2.1.0")
15220 (source
15221 (origin
15222 (method url-fetch)
15223 (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
15224 (sha256
15225 (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
15226 (build-system python-build-system)
15227 (native-inputs
15228 `(("python-pytest" ,python-pytest)
15229 ("python-sphinx" ,python-sphinx)))
15230 (propagated-inputs
15231 `(("python-babel" ,python-babel)
15232 ("python-beautifulsoup4" ,python-beautifulsoup4)
15233 ("python-chardet" ,python-chardet)
15234 ("python-diff-match-patch" ,python-diff-match-patch)
15235 ("python-levenshtein" ,python-levenshtein)
15236 ("python-lxml" ,python-lxml)
15237 ("python-six" ,python-six)
15238 ("python-vobject" ,python-vobject)
15239 ("python-pyyaml" ,python-pyyaml)))
15240 (arguments
15241 ;; TODO: tests are not run, because they end with
15242 ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
15243 ;; 'parse_funcs'
15244 ;; during test setup.
15245 `(#:tests? #f))
15246 (home-page "http://toolkit.translatehouse.org")
15247 (synopsis "Tools and API for translation and localization engineering")
15248 (description
15249 "Tools and API for translation and localization engineering. It contains
15250several utilities, as well as an API for building localization tools.")
15251 (license license:gpl2+)))
15252
15253(define-public python2-translate-toolkit
15254 (package-with-python2 python-translate-toolkit))
3b08d1a6
JL
15255
15256(define-public python-mysqlclient
15257 (package
15258 (name "python-mysqlclient")
15259 (version "1.3.10")
15260 (source
15261 (origin
15262 (method url-fetch)
15263 (uri (pypi-uri "mysqlclient" version))
15264 (sha256
15265 (base32
15266 "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
15267 (build-system python-build-system)
15268 (native-inputs
15269 `(("mariadb" ,mariadb)
15270 ("nose" ,python-nose)
15271 ("mock" ,python-mock)
15272 ("py.test" ,python-pytest)))
15273 (inputs
15274 `(("mysql" ,mysql)
15275 ("libz" ,zlib)
15276 ("openssl" ,openssl)))
15277 (home-page "https://github.com/PyMySQL/mysqlclient-python")
15278 (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
15279 (description "MySQLdb is an interface to the popular MySQL database server
15280for Python. The design goals are:
15281@enumerate
15282@item Compliance with Python database API version 2.0 [PEP-0249],
15283@item Thread-safety,
15284@item Thread-friendliness (threads will not block each other).
15285@end enumerate")
15286 (license license:gpl2)))
15287
15288(define-public python2-mysqlclient
15289 (package-with-python2 python-mysqlclient))
c009e934
JL
15290
15291(define-public python-hiredis
15292 (package
15293 (name "python-hiredis")
15294 (version "0.2.0")
15295 (source
15296 (origin
15297 (method url-fetch)
15298 (uri (pypi-uri "hiredis" version))
15299 (sha256
15300 (base32
15301 "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
15302 (build-system python-build-system)
15303 (arguments
15304 ;; no tests
15305 `(#:tests? #f))
15306 (home-page "https://github.com/redis/hiredis-py")
15307 (synopsis "Python extension that wraps protocol parsing code in hiredis")
15308 (description "Python-hiredis is a python extension that wraps protocol
15309parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
15310 (license license:bsd-3)))
15311
15312(define-public python2-hiredis
15313 (package-with-python2 python-hiredis))
91154d4a
JL
15314
15315(define-public python-fakeredis
15316 (package
15317 (name "python-fakeredis")
15318 (version "0.8.2")
15319 (source
15320 (origin
15321 (method url-fetch)
15322 (uri (pypi-uri "fakeredis" version))
15323 (sha256
15324 (base32
15325 "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
15326 (build-system python-build-system)
15327 (arguments
15328 ;; no tests
15329 `(#:tests? #f))
15330 (home-page "https://github.com/jamesls/fakeredis")
15331 (synopsis "Fake implementation of redis API for testing purposes")
15332 (description "Fakeredis is a pure python implementation of the redis-py
15333python client that simulates talking to a redis server. This was created for a
15334single purpose: to write unittests. Setting up redis is not hard, but many time
15335 you want to write unittests that do not talk to an external server (such as
15336redis). This module now allows tests to simply use this module as a reasonable
15337substitute for redis.")
15338 (license license:bsd-3)))
15339
15340(define-public python2-fakeredis
15341 (package-with-python2 python-fakeredis))
d1693269
DM
15342
15343(define-public python-behave-web-api
15344 (package
15345 (name "python-behave-web-api")
15346 (version "1.0.6")
15347 (source
15348 (origin
15349 (method url-fetch)
15350 (uri (pypi-uri "behave-web-api" version))
15351 (sha256
15352 (base32
15353 "03kpq2xsy1gab3jy0dccbxlsg7vwfy4lagss0qldwmx3xz6b3i19"))))
15354 (build-system python-build-system)
15355 (arguments
15356 `(#:phases
15357 (modify-phases %standard-phases
15358 (add-after 'unpack 'fix-dependencies
15359 (lambda _
15360 (substitute* "setup.py"
15361 (("'wheel'") "") ; We don't use it.
15362 (("'ordereddict==1.1'") ""))))))) ; Python >= 2.7 has it built-in.
15363 (propagated-inputs
15364 `(("behave" ,behave)
15365 ("python-requests" ,python-requests)))
15366 (home-page "https://github.com/jefersondaniel/behave-web-api")
15367 (synopsis "Provides testing for JSON APIs with Behave for Python")
15368 (description "This package provides testing utility modules for testing
15369JSON APIs with Behave.")
15370 (license license:expat)))
15371
15372(define-public python2-behave-web-api
15373 (package-with-python2 python-behave-web-api))
75baf319
DM
15374
15375(define-public python-flask-script
15376 (package
15377 (name "python-flask-script")
15378 (version "2.0.5")
15379 (source
15380 (origin
15381 (method url-fetch)
15382 (uri (pypi-uri "Flask-Script" version))
15383 (sha256
15384 (base32
15385 "0zqh2yq8zk7m9b4xw1ryqmrljkdigfb3hk5155a3b5hkfnn6xxyf"))))
15386 (build-system python-build-system)
15387 (propagated-inputs
15388 `(("python-flask" ,python-flask)
15389 ("python-argcomplete" ,python-argcomplete)
15390 ("python-werkzeug" ,python-werkzeug)))
15391 (native-inputs
15392 `(("python-pytest" ,python-pytest)))
15393 (home-page
15394 "http://github.com/smurfix/flask-script")
15395 (synopsis "Scripting support for Flask")
15396 (description "The Flask-Script extension provides support for writing
15397external scripts in Flask. This includes running a development server,
15398a customised Python shell, scripts to set up your database, cronjobs,
15399and other command-line tasks that belong outside the web application
15400itself.")
15401 (license license:bsd-3)))
15402
15403(define-public python2-flask-script
15404 (package-with-python2 python-flask-script))
013e1e85
DM
15405
15406(define-public python-flask-migrate
15407 (package
15408 (name "python-flask-migrate")
15409 (version "2.0.3")
15410 (source
15411 (origin
15412 (method url-fetch)
15413 (uri (pypi-uri "Flask-Migrate" version))
15414 (sha256
15415 (base32
15416 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
15417 (build-system python-build-system)
15418 (propagated-inputs
15419 `(("python-flask" ,python-flask)
15420 ("python-alembic" ,python-alembic)
15421 ("python-sqlalchemy" ,python-sqlalchemy)
15422 ("python-flask-script" ,python-flask-script)
15423 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
15424 (home-page "http://github.com/miguelgrinberg/flask-migrate/")
15425 (synopsis "SQLAlchemy database migrations for Flask programs using
15426Alembic")
15427 (description "This package contains SQLAlchemy database migration tools
15428for Flask programs that are using @code{python-alembic}.")
15429 (license license:expat)))
15430
15431(define-public python2-flask-migrate
15432 (package-with-python2 python-flask-migrate))
c0f5b802
LF
15433
15434(define-public python-packaging
15435 (package
15436 (name "python-packaging")
15437 (version "16.8")
15438 (source
15439 (origin
15440 (method url-fetch)
15441 (uri (pypi-uri "packaging" version))
15442 (sha256
15443 (base32
15444 "17k1xbjshackwvbsnxqixbph8rbqhz4bf4g3al5xyzhavxgq6l2x"))))
15445 (build-system python-build-system)
15446 (native-inputs
15447 `(("python-pretend" ,python-pretend)
15448 ("python-pytest" ,python-pytest)))
15449 (propagated-inputs
15450 `(("python-pyparsing" ,python-pyparsing)
15451 ("python-six" ,python-six)))
15452 (home-page "https://github.com/pypa/packaging")
15453 (synopsis "Core utilities for Python packages")
15454 (description "Packaging is a Python module for dealing with Python packages.
15455It offers an interface for working with package versions, names, and dependency
15456information.")
15457 ;; From 'LICENSE': This software is made available under the terms of
15458 ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD.
15459 ;; Contributions to this software is made under the terms of *both* these
15460 ;; licenses.
15461 (license (list license:asl2.0 license:bsd-2))))
15462
15463(define-public python2-packaging
15464 (package-with-python2 python-packaging))
ad2ef260
AP
15465
15466(define-public python-sql
15467 (package
15468 (name "python-sql")
15469 (version "0.9")
15470 (source
15471 (origin
15472 (method url-fetch)
15473 (uri (pypi-uri "python-sql" version))
15474 (sha256
15475 (base32
15476 "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
15477 (build-system python-build-system)
15478 (home-page "https://python-sql.tryton.org/")
15479 (synopsis "Library to write SQL queries in a pythonic way")
15480 (description "@code{python-sql} is a library to write SQL queries, that
15481transforms idiomatic python function calls to well-formed SQL queries.")
15482 (license license:bsd-3)))
15483
15484(define-public python2-sql
15485 (package-with-python2 python-sql))
b208f71b
AP
15486
15487(define-public python-genshi
15488 (package
15489 (name "python-genshi")
15490 (version "0.7")
15491 (source
15492 (origin
15493 (method url-fetch)
15494 (uri (string-append
15495 "https://ftp.edgewall.org/pub/genshi/Genshi-"
15496 version ".tar.gz"))
15497 (patches
15498 (search-patches
15499 ;; The first 4 patches are in the master branch upstream.
15500 ;; See this as a reference https://genshi.edgewall.org/ticket/582
15501 ;; The last 2 are NOT in any branch.
15502 ;; They were sent as attachments to a ticket opened at
15503 ;; https://genshi.edgewall.org/ticket/602#no1
15504 "python-genshi-stripping-of-unsafe-script-tags.patch"
15505 "python-genshi-disable-speedups-on-python-3.3.patch"
15506 "python-genshi-isstring-helper.patch"
15507 "python-genshi-add-support-for-python-3.4-AST.patch"
15508 "python-genshi-fix-tests-on-python-3.5.patch"
15509 "python-genshi-buildable-on-python-2.7.patch"))
15510 (sha256
15511 (base32
15512 "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
15513 (build-system python-build-system)
15514 (home-page "https://genshi.edgewall.org/")
15515 (synopsis "Toolkit for generation of output for the web")
15516 (description "Genshi is a Python library that provides an integrated set
15517of components for parsing, generating, and processing HTML, XML or other
15518textual content for output generation on the web.")
15519 (license license:bsd-3)))
15520
15521;; The linter here claims that patch file names should start with the package
15522;; name. But, in this case the patches are inherited from python-genshi with
15523;; the "python-genshi-" prefix instead of "python2-genshi-".
15524(define-public python2-genshi
15525 (package-with-python2 python-genshi))
ecca63b6
AP
15526
15527(define-public python-relatorio
15528 (package
15529 (name "python-relatorio")
15530 (version "0.6.4")
15531 (source
15532 (origin
15533 (method url-fetch)
15534 (uri (pypi-uri "relatorio" version))
15535 (sha256
15536 (base32
15537 "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
15538 (build-system python-build-system)
15539 (propagated-inputs
15540 `(("python-lxml" ,python-lxml)
15541 ("python-genshi" ,python-genshi)))
15542 (home-page "https://relatorio.tryton.org/")
15543 (synopsis "Templating library able to output ODT and PDF files")
15544 (description "Relatorio is a templating library which provides a way to
15545easily output ODT, ODS, PNG, SVG and several other kinds of files. Support
15546for more filetypes can be easily added by creating plugins for them.")
15547 (license license:gpl3+)))
15548
15549(define-public python2-relatorio
15550 (package-with-python2 python-relatorio))
65e7d52a
MFM
15551
15552(define-public python-radon
15553 (package
15554 (name "python-radon")
15555 (version "1.5.0")
15556 (source
15557 (origin
15558 (method url-fetch)
15559 (uri (pypi-uri "radon" version))
15560 (sha256
15561 (base32
15562 "1h6jv36am0i827182a04ki6291lyx4kp957xfr5njgprj4nd0qsl"))))
15563 (build-system python-build-system)
15564 (propagated-inputs
15565 `(("python-colorama" ,python-colorama)
15566 ("python-flake8-polyfill" ,python-flake8-polyfill)
15567 ("python-mando" ,python-mando-0.3.1)))
15568 (native-inputs
15569 `(("python-flake8" ,python-flake8)
15570 ("python-tox" ,python-tox)
15571 ("python-pytest" ,python-pytest)
15572 ("python-paramunittest" ,python-paramunittest)))
15573 (home-page "https://radon.readthedocs.org/")
15574 (synopsis "Code Metrics in Python")
15575 (description "Radon is a Python tool which computes various code metrics.
15576Supported metrics are:
15577@itemize @bullet
15578@item raw metrics: SLOC, comment lines, blank lines, &c.
15579@item Cyclomatic Complexity (i.e. McCabe’s Complexity)
15580@item Halstead metrics (all of them)
15581@item the Maintainability Index (a Visual Studio metric)
15582@end itemize")
15583 (license license:expat)))
15584
15585(define-public python2-radon
15586 (package-with-python2 python-radon))
50d586f6
MFM
15587
15588(define-public python-sure
15589 (package
15590 (name "python-sure")
15591 (version "1.4.6")
15592 (source
15593 (origin
15594 (method url-fetch)
15595 (uri (pypi-uri "sure" version))
15596 (sha256
15597 (base32
15598 "1iyqsy2d6radi88g1qf0lziy5b39h5cpb3g5jiqyb4xi46ig3x1z"))))
15599 (build-system python-build-system)
15600 (propagated-inputs
15601 `(("python-mock" ,python-mock)
15602 ("python-six" ,python-six)))
15603 (native-inputs
15604 `(("python-nose" ,python-nose)))
15605 (home-page "https://github.com/gabrielfalcao/sure")
15606 (synopsis "Automated testing library in python for python")
15607 (description
15608 "Sure is a python library that leverages a DSL for writing assertions.
15609Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
15610 (license license:gpl3+)))
15611
15612(define-public python2-sure
15613 (package-with-python2 python-sure))
a0ffc701
MFM
15614
15615(define-public python2-couleur
15616 ;; This package does not seem to support python3 at all, hence,
15617 ;; only the python2 variant definition is provided.
15618 (package
15619 (name "python2-couleur")
15620 (version "0.6.2")
15621 (source
15622 (origin
15623 (method url-fetch)
15624 (uri (pypi-uri "couleur" version))
15625 (sha256
15626 (base32
15627 "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
15628 (build-system python-build-system)
15629 (arguments
15630 `(#:python ,python-2))
15631 (home-page "https://github.com/gabrielfalcao/couleur")
15632 (synopsis
15633 "ANSI terminal tool for python, colored shell and other handy fancy features")
15634 (description
15635 "@code{Couleur} provides python programs a way to use the ANSI features in a unix
15636terminal such as coloured output in the shell, overwriting output, indentation, etc.")
15637 ;; README.md says ASL2.0, but all source code headers are LGPL3+.
15638 ;; https://github.com/gabrielfalcao/couleur/issues/11
15639 (license license:lgpl3+)))
511b47de
MFM
15640
15641(define-public python-misaka
15642 (package
15643 (name "python-misaka")
15644 (version "2.1.0")
15645 (source
15646 (origin
15647 (method url-fetch)
15648 (uri (pypi-uri "misaka" version))
15649 (sha256
15650 (base32
15651 "1yqrq3a5rracirmvk52n28nn6ckdaz897gnigv89a9gmyn87sqw7"))))
15652 (build-system python-build-system)
15653 (arguments
15654 `(;; Line 37 of setup.py calls self.run_command('develop')
15655 ;; in the 'check' phase. This command seems to be trying
15656 ;; to write to
15657 ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
15658 ;; for which it does not have the permission to write.
15659 #:tests? #f))
15660 (propagated-inputs
15661 `(("python-cffi" ,python-cffi)))
15662 (home-page "https://github.com/FSX/misaka")
15663 (synopsis "Python binding for Hoedown")
15664 (description
15665 "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
15666library written in C. It features a fast HTML renderer and functionality to make custom
15667renderers (e.g. man pages or LaTeX).")
15668 (license license:expat)))
15669
15670(define-public python2-misaka
15671 (package-with-python2 python-misaka))
5786b47c
MFM
15672
15673(define-public python2-steadymark
15674 ;; This is forced into being a python2 only variant
15675 ;; due to its dependence on couleur that has no support
15676 ;; for python3
15677 (package
15678 (name "python2-steadymark")
15679 (version "0.7.3")
15680 (source
15681 (origin
15682 (method url-fetch)
15683 (uri (pypi-uri "steadymark" version))
15684 (sha256
15685 (base32
15686 "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
15687 (build-system python-build-system)
15688 (native-inputs
15689 `(("python-couleur" ,python2-couleur)
15690 ("python-sure" ,python2-sure)
15691 ("python-misaka" ,python2-misaka)))
15692 (arguments
15693 `(#:python ,python-2
15694 #:phases
15695 (modify-phases %standard-phases
15696 (add-before 'build 'patch-setup-py
15697 (lambda _
15698 ;; Update requirements from dependency==version
15699 ;; to dependency>=version
15700 (substitute* "setup.py"
15701 (("==") ">="))
15702 #t)))))
15703 (home-page "https://github.com/gabrielfalcao/steadymark")
15704 (synopsis "Markdown-based test runner for python")
15705 (description
15706 "@code{Steadymark} allows documentation to be written in github-flavoured
15707markdown. The documentation may contain snippets of code surrounded by python
15708code blocks and @code{Steadymark} will find these snippets and run them, making
15709sure that there are no old malfunctional examples in the documentation examples.")
15710 (license license:expat)))
7e488f99
MFM
15711
15712(define-public python-nose-randomly
15713 (package
15714 (name "python-nose-randomly")
15715 (version "1.2.5")
15716 (source
15717 (origin
15718 (method url-fetch)
15719 (uri (pypi-uri "nose-randomly" version))
15720 (sha256
15721 (base32
15722 "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
15723 (build-system python-build-system)
15724 (native-inputs
15725 `(("python-nose" ,python-nose)
15726 ("python-numpy" ,python-numpy)))
15727 (home-page "https://github.com/adamchainz/nose-randomly")
15728 (synopsis
15729 "Nose plugin to randomly order tests and control random.seed")
15730 (description
15731 "This is a @code{Nose} plugin to randomly order tests which can be quite
15732powerful in discovering hidden flaws in the tests themselves, while helping to
15733reduce inter-test dependencies. It also helps in controlling @code{random.seed},
15734by resetting it to a repeatable number for each test, enabling the tests to
15735create data based on random numbers and yet remain repeatable.")
15736 (license license:bsd-3)))
15737
15738(define-public python2-nose-randomly
15739 (package-with-python2 python-nose-randomly))
1e92287d
DM
15740
15741(define-public python-jsonpointer
15742 (package
15743 (name "python-jsonpointer")
15744 (version "1.10")
15745 (source
15746 (origin
15747 (method url-fetch)
15748 (uri (pypi-uri "jsonpointer" version))
15749 (sha256
15750 (base32
15751 "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
15752 (build-system python-build-system)
15753 (home-page "https://github.com/stefankoegl/python-json-pointer")
15754 (synopsis "Identify specific nodes in a JSON document")
15755 (description "@code{jsonpointer} allows you to access specific nodes
15756by path in a JSON document (see RFC 6901).")
15757 (license license:bsd-3)))
15758
15759(define-public python2-jsonpointer
15760 (package-with-python2 python-jsonpointer))
7d88093f 15761
841e5908
OP
15762(define-public python-jsonpatch
15763 (package
15764 (name "python-jsonpatch")
15765 (version "1.16")
15766 (source
15767 (origin
15768 (method url-fetch)
15769 ;; pypi version lacks tests.js
15770 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
15771 "archive/v" version ".tar.gz"))
15772 (file-name (string-append name "-" version ".tar.gz"))
15773 (sha256
15774 (base32
15775 "085ykisl8v7mv9h7hvhdy3l2fjzs4214gx32r5k6nx4f76hbv6y5"))))
15776 (build-system python-build-system)
15777 (native-inputs
15778 `(("python-jsonpointer" ,python-jsonpointer)))
15779 (home-page "https://github.com/stefankoegl/python-json-patch")
15780 (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
15781 (description "@code{jsonpatch} is a library and program that allows
15782applying JSON Patches according to RFC 6902.")
15783 (license license:bsd-3)))
15784
15785(define-public python2-jsonpatch
15786 (package-with-python2 python-jsonpatch))
15787
15788(define-public python-jsonpatch-0.4
15789 (package (inherit python-jsonpatch)
15790 (name "python-jsonpatch")
15791 (version "0.4")
15792 (source
15793 (origin
15794 (method url-fetch)
15795 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
15796 "archive/v" version ".tar.gz"))
15797 (file-name (string-append name "-" version ".tar.gz"))
15798 (sha256
15799 (base32
15800 "0j0cd9z9zyp8kppp464jxrfgrnbgkzl1yi10i5gsv8yz6d95929d"))))))
15801
15802(define-public python2-jsonpatch-0.4
15803 (package-with-python2 python-jsonpatch-0.4))
15804
7d88093f
DM
15805(define-public python-rfc3987
15806 (package
15807 (name "python-rfc3987")
15808 (version "1.3.7")
15809 (source
15810 (origin
15811 (method url-fetch)
15812 (uri (pypi-uri "rfc3987" version))
15813 (sha256
15814 (base32
15815 "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
15816 (build-system python-build-system)
15817 (home-page "http://pypi.python.org/pypi/rfc3987")
15818 (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
15819 (description "@code{rfc3987} provides routines for parsing and
15820validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
15821 (license license:gpl3+)))
15822
15823(define-public python2-rfc3987
15824 (package-with-python2 python-rfc3987))
0960bf8b
DM
15825
15826(define-public python-validate-email
15827 (package
15828 (name "python-validate-email")
15829 (version "1.3")
15830 (source
15831 (origin
15832 (method url-fetch)
15833 (uri (pypi-uri "validate_email" version))
15834 (sha256
15835 (base32
15836 "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
15837 (build-system python-build-system)
15838 (home-page "http://github.com/syrusakbary/validate_email")
15839 (synopsis "Verifies if an email address is valid and really exists")
15840 (description "@code{validate_email} can be used to verify if an email
15841address is valid and really exists.")
15842 (license license:lgpl3+)))
15843
15844(define-public python2-validate-email
15845 (package-with-python2 python-validate-email))
620b59ea
DM
15846
15847(define-public python-flex
15848 (package
15849 (name "python-flex")
15850 (version "6.10.0")
15851 (source
15852 (origin
15853 (method url-fetch)
15854 (uri (pypi-uri "flex" version))
15855 (sha256
15856 (base32
15857 "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
15858 (build-system python-build-system)
15859 (propagated-inputs
15860 `(("python-click" ,python-click)
15861 ("python-iso8601" ,python-iso8601)
15862 ("python-jsonpointer" ,python-jsonpointer)
15863 ("python-pyyaml" ,python-pyyaml)
15864 ("python-requests" ,python-requests)
15865 ("python-rfc3987" ,python-rfc3987)
15866 ("python-six" ,python-six)
15867 ("python-validate-email" ,python-validate-email)))
15868 (home-page "https://github.com/pipermerriam/flex")
15869 (synopsis "Validates Swagger schemata")
15870 (description "@code{flex} can be used to validate Swagger schemata.")
15871 (license license:bsd-3)))
15872
15873(define-public python2-flex
15874 (package-with-python2 python-flex))
235bc01b
DM
15875
15876(define-public python-marshmallow
15877 (package
15878 (name "python-marshmallow")
58f3d459 15879 (version "3.0.0b3")
235bc01b
DM
15880 (source
15881 (origin
15882 (method url-fetch)
15883 (uri (pypi-uri "marshmallow" version))
15884 (sha256
15885 (base32
58f3d459 15886 "07mcrij1yvk85lvgx44wwr9pc80xryghvlgayb057g1cazcypysd"))))
235bc01b
DM
15887 (build-system python-build-system)
15888 (propagated-inputs
15889 `(("python-dateutil" ,python-dateutil)
15890 ("python-simplejson" ,python-simplejson)))
15891 (native-inputs
15892 `(("python-pytest-3.0" ,python-pytest-3.0)
15893 ("python-pytz" ,python-pytz)))
15894 (home-page "https://github.com/marshmallow-code/marshmallow")
15895 (synopsis "Convert complex datatypes to and from native
15896Python datatypes.")
15897 (description "@code{marshmallow} provides a library for converting
15898complex datatypes to and from native Python datatypes.")
15899 (license license:expat)))
15900
15901(define-public python2-marshmallow
15902 (package-with-python2 python-marshmallow))
d270df8d
DM
15903
15904(define-public python-bottle
15905 (package
15906 (name "python-bottle")
15907 (version "0.12.13")
15908 (source
15909 (origin
15910 (method url-fetch)
15911 (uri (pypi-uri "bottle" version))
15912 (sha256
15913 (base32
15914 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
15915 (build-system python-build-system)
15916 (home-page "http://bottlepy.org/")
15917 (synopsis "WSGI framework for small web-applications.")
15918 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
15919 (license license:expat)))
15920
15921(define-public python2-bottle
15922 (package-with-python2 python-bottle))
635b3636
DM
15923
15924(define-public python-apispec
15925 (package
15926 (name "python-apispec")
15927 (version "0.22.0")
15928 (source
15929 (origin
15930 (method url-fetch)
15931 (uri (pypi-uri "apispec" version))
15932 (sha256
15933 (base32
15934 "0y3jxmgp2d24am3hxl40f5rw9abb0r8037sagax3dv64h4n1azwq"))))
15935 (build-system python-build-system)
15936 (propagated-inputs
15937 `(("python-pyyaml" ,python-pyyaml)))
15938 (native-inputs
15939 `(("python-pytest-3.0" ,python-pytest-3.0)
15940 ("python-flask" ,python-flask)
15941 ("python-marshmallow" ,python-marshmallow)
15942 ("python-tornado" ,python-tornado)
15943 ("python-bottle" ,python-bottle)
15944 ("python-mock" ,python-mock)))
15945 (home-page "https://github.com/marshmallow-code/apispec")
15946 (synopsis "Swagger 2.0 API specification generator")
15947 (description "@code{python-apispec} is a pluggable API specification
15948generator. Currently supports the OpenAPI specification (f.k.a.
15949Swagger 2.0).")
15950 (license license:expat)))
15951
15952(define-public python2-apispec
15953 (package-with-python2 python-apispec))
543c5f3f
DM
15954
15955(define-public python-flasgger
15956 (package
15957 (name "python-flasgger")
15958 (version "0.6.3")
15959 (source
15960 (origin
15961 (method url-fetch)
15962 (uri (string-append "https://github.com/rochacbruno/flasgger/archive/"
15963 version ".tar.gz"))
15964 (file-name (string-append name "-" version ".tar.gz"))
15965 (sha256
15966 (base32
15967 "1gqzlm0rb55fdpsy5ipkganlx9cnpi454fqyycr03jm22zql14ay"))))
15968 (build-system python-build-system)
15969 (arguments
15970 `(#:phases
15971 (modify-phases %standard-phases
15972 (replace 'check
15973 (lambda* (#:key inputs outputs #:allow-other-keys)
15974 (substitute* "Makefile"
15975 (("flake8 flasgger --ignore=F403")
15976 "flake8 flasgger --ignore=E731,F403"))
15977 (setenv "PYTHONPATH" (string-append (getcwd)
15978 ":"
15979 (getenv "PYTHONPATH")))
15980 (zero? (system* "py.test")))))))
15981 (propagated-inputs
15982 `(("python-flask" ,python-flask)
15983 ("python-pyyaml" ,python-pyyaml)
15984 ("python-jsonschema" ,python-jsonschema)
15985 ("python-mistune" ,python-mistune)
15986 ("python-six" ,python-six)))
15987 (native-inputs
15988 `(("python-decorator" ,python-decorator)
15989 ("python-flake8" ,python-flake8)
15990 ("python-flask-restful" ,python-flask-restful)
15991 ("python-flex" ,python-flex)
15992 ("python-pytest-3.0" ,python-pytest-3.0)
15993 ("python-pytest-cov" ,python-pytest-cov)
15994 ("python-marshmallow" ,python-marshmallow)
15995 ("python-apispec" ,python-apispec)))
15996 (home-page "https://github.com/rochacbruno/flasgger/")
15997 (synopsis "Extract Swagger specs from your Flask project")
15998 (description "@code{python-flasgger} allows extracting Swagger specs
15999from your Flask project. It is a fork of Flask-Swagger.")
16000 (license license:expat)))
16001
16002(define-public python2-flasgger
16003 (package-with-python2 python-flasgger))
4eadc8b9
DM
16004
16005(define-public python-swagger-spec-validator
16006 (package
16007 (name "python-swagger-spec-validator")
16008 (version "2.1.0")
16009 (source
16010 (origin
16011 (method url-fetch)
16012 (uri (pypi-uri "swagger-spec-validator" version))
16013 (sha256
16014 (base32
16015 "13hkpn2lycwr0468yqhjb3kwszqf7hjwlq61w7vdxq1caz31k4nw"))))
16016 (build-system python-build-system)
16017 (propagated-inputs
16018 `(("python-jsonschema" ,python-jsonschema)
16019 ("python-six" ,python-six)))
16020 (home-page
16021 "http://github.com/Yelp/swagger_spec_validator")
16022 (synopsis "Validation of Swagger specifications")
16023 (description "@code{swagger_spec_validator} provides a library for
16024validating Swagger API specifications.")
16025 (license license:asl2.0)))
16026
16027(define-public python2-swagger-spec-validator
16028 (package-with-python2 python-swagger-spec-validator))
7ea498e5
DM
16029
16030(define-public python-apache-libcloud
16031 (package
16032 (name "python-apache-libcloud")
16033 (version "2.0.0")
16034 (source
16035 (origin
16036 (method url-fetch)
16037 (uri (pypi-uri "apache-libcloud" version))
16038 (sha256
16039 (base32
16040 "1a71z02ckcxld72k4qgmdnkjan52c4wczncs3p2mp5yafh7dsan7"))))
16041 (build-system python-build-system)
16042 (arguments
16043 `(#:phases
16044 (modify-phases %standard-phases
16045 (add-after 'unpack 'patch-ssh
16046 (lambda* (#:key inputs #:allow-other-keys)
16047 (substitute* "libcloud/compute/ssh.py"
16048 (("'ssh'") (string-append "'" (assoc-ref inputs "openssh")
16049 "/bin/ssh" "'")))
16050 #t))
16051 (add-after 'unpack 'patch-tests
16052 (lambda _
16053 (substitute* "./libcloud/test/test_file_fixtures.py"
16054 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-923>.
16055 (("def _ascii") "def _raw_data(self, method, url, body, headers):
16056 return (httplib.OK,
16057 \"1234abcd\",
16058 {\"test\": \"value\"},
16059 httplib.responses[httplib.OK])
16060 def _ascii"))
16061 (substitute* "libcloud/test/compute/test_ssh_client.py"
16062 (("class ShellOutSSHClientTests")
16063 "@unittest.skip(\"Guix container doesn't have ssh service\")
16064class ShellOutSSHClientTests")
16065 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-924>.
16066 (("'.xf0.x90.x8d.x88'") "b'\\xF0\\x90\\x8D\\x88'")
16067 (("'.xF0', '.x90', '.x8D', '.x88'")
16068 "b'\\xF0', b'\\x90', b'\\x8D', b'\\x88'"))
16069 #t)))))
16070 (inputs
16071 `(("openssh" ,openssh)))
16072 (propagated-inputs
16073 `(("python-paramiko" ,python-paramiko)
16074 ("python-requests" ,python-requests)))
16075 (native-inputs
16076 `(("python-lockfile" ,python-lockfile)
16077 ("python-mock" ,python-mock)
16078 ("python-requests-mock" ,python-requests-mock)))
16079 (home-page "https://libcloud.apache.org/")
16080 (synopsis "Unified Cloud API")
16081 (description "@code{libcloud} is a Python library for interacting with
16082many of the popular cloud service providers using a unified API.")
16083 (license license:asl2.0)))
16084
16085(define-public python2-apache-libcloud
16086 (package-with-python2 python-apache-libcloud))
7fadeab4
DM
16087
16088(define-public python-smmap2
16089 (package
16090 (name "python-smmap2")
16091 (version "2.0.3")
16092 (source
16093 (origin
16094 (method url-fetch)
16095 (uri (pypi-uri "smmap2" version))
16096 (sha256
16097 (base32
16098 "1hvn28p3zvxa98sbi9lrqvv2ps4q284j4jq9a619zw0m7yv0sly7"))))
16099 (build-system python-build-system)
16100 (native-inputs
16101 `(("python-nosexcover" ,python-nosexcover)))
16102 (home-page "https://github.com/Byron/smmap")
16103 (synopsis "Python sliding window memory map manager")
16104 (description "@code{smmap2} is a pure Python implementation of a sliding
16105window memory map manager.")
16106 (license license:bsd-3)))
16107
16108(define-public python2-smmap2
16109 (package-with-python2 python-smmap2))
fa3f5f47
RJ
16110
16111(define-public python-regex
16112 (package
16113 (name "python-regex")
16114 (version "2017.06.07")
16115 (source (origin
16116 (method url-fetch)
16117 (uri (pypi-uri "regex" version))
16118 (sha256
16119 (base32
16120 "06r6b7yigikbj3a72whl85r2b64pj1r0ypmw9yalmkm0wnxq8mz4"))))
16121 (build-system python-build-system)
16122 (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
16123 (synopsis "Alternative regular expression module")
16124 (description "This regular expression implementation is backwards-
16125compatible with the standard @code{re} module, but offers additional
16126functionality like full case-folding for case-insensitive matches in Unicode.")
16127 (license license:psfl)))
16128
16129(define-public python2-regex
16130 (package-with-python2 python-regex))
f817b4d9
RH
16131
16132(define-public python2-pyopengl
16133 (package
16134 (name "python2-pyopengl")
16135 (version "3.1.0")
16136 (source
16137 (origin
16138 (method url-fetch)
16139 (uri (pypi-uri "PyOpenGL" version))
16140 (sha256
16141 (base32
16142 "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
16143 (arguments
16144 `(#:python ,python-2))
16145 (build-system python-build-system)
16146 (home-page "http://pyopengl.sourceforge.net")
16147 (synopsis "Standard OpenGL bindings for Python")
16148 (description
16149 "PyOpenGL is the most common cross platform Python binding to OpenGL and
16150related APIs. The binding is created using the standard @code{ctypes}
16151library.")
16152 (license license:bsd-3)))
7efd98be
RH
16153
16154(define-public python-rencode
16155 (package
16156 (name "python-rencode")
16157 (version "1.0.3")
16158 (source
16159 (origin
16160 (method url-fetch)
16161 (uri (pypi-uri "rencode" version))
16162 (sha256
16163 (base32
16164 "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
16165 (build-system python-build-system)
16166 (native-inputs `(("pkg-config" ,pkg-config)
16167 ("python-cython", python-cython)))
16168 (home-page "https://github.com/aresch/rencode")
16169 (synopsis "Serialization of heterogeneous data structures")
16170 (description
16171 "The @code{rencode} module is a data structure serialization library,
16172similar to @code{bencode} from the BitTorrent project. For complex,
16173heterogeneous data structures with many small elements, r-encoding stake up
16174significantly less space than b-encodings. This version of rencode is a
16175complete rewrite in Cython to attempt to increase the performance over the
16176pure Python module.")
16177 (license license:bsd-3)))
16178
16179(define-public python2-rencode
16180 (package-with-python2 python-rencode))
9ea61b1c 16181
2038a48f
MFM
16182(define-public python-xenon
16183 (package
16184 (name "python-xenon")
16185 (version "0.5.1")
16186 (source
16187 (origin
16188 (method url-fetch)
16189 (uri (pypi-uri "xenon" version))
16190 (sha256
16191 (base32
16192 "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
16193 (build-system python-build-system)
16194 (native-inputs
16195 `(("python-pyyaml" ,python-pyyaml)
16196 ("python-radon" ,python-radon)
16197 ("python-requests" ,python-requests)
16198 ("python-flake8" ,python-flake8)
16199 ("python-tox" ,python-tox)))
16200 (arguments
16201 `(#:phases
16202 (modify-phases %standard-phases
16203 (add-before 'build 'patch-test-requirements
16204 (lambda* (#:key inputs #:allow-other-keys)
16205 ;; Update requirements from dependency==version to
16206 ;; dependency>=version.
16207 (substitute* "requirements.txt"
16208 (("==") ">=")
16209 ((",<1.5.0") ""))
16210 ;; Remove httpretty dependency for tests.
16211 (substitute* "setup.py"
16212 (("httpretty") ""))
16213 #t)))))
16214 (home-page "https://xenon.readthedocs.org/")
16215 (synopsis "Monitor code metrics for Python on your CI server")
16216 (description
16217 "Xenon is a monitoring tool based on Radon. It monitors code complexity.
16218Ideally, @code{xenon} is run every time code is committed. Through command
16219line options, various thresholds can be set for the complexity of code. It
16220will fail (i.e. it will exit with a non-zero exit code) when any of these
16221requirements is not met.")
16222 (license license:expat)))
16223
16224(define-public python2-xenon
16225 (package-with-python2 python-xenon))
16226
9ea61b1c
DM
16227(define-public python-flask-principal
16228 (package
16229 (name "python-flask-principal")
16230 (version "0.4.0")
16231 (source
16232 (origin
16233 (method url-fetch)
16234 (uri (pypi-uri "Flask-Principal" version))
16235 (sha256
16236 (base32
16237 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
16238 (build-system python-build-system)
16239 (propagated-inputs
16240 `(("python-blinker" ,python-blinker)))
16241 (native-inputs
16242 `(("python-flask" ,python-flask)
16243 ("python-nose" ,python-nose)))
16244 (home-page "http://packages.python.org/Flask-Principal/")
16245 (synopsis "Identity management for Flask")
16246 (description "@code{flask_principal} is a identity management library for
16247Flask. It supports managing both authentication and authorization data in a
16248thread-local variable.")
16249 (license license:expat)))
16250
16251(define-public python2-flask-principal
16252 (package-with-python2 python-flask-principal))
18c6a7b4
DM
16253
16254(define-public python-flask-httpauth
16255 (package
16256 (name "python-flask-httpauth")
16257 (version "3.2.3")
16258 (source
16259 (origin
16260 (method url-fetch)
16261 (uri (pypi-uri "Flask-HTTPAuth" version))
16262 (sha256
16263 (base32
16264 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
16265 (build-system python-build-system)
16266 (native-inputs
16267 `(("python-flask" ,python-flask)))
16268 (home-page "http://github.com/miguelgrinberg/flask-httpauth/")
16269 (synopsis "Basic and Digest HTTP authentication for Flask routes")
16270 (description "@code{flask_httpauth} provides Basic and Digest HTTP
16271authentication for Flask routes.")
16272 (license license:expat)))
16273
16274(define-public python2-flask-httpauth
16275 (package-with-python2 python-flask-httpauth))
07e62ae1
CZ
16276
16277(define-public python-pysocks
16278 (package
16279 (name "python-pysocks")
16280 (version "1.6.7")
16281 (source
16282 (origin
16283 (method url-fetch)
16284 (uri (pypi-uri "PySocks" version))
16285 (sha256
16286 (base32
16287 "1krkiss578zqwcg4c8iqz1hwscwhsvy2djp3xyvps5gsgvr2j0yh"))))
16288 (build-system python-build-system)
16289 (arguments `(#:tests? #f))
16290 (home-page "https://github.com/Anorov/PySocks")
16291 (synopsis "SOCKS client module")
16292 (description "@code{pysocks} is an updated and semi-actively maintained
16293version of @code{SocksiPy} with bug fixes and extra features.")
16294 (license license:bsd-3)))
16295
16296(define-public python2-pysocks
16297 (package-with-python2 python-pysocks))
7a276cd9
CZ
16298
16299(define-public python-pyaes
16300 (package
16301 (name "python-pyaes")
16302 (version "1.6.0")
16303 (source
16304 (origin
16305 (method url-fetch)
16306 (uri (pypi-uri "pyaes" version))
16307 (sha256
16308 (base32
16309 "0bp9bjqy1n6ij1zb86wz9lqa1dhla8qr1d7w2kxyn7jbj56sbmcw"))))
16310 (build-system python-build-system)
16311 (home-page "https://github.com/ricmoo/pyaes")
16312 (synopsis "Implementation of AES in Python")
16313 (description "This package contains a pure-Python implementation of the
16314AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
16315ECB and OFB).")
16316 (license license:expat)))
16317
16318(define-public python2-pyaes
16319 (package-with-python2 python-pyaes))
4967946b
OP
16320
16321(define-public python-uritemplate
16322 (package
16323 (name "python-uritemplate")
16324 (version "3.0.0")
16325 (source
16326 (origin
16327 (method url-fetch)
16328 (uri (pypi-uri "uritemplate" version))
16329 (sha256
16330 (base32
16331 "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
16332 (build-system python-build-system)
16333 (home-page "https://uritemplate.readthedocs.org")
16334 (synopsis "Library to deal with URI Templates")
16335 (description "@code{uritemplate} provides Python library to deal with URI
16336Templates.")
16337 (license license:bsd-2)))
16338
16339(define-public python2-uritemplate
16340 (package-with-python2 python-uritemplate))