gnu: python-cleo: Update to 0.6.1.
[jackhill/guix/guix.git] / gnu / packages / python.scm
... / ...
CommitLineData
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
3;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
6;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
10;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
14;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
15;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
17;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
26;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
28;;; Copyright © 2016 David Craven <david@craven.ch>
29;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
30;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
32;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
33;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
34;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
36;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
39;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
40;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
41;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
42;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
43;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
44;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
45;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
46;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
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
63(define-module (gnu packages python)
64 #:use-module ((guix licenses) #:prefix license:)
65 #:use-module (gnu packages)
66 #:use-module (gnu packages algebra)
67 #:use-module (gnu packages adns)
68 #:use-module (gnu packages attr)
69 #:use-module (gnu packages backup)
70 #:use-module (gnu packages bash)
71 #:use-module (gnu packages check)
72 #:use-module (gnu packages compression)
73 #:use-module (gnu packages crypto)
74 #:use-module (gnu packages databases)
75 #:use-module (gnu packages django)
76 #:use-module (gnu packages file)
77 #:use-module (gnu packages fontutils)
78 #:use-module (gnu packages gcc)
79 #:use-module (gnu packages ghostscript)
80 #:use-module (gnu packages gl)
81 #:use-module (gnu packages glib)
82 #:use-module (gnu packages graphviz)
83 #:use-module (gnu packages graphics)
84 #:use-module (gnu packages gstreamer)
85 #:use-module (gnu packages gtk)
86 #:use-module (gnu packages icu4c)
87 #:use-module (gnu packages image)
88 #:use-module (gnu packages imagemagick)
89 #:use-module (gnu packages libevent)
90 #:use-module (gnu packages libffi)
91 #:use-module (gnu packages linux)
92 #:use-module (gnu packages man)
93 #:use-module (gnu packages maths)
94 #:use-module (gnu packages multiprecision)
95 #:use-module (gnu packages networking)
96 #:use-module (gnu packages ncurses)
97 #:use-module (gnu packages openstack)
98 #:use-module (gnu packages password-utils)
99 #:use-module (gnu packages pcre)
100 #:use-module (gnu packages perl)
101 #:use-module (gnu packages pkg-config)
102 #:use-module (gnu packages protobuf)
103 #:use-module (gnu packages qt)
104 #:use-module (gnu packages readline)
105 #:use-module (gnu packages sdl)
106 #:use-module (gnu packages search)
107 #:use-module (gnu packages shells)
108 #:use-module (gnu packages ssh)
109 #:use-module (gnu packages statistics)
110 #:use-module (gnu packages tex)
111 #:use-module (gnu packages texinfo)
112 #:use-module (gnu packages tls)
113 #:use-module (gnu packages version-control)
114 #:use-module (gnu packages video)
115 #:use-module (gnu packages web)
116 #:use-module (gnu packages base)
117 #:use-module (gnu packages xml)
118 #:use-module (gnu packages xorg)
119 #:use-module (gnu packages xdisorg)
120 #:use-module (gnu packages tcl)
121 #:use-module (gnu packages bdw-gc)
122 #:use-module (guix packages)
123 #:use-module (guix download)
124 #:use-module (guix git-download)
125 #:use-module (guix utils)
126 #:use-module (guix build-system gnu)
127 #:use-module (guix build-system cmake)
128 #:use-module (guix build-system python)
129 #:use-module (guix build-system trivial)
130 #:use-module (srfi srfi-1))
131
132(define-public python-2.7
133 (package
134 (name "python")
135 (version "2.7.13")
136 (source
137 (origin
138 (method url-fetch)
139 (uri (string-append "https://www.python.org/ftp/python/"
140 version "/Python-" version ".tar.xz"))
141 (sha256
142 (base32
143 "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m"))
144 (patches (search-patches "python-2.7-search-paths.patch"
145 "python-2-deterministic-build-info.patch"
146 "python-2.7-site-prefixes.patch"
147 "python-2.7-source-date-epoch.patch"
148 "python-2.7-getentropy-on-old-kernels.patch"))
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"
157 "Lib/test/test_ctypes.py" ; fails on mips64el
158 "Lib/test/test_distutils.py"
159 "Lib/test/test_import.py"
160 "Lib/test/test_shutil.py"
161 "Lib/test/test_socket.py"
162 "Lib/test/test_subprocess.py"))
163 #t))))
164 (outputs '("out"
165 "tk")) ;tkinter; adds 50 MiB to the closure
166 (build-system gnu-build-system)
167 (arguments
168 `(;; 356 tests OK.
169 ;; 6 tests failed:
170 ;; test_compileall test_distutils test_import test_shutil test_socket
171 ;; test_subprocess
172 ;; 39 tests skipped:
173 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
174 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
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
184 #:test-target "test"
185 #:configure-flags
186 (list "--enable-shared" ;allow embedding
187 "--with-system-ffi" ;build ctypes
188 "--with-ensurepip=install" ;install pip and setuptools
189 "--enable-unicode=ucs4"
190 (string-append "LDFLAGS=-Wl,-rpath="
191 (assoc-ref %outputs "out") "/lib"))
192
193 #:modules ((ice-9 ftw) (ice-9 match)
194 (guix build utils) (guix build gnu-build-system))
195 #:phases
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")))
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.
212 (setenv "SOURCE_DATE_EPOCH" "1")
213 #t))
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))
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))
247 #t)))
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)))))))
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)))
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))))))
300 (inputs
301 `(("bzip2" ,bzip2)
302 ("gdbm" ,gdbm)
303 ("libffi" ,libffi) ; for ctypes
304 ("sqlite" ,sqlite) ; for sqlite extension
305 ("openssl" ,openssl)
306 ("readline" ,readline)
307 ("zlib" ,zlib)
308 ("tcl" ,tcl)
309 ("tk" ,tk))) ; for tkinter
310 (native-inputs
311 `(("pkg-config" ,pkg-config)))
312 (native-search-paths
313 (list (search-path-specification
314 (variable "PYTHONPATH")
315 (files '("lib/python2.7/site-packages")))))
316 (home-page "https://www.python.org")
317 (synopsis "High-level, dynamically-typed programming language")
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.")
326 (license license:psfl)))
327
328;; Current 2.x version.
329(define-public python-2 python-2.7)
330
331(define-public python-3.5
332 (package (inherit python-2)
333 (version "3.5.3")
334 (source (origin
335 (method url-fetch)
336 (uri (string-append "https://www.python.org/ftp/python/"
337 version "/Python-" version ".tar.xz"))
338 (patches (search-patches
339 "python-fix-tests.patch"
340 "python-3.5-fix-tests.patch"
341 "python-3.5-getentropy-on-old-kernels.patch"
342 "python-3-deterministic-build-info.patch"
343 "python-3-search-paths.patch"))
344 (patch-flags '("-p0"))
345 (sha256
346 (base32
347 "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
348 (snippet
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))))
354 (arguments (substitute-keyword-arguments (package-arguments python-2)
355 ((#:tests? _) #t)))
356 (native-search-paths
357 (list (search-path-specification
358 (variable "PYTHONPATH")
359 (files (list (string-append "lib/python"
360 (version-major+minor version)
361 "/site-packages"))))))))
362
363;; Current 3.x version.
364(define-public python-3 python-3.5)
365
366;; Current major version.
367(define-public python python-3)
368
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")
375 (outputs '("out"))
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)))))
382
383(define-public python-minimal
384 (package (inherit python)
385 (name "python-minimal")
386 (outputs '("out"))
387
388 ;; Build fails due to missing ctypes without libffi.
389 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
390 ;; zlib is required by 'zipimport', used by pip.
391 (inputs `(("libffi" ,libffi)
392 ("openssl" ,openssl)
393 ("zlib" ,zlib)))))
394
395(define* (wrap-python3 python
396 #:optional
397 (name (string-append (package-name python) "-wrapper")))
398 (package (inherit python)
399 (name name)
400 (source #f)
401 (build-system trivial-build-system)
402 (outputs '("out"))
403 (inputs `(("bash" ,bash)))
404 (propagated-inputs `(("python" ,python)))
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)))
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)))))))
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
437(define-public python-wrapper (wrap-python3 python))
438(define-public python-minimal-wrapper (wrap-python3 python-minimal))
439
440(define-public python-psutil
441 (package
442 (name "python-psutil")
443 (version "4.3.0")
444 (source
445 (origin
446 (method url-fetch)
447 (uri (pypi-uri "psutil" version))
448 (sha256
449 (base32
450 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
451 (build-system python-build-system)
452 (arguments
453 ;; FIXME: some tests does not return and times out.
454 '(#:tests? #f))
455 (home-page "https://www.github.com/giampaolo/psutil")
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.")
465 (license license:bsd-3)))
466
467(define-public python2-psutil
468 (package-with-python2 python-psutil))
469
470(define-public python-passlib
471 (package
472 (name "python-passlib")
473 (version "1.7.1")
474 (source
475 (origin
476 (method url-fetch)
477 (uri (pypi-uri "passlib" version))
478 (sha256
479 (base32
480 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
481 (build-system python-build-system)
482 (native-inputs
483 `(("python-nose" ,python-nose)))
484 (propagated-inputs
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.")
502 (license license:bsd-3)))
503
504(define-public python2-passlib
505 (package-with-python2 python-passlib))
506
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)
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.
537 (license (list license:isc license:bsd-3 license:bsd-4))))
538
539(define-public python2-py-bcrypt
540 (package-with-python2 python-py-bcrypt))
541
542
543(define-public python-paramiko
544 (package
545 (name "python-paramiko")
546 (version "2.1.2")
547 (source
548 (origin
549 (method url-fetch)
550 (uri (pypi-uri "paramiko" version))
551 (sha256
552 (base32
553 "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
554 (build-system python-build-system)
555 (arguments
556 '(#:phases
557 (modify-phases %standard-phases
558 (replace 'check
559 (lambda _
560 (zero? (system* "python" "test.py")))))))
561 (propagated-inputs
562 `(("python-pyasn1" ,python-pyasn1)
563 ("python-cryptography" ,python-cryptography)))
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.")
570 (license license:lgpl2.1+)))
571
572(define-public python2-paramiko
573 (package-with-python2 python-paramiko))
574
575
576(define-public python-httplib2
577 (package
578 (name "python-httplib2")
579 (version "0.9.2")
580 (source
581 (origin
582 (method url-fetch)
583 (uri (pypi-uri "httplib2" version))
584 (sha256
585 (base32
586 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
587 (build-system python-build-system)
588 (home-page "https://github.com/jcgregorio/httplib2")
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
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)
613 (inputs
614 `(("openssl" ,openssl)))
615 (home-page
616 "https://github.com/warner/python-ecdsa")
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
630(define-public python-ccm
631 (package
632 (name "python-ccm")
633 (version "2.1.6")
634 (source
635 (origin
636 (method url-fetch)
637 (uri (pypi-uri "ccm" version))
638 (sha256
639 (base32
640 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
641 (build-system python-build-system)
642 (propagated-inputs
643 `(("python-pyyaml" ,python-pyyaml)
644 ;; Not listed in setup.py, but used in ccmlib/node.py for full
645 ;; functionality
646 ("python-psutil" ,python-psutil)
647 ("python-six" ,python-six)))
648 (home-page "https://github.com/pcmanus/ccm")
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.")
654 (license license:asl2.0)))
655
656(define-public python2-ccm
657 (package-with-python2 python-ccm))
658
659(define-public python-pytz
660 (package
661 (name "python-pytz")
662 (version "2017.2")
663 (source
664 (origin
665 (method url-fetch)
666 (uri (pypi-uri "pytz" version ".zip"))
667 (sha256
668 (base32
669 "12cmd3j46d2gcw08bspvp6s9icfcvx88zjz52n1bli9dyvl5dh7m"))))
670 (build-system python-build-system)
671 (native-inputs
672 `(("unzip" ,unzip)))
673 (home-page "http://pythonhosted.org/pytz")
674 (synopsis "Python timezone library")
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.")
679 (license license:expat)))
680
681(define-public python2-pytz
682 (package-with-python2 python-pytz))
683
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
707(define-public python-babel
708 (package
709 (name "python-babel")
710 (version "2.3.4")
711 (source
712 (origin
713 (method url-fetch)
714 (uri (pypi-uri "Babel" version))
715 (sha256
716 (base32
717 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
718 (build-system python-build-system)
719 (propagated-inputs
720 `(("python-pytz" ,python-pytz)))
721 (arguments `(#:tests? #f)) ; no test target
722 (home-page "http://babel.pocoo.org/")
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. ")
731 (license license:bsd-3)))
732
733(define-public python2-babel
734 (package-with-python2 python-babel))
735
736(define-public python2-backport-ssl-match-hostname
737 (package
738 (name "python2-backport-ssl-match-hostname")
739 (version "3.5.0.1")
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
749 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
750 (build-system python-build-system)
751 (arguments
752 `(#:python ,python-2
753 #:tests? #f)) ; no test target
754 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
755 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
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.")
761 (license license:psfl)))
762
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
808(define-public python-h5py
809 (package
810 (name "python-h5py")
811 (version "2.7.0")
812 (source
813 (origin
814 (method url-fetch)
815 (uri (pypi-uri "h5py" version))
816 (sha256
817 (base32
818 "0433sdv6xc9p7v1xs1gvbxp7p152ywi3nplgjb258q9fvw9469br"))))
819 (build-system python-build-system)
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))))))
836 (propagated-inputs
837 `(("python-six" ,python-six)
838 ("python-numpy" ,python-numpy)))
839 (inputs
840 `(("hdf5" ,hdf5)))
841 (native-inputs
842 `(("python-cython" ,python-cython)
843 ("python-pkgconfig" ,python-pkgconfig)))
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.")
852 (license license:bsd-3)))
853
854(define-public python2-h5py
855 (package-with-python2 python-h5py))
856
857(define-public python-netcdf4
858 (package
859 (name "python-netcdf4")
860 (version "1.2.9")
861 (source
862 (origin
863 (method url-fetch)
864 (uri (pypi-uri "netCDF4" version))
865 (sha256
866 (base32
867 "1h6jq338amlbk0ilzvjyl7cck80i0bah9a5spn9in71vy2qxm7i5"))))
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
908(define-public python-lockfile
909 (package
910 (name "python-lockfile")
911 (version "0.12.2")
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
919 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
920 (build-system python-build-system)
921 (arguments '(#:test-target "check"))
922 (native-inputs
923 `(("python-pbr" ,python-pbr)))
924 (home-page "https://launchpad.net/pylockfile")
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.")
929 (license license:expat)))
930
931(define-public python2-lockfile
932 (package-with-python2 python-lockfile))
933
934(define-public python-mock
935 (package
936 (name "python-mock")
937 (version "1.0.1")
938 (source
939 (origin
940 (method url-fetch)
941 (uri (pypi-uri "mock" version))
942 (sha256
943 (base32
944 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
945 (build-system python-build-system)
946 (arguments '(#:test-target "check"))
947 (home-page "https://github.com/testing-cabal/mock")
948 (synopsis "Python mocking and patching library for testing")
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.")
953 (license license:expat)))
954
955(define-public python2-mock
956 (package-with-python2 python-mock))
957
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)))))
976
977(define-public python-setuptools
978 (package
979 (name "python-setuptools")
980 (version "31.0.0")
981 (source
982 (origin
983 (method url-fetch)
984 (uri (pypi-uri "setuptools" version))
985 (sha256
986 (base32
987 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
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))))
996 (build-system python-build-system)
997 ;; FIXME: Tests require pytest, which itself relies on setuptools.
998 ;; One could bootstrap with an internal untested setuptools.
999 (arguments
1000 `(#:tests? #f))
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.")
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))))
1019
1020(define-public python2-setuptools
1021 (package-with-python2 python-setuptools))
1022
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
1059;;; Pycrypto is abandoned upstream:
1060;;;
1061;;; https://github.com/dlitz/pycrypto/issues/173
1062;;;
1063;;; TODO Remove this package from GNU Guix.
1064(define-public python-pycrypto
1065 (package
1066 (name "python-pycrypto")
1067 (version "2.6.1")
1068 (source
1069 (origin
1070 (method url-fetch)
1071 (uri (pypi-uri "pycrypto" version))
1072 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
1073 (sha256
1074 (base32
1075 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
1076 (build-system python-build-system)
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,
1093etc.). The package is structured to make adding new modules easy.")
1094 (license license:public-domain)))
1095
1096(define-public python2-pycrypto
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)))))))
1104
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)))
1119 (arguments
1120 ;; TODO: Requires unpackaged 'enum-compat'.
1121 '(#:tests? #f))
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
1142(define-public python-keyring
1143 (package
1144 (name "python-keyring")
1145 (version "8.7")
1146 (source
1147 (origin
1148 (method url-fetch)
1149 (uri (pypi-uri "keyring" version))
1150 (sha256
1151 (base32
1152 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
1153 (build-system python-build-system)
1154 (native-inputs
1155 `(("python-setuptools-scm" ,python-setuptools-scm)))
1156 (propagated-inputs
1157 `(("python-pycrypto" ,python-pycrypto)))
1158 (arguments
1159 `(#:tests? #f)) ;TODO: tests require pytest
1160 (home-page "https://github.com/jaraco/keyring")
1161 (synopsis "Store and access your passwords safely")
1162 (description
1163 "The Python keyring lib provides a easy way to access the system keyring
1164service from python. It can be used in any application that needs safe
1165password storage.")
1166 ;; "MIT" and PSF dual license
1167 (license license:x11)))
1168
1169(define-public python2-keyring
1170 (package-with-python2 python-keyring))
1171
1172(define-public python-six
1173 (package
1174 (name "python-six")
1175 (version "1.10.0")
1176 (source
1177 (origin
1178 (method url-fetch)
1179 (uri (pypi-uri "six" version))
1180 (sha256
1181 (base32
1182 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
1183 (build-system python-build-system)
1184 (native-inputs
1185 `(("python-py" ,python-py)
1186 ("python-pytest" ,python-pytest)))
1187 (home-page "http://pypi.python.org/pypi/six/")
1188 (synopsis "Python 2 and 3 compatibility utilities")
1189 (description
1190 "Six is a Python 2 and 3 compatibility library. It provides utility
1191functions for smoothing over the differences between the Python versions with
1192the goal of writing Python code that is compatible on both Python versions.
1193Six supports every Python version since 2.5. It is contained in only one
1194Python file, so it can be easily copied into your project.")
1195 (license license:x11)))
1196
1197(define-public python2-six
1198 (package-with-python2 python-six))
1199
1200(define-public python-dateutil
1201 (package
1202 (name "python-dateutil")
1203 (version "2.6.0")
1204 (source
1205 (origin
1206 (method url-fetch)
1207 (uri (pypi-uri "python-dateutil" version))
1208 (sha256
1209 (base32
1210 "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
1211 (build-system python-build-system)
1212 (propagated-inputs
1213 `(("python-six" ,python-six)))
1214 (home-page "https://dateutil.readthedocs.io/en/stable/")
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+.")
1219 (license license:bsd-3)))
1220
1221(define-public python2-dateutil
1222 (package-with-python2 python-dateutil))
1223
1224(define-public python-parsedatetime
1225 (package
1226 (name "python-parsedatetime")
1227 (version "2.4")
1228 (source
1229 (origin
1230 (method url-fetch)
1231 (uri (pypi-uri "parsedatetime" version))
1232 (sha256
1233 (base32
1234 "0jxqkjks7z9dn222cqgvskp4wr6d92aglinxq7pd2w4mzdc7r09x"))))
1235 (build-system python-build-system)
1236 (native-inputs
1237 `(("python-nose" ,python-nose)
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)))
1243 (home-page "https://github.com/bear/parsedatetime/")
1244 (synopsis
1245 "Parse human-readable date/time text")
1246 (description
1247 "Parse human-readable date/time text.")
1248 (license license:asl2.0)))
1249
1250(define-public python2-parsedatetime
1251 (package-with-python2 python-parsedatetime))
1252
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
1280(define-public python-pandas
1281 (package
1282 (name "python-pandas")
1283 (version "0.19.2")
1284 (source
1285 (origin
1286 (method url-fetch)
1287 (uri (pypi-uri "pandas" version))
1288 (sha256
1289 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1290 (patches
1291 (search-patches "python-pandas-skip-failing-tests.patch"))))
1292 (build-system python-build-system)
1293 (propagated-inputs
1294 `(("python-numpy" ,python-numpy)
1295 ("python-pytz" ,python-pytz)
1296 ("python-dateutil" ,python-dateutil)))
1297 (native-inputs
1298 `(("python-nose" ,python-nose)
1299 ("python-cython" ,python-cython)))
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.")
1308 (license license:bsd-3)))
1309
1310(define-public python2-pandas
1311 (package-with-python2 python-pandas))
1312
1313(define-public python-tzlocal
1314 (package
1315 (name "python-tzlocal")
1316 (version "1.2.2")
1317 (source
1318 (origin
1319 (method url-fetch)
1320 (uri (pypi-uri "tzlocal" version))
1321 (sha256
1322 (base32
1323 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
1324 (build-system python-build-system)
1325 (propagated-inputs
1326 `(("python-pytz" ,python-pytz)))
1327 (home-page "https://github.com/regebro/tzlocal")
1328 (synopsis
1329 "Local timezone information for Python")
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.")
1335 (license license:cc0)))
1336
1337(define-public python2-pysqlite
1338 (package
1339 (name "python2-pysqlite")
1340 (version "2.8.3")
1341 (source
1342 (origin
1343 (method url-fetch)
1344 (uri (pypi-uri "pysqlite" version))
1345 (sha256
1346 (base32
1347 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
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
1354 (home-page "https://github.com/ghaering/pysqlite")
1355 (synopsis "SQLite bindings for Python")
1356 (description
1357 "Pysqlite provides SQLite bindings for Python that comply to the
1358Database API 2.0T.")
1359 (license license:zlib)))
1360
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)
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.")
1391 (license (license:non-copyleft
1392 "file://COPYING"
1393 "See COPYING in the distribution."))))
1394
1395
1396(define-public python-simplejson
1397 (package
1398 (name "python-simplejson")
1399 (version "3.10.0")
1400 (source
1401 (origin
1402 (method url-fetch)
1403 (uri (pypi-uri "simplejson" version))
1404 (sha256
1405 (base32
1406 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
1407 (build-system python-build-system)
1408 (home-page "http://simplejson.readthedocs.org/en/latest/")
1409 (synopsis
1410 "Json library for Python")
1411 (description
1412 "JSON (JavaScript Object Notation) is a subset of JavaScript
1413syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1414format.
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+.")
1422 (license license:x11)))
1423
1424(define-public python2-simplejson
1425 (package-with-python2 python-simplejson))
1426
1427
1428(define-public python-pyicu
1429 (package
1430 (name "python-pyicu")
1431 (version "1.9.5")
1432 (source
1433 (origin
1434 (method url-fetch)
1435 (uri (pypi-uri "PyICU" version))
1436 (sha256
1437 (base32
1438 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
1439 (build-system python-build-system)
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)))))
1449 (inputs
1450 `(("icu4c" ,icu4c)))
1451 (home-page "http://pyicu.osafoundation.org/")
1452 (synopsis "Python extension wrapping the ICU C++ API")
1453 (description
1454 "PyICU is a python extension wrapping the ICU C++ API.")
1455 (license license:x11)))
1456
1457(define-public python2-pyicu
1458 (package-with-python2 python-pyicu))
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")
1465 (version "0.9.9")
1466 (source (origin
1467 (method url-fetch)
1468 (uri (pypi-uri "dogtail" version))
1469 (sha256
1470 (base32
1471 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
1472 (build-system python-build-system)
1473 (arguments `(#:python ,python-2
1474 #:tests? #f)) ; invalid command "test"
1475 ;; Currently no offical homepage.
1476 (home-page "https://pypi.python.org/pypi/dogtail/")
1477 (synopsis "GUI test tool and automation framework written in Python")
1478 (description
1479 "Dogtail is a GUI test tool and automation framework written in Python.
1480It uses Accessibility (a11y) technologies to communicate with desktop
1481applications. dogtail scripts are written in Python and executed like any
1482other Python program.")
1483 (license license:gpl2+)))
1484
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
1510EmPy system and are set off by a special prefix (by default the at sign, @@).
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.")
1518 (license license:lgpl2.1+)))
1519
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")
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\"."))))
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
1555 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
1556 (patches (search-patches "pybugz-stty.patch"
1557 "pybugz-encode-error.patch"))))
1558 (build-system python-build-system)
1559 (arguments
1560 `(#:python ,python-2 ; SyntaxError with Python 3
1561 #:tests? #f)) ; no 'test' sub-command
1562 (propagated-inputs
1563 `(("element-tree" ,python2-element-tree)))
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/")
1570 (license license:gpl2)))
1571
1572(define-public python-enum34
1573 (package
1574 (name "python-enum34")
1575 (version "1.1.6")
1576 (source
1577 (origin
1578 (method url-fetch)
1579 (uri (pypi-uri "enum34" version))
1580 (sha256
1581 (base32
1582 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
1583 (build-system python-build-system)
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.")
1589 (license license:bsd-3)))
1590
1591(define-public python2-enum34
1592 (package-with-python2 python-enum34))
1593
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)
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)))))
1617 (propagated-inputs
1618 `(("python-six" ,python-six)
1619 ("python-parse" ,python-parse)))
1620 (native-inputs
1621 `(("python-pytest" ,python-pytest)
1622 ("python-pytest-runner" ,python-pytest-runner)))
1623 (home-page "https://github.com/jenisys/parse_type")
1624 (synopsis "Extended parse module")
1625 (description
1626 "Parse_type extends the python parse module.")
1627 (properties
1628 `((python2-variant . ,(delay python2-parse-type))))
1629 (license license:bsd-3)))
1630
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
1639(define-public python-parse
1640 (package
1641 (name "python-parse")
1642 (version "1.6.6")
1643 (source
1644 (origin
1645 (method url-fetch)
1646 (uri (pypi-uri "parse" version))
1647 (sha256
1648 (base32
1649 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1650 (patches (search-patches "python-parse-too-many-fields.patch"))))
1651 (build-system python-build-system)
1652 (arguments
1653 `(#:phases
1654 (modify-phases %standard-phases
1655 (replace 'check
1656 (lambda _ (zero? (system* "python" "test_parse.py")))))))
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.")
1662 (license license:x11)))
1663
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)))))
1689
1690(define-public scons
1691 (package
1692 (name "scons")
1693 (version "2.5.1")
1694 (source (origin
1695 (method url-fetch)
1696 (uri (string-append "mirror://sourceforge/scons/scons/" version
1697 "/scons-" version ".tar.gz"))
1698 (sha256
1699 (base32
1700 "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
1701 (build-system python-build-system)
1702 (arguments
1703 ;; With Python 3.x, fails to build with a syntax error.
1704 `(#:python ,python-2
1705 #:use-setuptools? #f ; still relies on distutils
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.")
1715 (license license:x11)))
1716
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)
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.")
1738 (license license:expat)))
1739
1740(define-public python2-extras
1741 (package-with-python2 python-extras))
1742
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)
1757 (arguments
1758 '(#:tests? #f)) ; no setup.py test command
1759 (home-page
1760 "https://github.com/dbtsai/python-mimeparse")
1761 (synopsis "Python library for parsing MIME types")
1762 (description
1763 "Mimeparse provides basic functions for parsing MIME type names and
1764matching them against a list of media-ranges.")
1765 (license license:expat)))
1766
1767(define-public python2-mimeparse
1768 (package-with-python2 python-mimeparse))
1769
1770(define-public python-nose
1771 (package
1772 (name "python-nose")
1773 (version "1.3.7")
1774 (source
1775 (origin
1776 (method url-fetch)
1777 (uri (pypi-uri "nose" version))
1778 (sha256
1779 (base32
1780 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
1781 (build-system python-build-system)
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.")
1788 (license license:lgpl2.0+)))
1789
1790(define-public python2-nose
1791 (package-with-python2 python-nose))
1792
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'
1806 (propagated-inputs
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
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)
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.")
1841 (license license:psfl)))
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"))))
1856 (arguments
1857 `(#:python ,python-2
1858 #:tests? #f)))) ; no setup.py test command
1859
1860(define-public python-pafy
1861 (package
1862 (name "python-pafy")
1863 (version "0.5.3.1")
1864 (source
1865 (origin
1866 (method url-fetch)
1867 (uri (pypi-uri "pafy" version))
1868 (sha256
1869 (base32
1870 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
1871 (build-system python-build-system)
1872 (arguments
1873 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
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
1884(define-public python-py
1885 (package
1886 (name "python-py")
1887 (version "1.4.32")
1888 (source
1889 (origin
1890 (method url-fetch)
1891 (uri (pypi-uri "py" version))
1892 (sha256
1893 (base32
1894 "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
1895 (build-system python-build-system)
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))
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.")
1907 (license license:expat)))
1908
1909(define-public python2-py
1910 (package-with-python2 python-py))
1911
1912(define-public python-pytest
1913 (package
1914 (name "python-pytest")
1915 (version "2.7.3")
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
1924 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
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)
1932 (propagated-inputs
1933 `(("python-py" ,python-py)))
1934 (native-inputs
1935 `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
1936 ("bash" ,bash)
1937 ("python-nose" ,python-nose)
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.")
1945 (license license:expat)))
1946
1947(define-public python2-pytest
1948 (package-with-python2 python-pytest))
1949
1950;; Some packages require a newer pytest.
1951(define-public python-pytest-3.0
1952 (package
1953 (inherit python-pytest)
1954 (name "python-pytest")
1955 (version "3.0.7")
1956 (source (origin
1957 (method url-fetch)
1958 (uri (pypi-uri "pytest" version))
1959 (sha256
1960 (base32
1961 "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
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)))
1972 #t)))))
1973 (native-inputs
1974 `(("python-hypothesis" ,python-hypothesis)
1975 ,@(package-native-inputs python-pytest)))
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))))))
1985
1986(define-public python-pytest-cov
1987 (package
1988 (name "python-pytest-cov")
1989 (version "2.4.0")
1990 (source
1991 (origin
1992 (method url-fetch)
1993 (uri (pypi-uri "pytest-cov" version))
1994 (sha256
1995 (base32
1996 "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
1997 (build-system python-build-system)
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")))))))
2008 (propagated-inputs
2009 `(("python-coverage" ,python-coverage)
2010 ("python-pytest" ,python-pytest)))
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.")
2017 (license license:expat)))
2018
2019(define-public python2-pytest-cov
2020 (package-with-python2 python-pytest-cov))
2021
2022(define-public python-pytest-runner
2023 (package
2024 (name "python-pytest-runner")
2025 (version "2.11.1")
2026 (source
2027 (origin
2028 (method url-fetch)
2029 (uri (pypi-uri "pytest-runner" version))
2030 (sha256
2031 (base32
2032 "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
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)))
2048 (home-page "https://github.com/pytest-dev/pytest-runner")
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.")
2053 (license license:expat)))
2054
2055(define-public python2-pytest-runner
2056 (package-with-python2 python-pytest-runner))
2057
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)))
2072 (propagated-inputs
2073 `(("python-pytest" ,python-pytest)))
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)
2089 (propagated-inputs
2090 `(("python2-mock" ,python2-mock)
2091 ,@(package-propagated-inputs base))))))
2092
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
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))))
2112 (build-system python-build-system)
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")))))
2122 (native-inputs
2123 `(("unzip" ,unzip)
2124 ("python-setuptools-scm" ,python-setuptools-scm)))
2125 (propagated-inputs
2126 `(("python-execnet" ,python-execnet)
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.")
2140 (license license:expat)))
2141
2142(define-public python2-pytest-xdist
2143 (package-with-python2 python-pytest-xdist))
2144
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)
2159 (native-inputs
2160 `(("python-pytest" ,python-pytest)))
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.")
2166 (license license:expat)))
2167
2168(define-public python2-scripttest
2169 (package-with-python2 python-scripttest))
2170
2171(define-public python-testtools
2172 (package
2173 (name "python-testtools")
2174 (version "1.4.0")
2175 (source
2176 (origin
2177 (method url-fetch)
2178 (uri (pypi-uri "testtools" version))
2179 (sha256
2180 (base32
2181 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
2182 (build-system python-build-system)
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)))))
2204 (propagated-inputs
2205 `(("python-mimeparse" ,python-mimeparse)
2206 ("python-extras" ,python-extras)))
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.")
2214 (license license:psfl)))
2215
2216(define-public python2-testtools
2217 (package-with-python2 python-testtools))
2218
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)
2233 (propagated-inputs
2234 `(("python-testtools" ,python-testtools)))
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.")
2240 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2241
2242(define-public python2-testscenarios
2243 (package-with-python2 python-testscenarios))
2244
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)
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.")
2265 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2266
2267(define-public python2-testresources
2268 (package-with-python2 python-testresources))
2269
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)
2284 (propagated-inputs
2285 `(("python-extras" ,python-extras)
2286 ("python-mimeparse" ,python-mimeparse)))
2287 (native-inputs
2288 `(("python-testscenarios" ,python-testscenarios)))
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.")
2294 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2295
2296(define-public python2-subunit
2297 (package-with-python2 python-subunit))
2298
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
2310 (package
2311 (name "python-pbr-minimal")
2312 (version "3.0.1")
2313 (source
2314 (origin
2315 (method url-fetch)
2316 (uri (pypi-uri "pbr" version))
2317 (sha256
2318 (base32
2319 "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p"))))
2320 (build-system python-build-system)
2321 (arguments
2322 `(#:tests? #f))
2323 (home-page "http://docs.openstack.org/developer/pbr/")
2324 (synopsis "Minimal build of python-pbr used for bootstrapping")
2325 (description
2326 "Used only for bootstrapping python2-pbr, you should not need this.")
2327 (license license:asl2.0)))
2328
2329(define python2-pbr-minimal
2330 (package-with-python2 python-pbr-minimal))
2331
2332(define-public python-pbr
2333 (package
2334 (inherit python-pbr-minimal)
2335 (name "python-pbr")
2336 (arguments
2337 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2338 (propagated-inputs
2339 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2340 (native-inputs
2341 `(("python-fixtures" ,python-fixtures)
2342 ;; discover, coverage, hacking, subunit
2343 ("python-mock" ,python-mock)
2344 ("python-six" ,python-six)
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)))
2351 (synopsis "Enhance the default behavior of Python’s setuptools")
2352 (description
2353 "Python Build Reasonableness (PBR) is a library that injects some useful
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")))
2358
2359(define-public python2-pbr
2360 (package-with-python2 python-pbr))
2361
2362(define-public python-fixtures
2363 (package
2364 (name "python-fixtures")
2365 (version "1.4.0")
2366 (source
2367 (origin
2368 (method url-fetch)
2369 (uri (pypi-uri "fixtures" version))
2370 (sha256
2371 (base32
2372 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
2373 (build-system python-build-system)
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")))))))
2381 (propagated-inputs
2382 `(("python-six" ,python-six)))
2383 (native-inputs
2384 `(("python-mock" ,python-mock)
2385 ("python-pbr-minimal" ,python-pbr-minimal)
2386 ("python-testtools" ,python-testtools)))
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.")
2392 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
2393
2394(define-public python2-fixtures
2395 (package-with-python2 python-fixtures))
2396
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)
2411 (arguments
2412 ;; FIXME: Many tests are failing.
2413 '(#:tests? #f))
2414 (propagated-inputs
2415 `(("python-fixtures" ,python-fixtures)
2416 ("python-subunit" ,python-subunit)
2417 ("python-testtools" ,python-testtools)))
2418 (native-inputs
2419 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
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.")
2426 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
2427
2428(define-public python2-testrepository
2429 (package-with-python2 python-testrepository))
2430
2431(define-public python-coverage
2432 (package
2433 (name "python-coverage")
2434 (version "4.1")
2435 (source
2436 (origin
2437 (method url-fetch)
2438 (uri (pypi-uri "coverage" version))
2439 (sha256
2440 (base32
2441 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
2442 (build-system python-build-system)
2443 (arguments
2444 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2445 '(#:tests? #f))
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.")
2453 (license license:bsd-3)))
2454
2455(define-public python2-coverage
2456 (package-with-python2 python-coverage))
2457
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)
2470 (propagated-inputs
2471 `(("python-coverage" ,python-coverage)))
2472 (home-page "https://github.com/schlamar/cov-core")
2473 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
2474 (description
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.")
2478 (license license:expat)))
2479
2480(define-public python2-cov-core
2481 (package-with-python2 python-cov-core))
2482
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)
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
2502backported from Python 2.7 for Python 2.4+.")
2503 (license license:bsd-3)))
2504
2505(define-public python2-discover
2506 (package-with-python2 python-discover))
2507
2508(define-public behave
2509 (package
2510 (name "behave")
2511 (version "1.2.5")
2512 (source (origin
2513 (method url-fetch)
2514 (uri (pypi-uri "behave" version ".tar.bz2"))
2515 (sha256
2516 (base32
2517 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
2518 (build-system python-build-system)
2519 (propagated-inputs
2520 `(("python-six" ,python-six)
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
2525 (home-page "https://github.com/behave/behave")
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.")
2533 (license license:x11)))
2534
2535(define-public python-exif-read
2536 (package
2537 (name "python-exif-read")
2538 (version "2.1.2")
2539 (source (origin
2540 (method url-fetch)
2541 (uri (pypi-uri "ExifRead" version))
2542 (sha256
2543 (base32
2544 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
2545 (build-system python-build-system)
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.")
2552 (license license:bsd-3)))
2553
2554(define-public python2-exif-read
2555 (package-with-python2 python-exif-read))
2556
2557(define-public python-pyld
2558 (package
2559 (name "python-pyld")
2560 (version "0.7.1")
2561 (source (origin
2562 (method url-fetch)
2563 (uri (pypi-uri "PyLD" version))
2564 (sha256
2565 (base32
2566 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
2567 (build-system python-build-system)
2568 (arguments `(#:tests? #f)) ; no tests
2569 (home-page "https://github.com/digitalbazaar/pyld")
2570 (synopsis "Python implementation of the JSON-LD specification")
2571 (description
2572 "PyLD is an implementation of the JSON-LD specification.")
2573 (license license:bsd-3)))
2574
2575(define-public python2-pyld
2576 (package-with-python2 python-pyld))
2577
2578(define-public python-certifi
2579 (package
2580 (name "python-certifi")
2581 (version "2017.1.23")
2582 (source (origin
2583 (method url-fetch)
2584 (uri (pypi-uri "certifi" version))
2585 (sha256
2586 (base32
2587 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
2588 (build-system python-build-system)
2589 (home-page "https://certifi.io/")
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.")
2594 (license license:asl2.0)))
2595
2596(define-public python2-certifi
2597 (package-with-python2 python-certifi))
2598
2599(define-public python-click
2600 (package
2601 (name "python-click")
2602 (version "6.7")
2603 (source
2604 (origin
2605 (method url-fetch)
2606 (uri (pypi-uri "click" version))
2607 (sha256
2608 (base32
2609 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
2610 (build-system python-build-system)
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'"))))
2621 #t))
2622 (replace 'check
2623 (lambda _
2624 (zero? (system* "make" "test")))))))
2625 (native-inputs
2626 `(("python-pytest" ,python-pytest)))
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.")
2634 (license license:bsd-3)))
2635
2636(define-public python2-click
2637 (package-with-python2 python-click))
2638
2639(define-public python-wheel
2640 (package
2641 (name "python-wheel")
2642 (version "0.30.0a0")
2643 (source
2644 (origin
2645 (method url-fetch)
2646 (uri (pypi-uri "wheel" version))
2647 (sha256
2648 (base32
2649 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
2650 (build-system python-build-system)
2651 (native-inputs
2652 `(("python-jsonschema" ,python-jsonschema)
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.")
2664 (license license:expat)
2665 (properties `((python2-variant . ,(delay python2-wheel))))))
2666
2667(define-public python2-wheel
2668 (let ((wheel (package-with-python2
2669 (strip-python2-variant python-wheel))))
2670 (package (inherit wheel)
2671 (native-inputs `(("python2-functools32" ,python2-functools32)
2672 ,@(package-native-inputs wheel))))))
2673
2674
2675(define-public python-requests
2676 (package
2677 (name "python-requests")
2678 (version "2.13.0")
2679 (source (origin
2680 (method url-fetch)
2681 (uri (pypi-uri "requests" version))
2682 (sha256
2683 (base32
2684 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
2685 ;; TODO: unbundle urllib3 and chardet.
2686 (build-system python-build-system)
2687 (arguments
2688 ;; FIXME: Some tests require network access.
2689 '(#:tests? #f))
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.")
2695 (license license:asl2.0)))
2696
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
2709(define-public python2-requests
2710 (package-with-python2 python-requests))
2711
2712(define-public python-vcversioner
2713 (package
2714 (name "python-vcversioner")
2715 (version "2.16.0.0")
2716 (source
2717 (origin
2718 (method url-fetch)
2719 (uri (pypi-uri "vcversioner" version))
2720 (sha256
2721 (base32
2722 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
2723 (build-system python-build-system)
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")
2729 (license license:isc)))
2730
2731(define-public python2-vcversioner
2732 (package-with-python2 python-vcversioner))
2733
2734(define-public python-jsonschema
2735 (package
2736 (name "python-jsonschema")
2737 (version "2.5.1")
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
2746 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
2747 (build-system python-build-system)
2748 (arguments
2749 '(#:phases
2750 (modify-phases %standard-phases
2751 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
2752 (native-inputs
2753 `(("python-nose" ,python-nose)
2754 ("python-vcversioner" ,python-vcversioner)))
2755 (home-page "https://github.com/Julian/jsonschema")
2756 (synopsis "Implementation of JSON Schema for Python")
2757 (description
2758 "Jsonschema is an implementation of JSON Schema for Python.")
2759 (license license:expat)
2760 (properties `((python2-variant . ,(delay python2-jsonschema))))))
2761
2762(define-public python2-jsonschema
2763 (let ((jsonschema (package-with-python2
2764 (strip-python2-variant python-jsonschema))))
2765 (package (inherit jsonschema)
2766 (native-inputs
2767 `(("python2-mock" ,python2-mock)
2768 ,@(package-native-inputs jsonschema)))
2769 (propagated-inputs
2770 `(("python2-functools32" ,python2-functools32))))))
2771
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
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)))
2826 (home-page "https://github.com/fedora-infra/kitchen")
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
2840(define-public python-unidecode
2841 (package
2842 (name "python-unidecode")
2843 (version "0.04.20")
2844 (source (origin
2845 (method url-fetch)
2846 (uri (pypi-uri "Unidecode" version))
2847 (sha256
2848 (base32
2849 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
2850 (build-system python-build-system)
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.")
2859 (license license:gpl2+)))
2860
2861(define-public python2-unidecode
2862 (package-with-python2 python-unidecode))
2863
2864(define-public python-pyjwt
2865 (package
2866 (name "python-pyjwt")
2867 (version "1.5.2")
2868 (source
2869 (origin
2870 (method url-fetch)
2871 (uri (pypi-uri "PyJWT" version))
2872 (sha256
2873 (base32
2874 "0pvr3iymab7v2qz74ann760z7qahqgqszxz5iqqbaqv4z2zz0y8i"))
2875 (modules '((guix build utils)))
2876 (snippet
2877 '(begin
2878 (for-each delete-file-recursively
2879 (find-files "." "\\.pyc$"))
2880 #t))))
2881 (build-system python-build-system)
2882 (native-inputs
2883 `(("python-pytest" ,python-pytest-3.0)
2884 ("python-pytest-cov" ,python-pytest-cov)
2885 ("python-pytest-runner" ,python-pytest-runner)))
2886 (home-page "https://github.com/progrium/pyjwt")
2887 (synopsis "JSON Web Token implementation in Python")
2888 (description
2889 "PyJWT is a JSON Web Token implementation written in Python.")
2890 (license license:expat)))
2891
2892(define-public python2-pyjwt
2893 (package-with-python2 python-pyjwt))
2894
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
2924(define-public python-oauthlib
2925 (package
2926 (name "python-oauthlib")
2927 (version "1.0.3")
2928 (source (origin
2929 (method url-fetch)
2930 (uri (pypi-uri "oauthlib" version))
2931 (sha256
2932 (base32
2933 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2934 (build-system python-build-system)
2935 (native-inputs
2936 `(("python-nose" ,python-nose)
2937 ("python-mock" ,python-mock)
2938 ("python-cryptography" ,python-cryptography)
2939 ("python-pyjwt" ,python-pyjwt)
2940 ("python-blinker" ,python-blinker)))
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.")
2946 (license license:bsd-3)
2947 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2948
2949(define-public python2-oauthlib
2950 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2951 (package
2952 (inherit base)
2953 (native-inputs `(("python2-unittest2" ,python2-unittest2)
2954 ,@(package-native-inputs base))))))
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)
2970 (home-page "https://github.com/mitsuhiko/itsdangerous")
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.")
2975 (license license:bsd-3)))
2976
2977(define-public python2-itsdangerous
2978 (package-with-python2 python-itsdangerous))
2979
2980(define-public python-pyyaml
2981 (package
2982 (name "python-pyyaml")
2983 (version "3.12")
2984 (source
2985 (origin
2986 (method url-fetch)
2987 (uri (pypi-uri "PyYAML" version))
2988 (sha256
2989 (base32
2990 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
2991 (build-system python-build-system)
2992 (inputs
2993 `(("libyaml" ,libyaml)))
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
3007(define-public python-virtualenv
3008 (package
3009 (name "python-virtualenv")
3010 (version "15.0.3")
3011 (source
3012 (origin
3013 (method url-fetch)
3014 (uri (pypi-uri "virtualenv" version))
3015 (sha256
3016 (base32
3017 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
3018 (build-system python-build-system)
3019 (arguments
3020 `(#:phases
3021 (modify-phases %standard-phases
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")))))))
3029 (native-inputs
3030 `(("python-mock" ,python-mock)
3031 ("python-pytest" ,python-pytest)))
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.")
3036 (license license:expat)))
3037
3038(define-public python2-virtualenv
3039 (package-with-python2 python-virtualenv))
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)
3055 (home-page "https://github.com/mitsuhiko/markupsafe")
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.")
3060 (license license:bsd-3)))
3061
3062(define-public python2-markupsafe
3063 (package-with-python2 python-markupsafe))
3064
3065(define-public python-jinja2
3066 (package
3067 (name "python-jinja2")
3068 (version "2.9.6")
3069 (source
3070 (origin
3071 (method url-fetch)
3072 (uri (pypi-uri "Jinja2" version))
3073 (sha256
3074 (base32
3075 "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx"))))
3076 (build-system python-build-system)
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)))))
3089 (propagated-inputs
3090 `(("python-markupsafe" ,python-markupsafe)))
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.")
3096 (license license:bsd-3)))
3097
3098(define-public python2-jinja2
3099 (package-with-python2 python-jinja2))
3100
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)
3112 (arguments
3113 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
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.")
3119 (license license:expat)
3120 (properties `((python2-variant . ,(delay python2-pystache))))))
3121
3122(define-public python2-pystache
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")))))))))
3132
3133(define-public python-joblib
3134 (package
3135 (name "python-joblib")
3136 (version "0.10.3")
3137 (source (origin
3138 (method url-fetch)
3139 (uri (pypi-uri "joblib" version))
3140 (sha256
3141 (base32
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))))
3151 (build-system python-build-system)
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)))))
3171 ;; Provide nose to enable tests command
3172 (native-inputs
3173 `(("python-nose" ,python-nose)
3174 ("python-sphinx" ,python-sphinx)
3175 ("python-docutils" ,python-docutils)
3176 ("python-numpydoc" ,python-numpydoc)))
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.")
3184 (license license:bsd-3)))
3185
3186(define-public python2-joblib
3187 (package-with-python2 python-joblib))
3188
3189(define-public python-docutils
3190 (package
3191 (name "python-docutils")
3192 (version "0.13.1")
3193 (source
3194 (origin
3195 (method url-fetch)
3196 (uri (pypi-uri "docutils" version))
3197 (sha256
3198 (base32
3199 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3200 (build-system python-build-system)
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.
3211 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3212
3213(define-public python2-docutils
3214 (package-with-python2 python-docutils))
3215
3216(define-public python-pygments
3217 (package
3218 (name "python-pygments")
3219 (version "2.1.3")
3220 (source
3221 (origin
3222 (method url-fetch)
3223 (uri (pypi-uri "Pygments" version))
3224 (sha256
3225 (base32
3226 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
3227 (build-system python-build-system)
3228 (arguments
3229 ;; FIXME: Tests require sphinx, which depends on this.
3230 '(#:tests? #f))
3231 (home-page "http://pygments.org/")
3232 (synopsis "Syntax highlighting")
3233 (description
3234 "Pygments is a syntax highlighting package written in Python.")
3235 (license license:bsd-2)))
3236
3237(define-public python2-pygments
3238 (package-with-python2 python-pygments))
3239
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
3270(define-public python-sphinx
3271 (package
3272 (name "python-sphinx")
3273 (version "1.5.1")
3274 (source
3275 (origin
3276 (method url-fetch)
3277 (uri (pypi-uri "Sphinx" version))
3278 (sha256
3279 (base32
3280 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
3281 (build-system python-build-system)
3282 (arguments
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")))))))
3290 (propagated-inputs
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)
3296 ("python-docutils" ,python-docutils)
3297 ("python-jinja2" ,python-jinja2)
3298 ("python-pygments" ,python-pygments)
3299 ("python-requests" ,python-requests)
3300 ("python-six" ,python-six)))
3301 (native-inputs
3302 `(("graphviz" ,graphviz)
3303 ("python-html5lib" ,python-html5lib)
3304 ("python-mock" ,python-mock)
3305 ("python-nose" ,python-nose)))
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.")
3311 (license license:bsd-3)
3312 (properties `((python2-variant . ,(delay python2-sphinx))))))
3313
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
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
3357 `(("python-pytest" ,python-pytest-3.0)
3358 ,@(package-native-inputs python-sphinx)))))
3359
3360(define-public python2-sphinx
3361 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3362 (package
3363 (inherit base)
3364 (native-inputs `(("python2-mock" ,python2-mock)
3365 ("python2-enum34" ,python2-enum34)
3366 ,@(package-native-inputs base)))
3367 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3368 ,@(package-propagated-inputs base))))))
3369
3370(define-public python-sphinx-rtd-theme
3371 (package
3372 (name "python-sphinx-rtd-theme")
3373 (version "0.2.4")
3374 (source
3375 (origin
3376 (method url-fetch)
3377 (uri (pypi-uri "sphinx_rtd_theme" version))
3378 (sha256
3379 (base32
3380 "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
3381 (build-system python-build-system)
3382 (arguments '(#:tests? #f)) ; No tests.
3383 (propagated-inputs
3384 `(("python-sphinx" ,python-sphinx)))
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.")
3388 (license license:expat)))
3389
3390(define-public python2-sphinx-rtd-theme
3391 (package-with-python2 python-sphinx-rtd-theme))
3392
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
3406 `(("python-dateutil" ,python-dateutil)
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
3423(define-public python-feedgenerator
3424 (package
3425 (name "python-feedgenerator")
3426 (version "1.9")
3427 (source
3428 (origin
3429 (method url-fetch)
3430 (uri (pypi-uri "feedgenerator" version))
3431 (sha256
3432 (base32
3433 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
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))))
3442 (build-system python-build-system)
3443 (propagated-inputs
3444 `(("python-pytz" ,python-pytz)
3445 ("python-six" ,python-six)))
3446 (home-page "https://github.com/getpelican/feedgenerator")
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.")
3452 (license license:bsd-3)))
3453
3454(define-public python2-feedgenerator
3455 (package-with-python2 python-feedgenerator))
3456
3457(define-public python-blinker
3458 (package
3459 (name "python-blinker")
3460 (version "1.4")
3461 (source
3462 (origin
3463 (method url-fetch)
3464 (uri (pypi-uri "blinker" version))
3465 (sha256
3466 (base32
3467 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
3468 (build-system python-build-system)
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
3479(define-public pelican
3480 (package
3481 (name "pelican")
3482 (version "3.6.3")
3483 (source
3484 (origin
3485 (method url-fetch)
3486 (uri (pypi-uri "pelican" version))
3487 (sha256
3488 (base32
3489 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
3490 (build-system python-build-system)
3491 (propagated-inputs
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)
3500 ("python-dateutil" ,python-dateutil)))
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.")
3522 (license license:agpl3+)))
3523
3524(define-public python-scikit-learn
3525 (package
3526 (name "python-scikit-learn")
3527 (version "0.19.0")
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"))
3534 (file-name (string-append name "-" version ".tar.gz"))
3535 (sha256
3536 (base32
3537 "0g7q4ri75mj93wpa9bp83a3jmrf3dm5va9h7k4zkbcxr6bgqka15"))))
3538 (build-system python-build-system)
3539 (arguments
3540 `(#:phases
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")))))))
3555 (inputs
3556 `(("openblas" ,openblas)))
3557 (native-inputs
3558 `(("python-nose" ,python-nose)
3559 ("python-cython" ,python-cython)))
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.")
3568 (license license:bsd-3)))
3569
3570(define-public python2-scikit-learn
3571 (package-with-python2 python-scikit-learn))
3572
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)
3586 (arguments
3587 ;; TODO: Some tests require running X11 server. Disable them?
3588 '(#:tests? #f))
3589 ;; See DEPENDS.txt for the list of build and run time requiremnts
3590 (propagated-inputs
3591 `(("python-matplotlib" ,python-matplotlib)
3592 ("python-networkx" ,python-networkx)
3593 ("python-scipy" ,python-scipy)
3594 ("python-pillow" ,python-pillow)))
3595 (native-inputs
3596 `(("python-numpy" ,python-numpy)
3597 ("python-cython" ,python-cython)
3598 ("python-six" ,python-six)))
3599 (home-page "http://scikit-image.org/")
3600 (synopsis "Image processing in Python")
3601 (description
3602 "Scikit-image is a collection of algorithms for image processing.")
3603 (license license:bsd-3)))
3604
3605(define-public python2-scikit-image
3606 (package-with-python2 python-scikit-image))
3607
3608(define-public python-redis
3609 (package
3610 (name "python-redis")
3611 (version "2.10.5")
3612 (source
3613 (origin
3614 (method url-fetch)
3615 (uri (pypi-uri "redis" version))
3616 (sha256
3617 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
3618 (build-system python-build-system)
3619 ;; Tests require a running Redis server
3620 (arguments '(#:tests? #f))
3621 ;; As long as we are not running test, we do not need this input :-)
3622 ;;(native-inputs
3623 ;; `(("python-pytest" ,python-pytest)))
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
3633(define-public python-rq
3634 (package
3635 (name "python-rq")
3636 (version "0.7.1")
3637 (source
3638 (origin
3639 (method url-fetch)
3640 (uri (pypi-uri "rq" version))
3641 (sha256
3642 (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
3643 (build-system python-build-system)
3644 (propagated-inputs
3645 `(("python-click" ,python-click)
3646 ("python-redis" ,python-redis)))
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.")
3653 (license license:bsd-2)))
3654
3655(define-public python2-rq
3656 (package-with-python2 python-rq))
3657
3658(define-public python-cython
3659 (package
3660 (name "python-cython")
3661 (version "0.26")
3662 (source
3663 (origin
3664 (method url-fetch)
3665 (uri (pypi-uri "Cython" version))
3666 (sha256
3667 (base32
3668 "0riciynnr0r68cvg6r3gbhi9x7h44pdwb7926m6n5vfs5p1f492c"))))
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
3676 (modify-phases %standard-phases
3677 (add-before 'check 'set-HOME
3678 ;; some tests require access to "$HOME/.cython"
3679 (lambda _ (setenv "HOME" "/tmp") #t))
3680 (replace 'check
3681 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
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.")
3687 (license license:asl2.0)
3688 (properties `((python2-variant . ,(delay python2-cython))))))
3689
3690(define-public python2-cython
3691 (package (inherit (package-with-python2
3692 (strip-python2-variant python-cython)))
3693 (name "python2-cython")
3694 (inputs
3695 `(("python-2" ,python-2))))) ; this is not automatically changed
3696
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
3712 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
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
3720(define-public python-numpy
3721 (package
3722 (name "python-numpy")
3723 (version "1.12.0")
3724 (source
3725 (origin
3726 (method url-fetch)
3727 (uri (string-append
3728 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3729 (file-name (string-append name "-" version ".tar.gz"))
3730 (sha256
3731 (base32
3732 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
3733 (build-system python-build-system)
3734 (inputs
3735 `(("openblas" ,openblas)
3736 ("lapack" ,lapack)))
3737 (native-inputs
3738 `(("python-cython" ,python-cython)
3739 ("python-nose" ,python-nose)
3740 ("gfortran" ,gfortran)))
3741 (arguments
3742 `(#:phases
3743 (modify-phases %standard-phases
3744 (add-before 'build 'set-environment-variables
3745 (lambda* (#:key inputs #:allow-other-keys)
3746 (call-with-output-file "site.cfg"
3747 (lambda (port)
3748 (format port
3749 "[openblas]
3750libraries = openblas
3751library_dirs = ~a/lib
3752include_dirs = ~a/include
3753
3754# backslash-n to make emacs happy
3755\n[lapack]
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"))))
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')"))
3768 #t))
3769 ;; Tests can only be run after the library has been installed and not
3770 ;; within the source directory.
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)
3776 (with-directory-excursion "/tmp"
3777 (zero? (system* "python" "-c"
3778 "import numpy; numpy.test(verbose=2)"))))))))
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
3782with Python. It contains among other things: a powerful N-dimensional array
3783object, sophisticated (broadcasting) functions, tools for integrating C/C++
3784and Fortran code, useful linear algebra, Fourier transform, and random number
3785capabilities.")
3786 (license license:bsd-3)))
3787
3788(define-public python2-numpy
3789 (package-with-python2 python-numpy))
3790
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
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
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
3877(define-public python2-fastlmm
3878 (package
3879 (name "python2-fastlmm")
3880 (version "0.2.21")
3881 (source
3882 (origin
3883 (method url-fetch)
3884 (uri (pypi-uri "fastlmm" version ".zip"))
3885 (sha256
3886 (base32
3887 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
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)
3897 ("python2-pysnptools" ,python2-pysnptools)))
3898 (native-inputs
3899 `(("unzip" ,unzip)
3900 ("python2-cython" ,python2-cython)
3901 ("python2-mock" ,python2-mock)
3902 ("python2-nose" ,python2-nose)))
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.")
3909 (license license:asl2.0)))
3910
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)
3917 (native-inputs
3918 `(("python-matplotlib" ,python-matplotlib)
3919 ("python-numpy" ,python-numpy)
3920 ("pkg-config" ,pkg-config)
3921 ("python-sphinx" ,python-sphinx)
3922 ("python-numpydoc" ,python-numpydoc)
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)))
3956 ("texinfo" ,texinfo)
3957 ("perl" ,perl)
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")
3963 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
3964 (sha256
3965 (base32
3966 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
3967 ,@(package-native-inputs python-numpy)))
3968 (arguments
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=")))
3984
3985 ;; FIXME: this is needed to for texlive-union to generate
3986 ;; fonts, which are not found.
3987 (setenv "HOME" "/tmp")
3988
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))))
4018
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))))))
4025
4026(define-public python-pygit2
4027 (package
4028 (name "python-pygit2")
4029 (version "0.26.0")
4030 (source
4031 (origin
4032 (method url-fetch)
4033 (uri (pypi-uri "pygit2" version))
4034 (sha256
4035 (base32
4036 "1cbc488ra3kg7r3qky17ms0szi3cda2d96qfkv1l9djsy9hnvw57"))
4037 (patches
4038 (search-patches "python-pygit2-disable-network-tests.patch"))))
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
4055(define-public python-pyparsing
4056 (package
4057 (name "python-pyparsing")
4058 (version "2.2.0")
4059 (source
4060 (origin
4061 (method url-fetch)
4062 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
4063 "/pyparsing-" version
4064 "/pyparsing-" version ".tar.gz"))
4065 (sha256
4066 (base32
4067 "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8"))))
4068 (build-system python-build-system)
4069 (outputs '("out" "doc"))
4070 (arguments
4071 `(#:tests? #f ; no test target
4072 #:phases
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))))))
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.")
4097 (license license:expat)))
4098
4099(define-public python2-pyparsing
4100 (package-with-python2 python-pyparsing))
4101
4102(define-public python-numpydoc
4103 (package
4104 (name "python-numpydoc")
4105 (version "0.5")
4106 (source
4107 (origin
4108 (method url-fetch)
4109 (uri (string-append
4110 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
4111 version ".tar.gz"))
4112 (sha256
4113 (base32
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"))))))
4123 (build-system python-build-system)
4124 (propagated-inputs
4125 `(("python-sphinx" ,python-sphinx)))
4126 (native-inputs
4127 `(("python-nose" ,python-nose)))
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.")
4133 (license license:bsd-2)))
4134
4135(define-public python2-numpydoc
4136 (package-with-python2 python-numpydoc))
4137
4138(define-public python-numexpr
4139 (package
4140 (name "python-numexpr")
4141 (version "2.6.1")
4142 (source
4143 (origin
4144 (method url-fetch)
4145 (uri (pypi-uri "numexpr" version))
4146 (sha256
4147 (base32
4148 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
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).")
4162 (license license:expat)))
4163
4164(define-public python2-numexpr
4165 (package-with-python2 python-numexpr))
4166
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
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)))
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")))))))
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
4229(define-public python-matplotlib
4230 (package
4231 (name "python-matplotlib")
4232 (version "2.0.2")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (pypi-uri "matplotlib" version))
4237 (sha256
4238 (base32
4239 "1w8z2a1l7s72p1byfz7g03wqhygqxi8w82619dqb3a1lm97w9yqg"))))
4240 (build-system python-build-system)
4241 (propagated-inputs ; the following packages are all needed at run time
4242 `(("python-cycler" ,python-cycler)
4243 ("python-pyparsing" ,python-pyparsing)
4244 ("python-pygobject" ,python-pygobject)
4245 ("gobject-introspection" ,gobject-introspection)
4246 ("python-tkinter" ,python "tk")
4247 ("python-dateutil" ,python-dateutil)
4248 ("python-numpy" ,python-numpy)
4249 ("python-pillow" ,python-pillow)
4250 ("python-pytz" ,python-pytz)
4251 ("python-six" ,python-six)
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
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)))
4267 (inputs
4268 `(("libpng" ,libpng)
4269 ("imagemagick" ,imagemagick)
4270 ("freetype" ,freetype)
4271 ("cairo" ,cairo)
4272 ("glib" ,glib)
4273 ;; FIXME: Add backends when available.
4274 ;("python-wxpython" ,python-wxpython)
4275 ("python-pyqt" ,python-pyqt)
4276 ("tcl" ,tcl)
4277 ("tk" ,tk)))
4278 (native-inputs
4279 `(("pkg-config" ,pkg-config)
4280 ("python-nose" ,python-nose)
4281 ("python-mock" ,python-mock)))
4282 (arguments
4283 `(#:phases
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]~%
4297basedirlist = ~a,~a~%
4298 [rc_options]~%
4299backend = TkAgg~%"
4300 (assoc-ref inputs "tcl")
4301 (assoc-ref inputs "tk")))))
4302 #t)))))
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.")
4311 (license license:psfl)
4312 (properties `((python2-variant . ,(delay python2-matplotlib))))))
4313
4314(define-public python2-matplotlib
4315 (let ((matplotlib (package-with-python2
4316 (strip-python2-variant python-matplotlib))))
4317 (package (inherit matplotlib)
4318 ;; Make sure to use special packages for Python 2 instead
4319 ;; of those automatically rewritten by package-with-python2.
4320 (propagated-inputs
4321 `(("python2-pycairo" ,python2-pycairo)
4322 ("python2-functools32" ,python2-functools32)
4323 ("python2-pygobject-2" ,python2-pygobject-2)
4324 ("python2-subprocess32" ,python2-subprocess32)
4325 ("python2-tkinter" ,python-2 "tk")
4326 ,@(fold alist-delete (package-propagated-inputs matplotlib)
4327 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
4328
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)
4341 ("python-mock" ,python-mock)
4342 ("graphviz" ,graphviz)
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
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"))))
4362 (replace 'install
4363 (lambda* (#:key inputs outputs #:allow-other-keys)
4364 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
4365 (doc (string-append data "/doc/python-matplotlib-" ,version))
4366 (info (string-append data "/info"))
4367 (html (string-append doc "/html")))
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)))
4377 (symlink (string-append html "/_images")
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")))
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))))
4390
4391(define-public python2-matplotlib-documentation
4392 (package-with-python2 python-matplotlib-documentation))
4393
4394(define-public python2-pysnptools
4395 (package
4396 (name "python2-pysnptools")
4397 (version "0.3.9")
4398 (source
4399 (origin
4400 (method url-fetch)
4401 (uri (pypi-uri "pysnptools" version ".zip"))
4402 (sha256
4403 (base32
4404 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
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)
4411 ("python2-pandas" ,python2-pandas)))
4412 (native-inputs
4413 `(("python2-cython" ,python2-cython)))
4414 (native-inputs
4415 `(("unzip" ,unzip)))
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.")
4423 (license license:asl2.0)))
4424
4425(define-public python-rpy2
4426 (package
4427 (name "python-rpy2")
4428 (version "2.9.0")
4429 (source
4430 (origin
4431 (method url-fetch)
4432 (uri (pypi-uri "rpy2" version))
4433 (sha256
4434 (base32
4435 "0bqihjrdqwj5r1h86shvfb1p5hfr4a6klv1v54bzfr9r144w3rni"))))
4436 (build-system python-build-system)
4437 (arguments
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
4444 (modify-phases %standard-phases
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
4454 (lambda* (#:key outputs inputs #:allow-other-keys)
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"))))
4462 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
4463 (propagated-inputs
4464 `(("python-six" ,python-six)
4465 ("python-jinja2" ,python-jinja2)
4466 ("python-pytz" ,python-pytz)))
4467 (inputs
4468 `(("readline" ,readline)
4469 ("icu4c" ,icu4c)
4470 ("pcre" ,pcre)
4471 ("r-minimal" ,r-minimal)
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)))
4478 (native-inputs
4479 `(("zlib" ,zlib)))
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.")
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+))))
4490
4491(define-public python-scipy
4492 (package
4493 (name "python-scipy")
4494 (version "0.19.1")
4495 (source
4496 (origin
4497 (method url-fetch)
4498 (uri (pypi-uri "scipy" version))
4499 (sha256
4500 (base32
4501 "1rl411bvla6q7qfdb47fpdnyjhfgzl6smpha33n9ar1klykjr6m1"))))
4502 (build-system python-build-system)
4503 (propagated-inputs
4504 `(("python-numpy" ,python-numpy)
4505 ("python-matplotlib" ,python-matplotlib)
4506 ("python-pyparsing" ,python-pyparsing)))
4507 (inputs
4508 `(("lapack" ,lapack)
4509 ("openblas" ,openblas)))
4510 (native-inputs
4511 `(("python-cython" ,python-cython)
4512 ("python-nose" ,python-nose)
4513 ("python-sphinx" ,python-sphinx)
4514 ("python-numpydoc" ,python-numpydoc)
4515 ("gfortran" ,gfortran)
4516 ("perl" ,perl)))
4517 (outputs '("out" "doc"))
4518 (arguments
4519 `(#:phases
4520 (modify-phases %standard-phases
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]
4527libraries = openblas
4528library_dirs = ~a/lib
4529include_dirs = ~a/include
4530
4531# backslash-n to make emacs happy
4532\n[atlas]
4533library_dirs = ~a/lib
4534atlas_libs = openblas
4535"
4536 (assoc-ref inputs "openblas")
4537 (assoc-ref inputs "openblas")
4538 (assoc-ref inputs "openblas"))))
4539 #t))
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)
4573 (add-installed-pythonpath inputs outputs)
4574 (with-directory-excursion "/tmp"
4575 (zero? (system* "python" "-c"
4576 "import scipy; scipy.test('full')")))
4577 #t)))))
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.")
4583 (properties `((python2-variant . ,(delay python2-scipy))))
4584 (license license:bsd-3)))
4585
4586(define-public python2-scipy
4587 (package-with-python2
4588 (strip-python2-variant python-scipy)))
4589
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
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
4650(define-public python-sqlalchemy
4651 (package
4652 (name "python-sqlalchemy")
4653 (version "1.0.12")
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
4661 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
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.")
4680 (license license:x11)))
4681
4682(define-public python2-sqlalchemy
4683 (package-with-python2 python-sqlalchemy))
4684
4685(define-public python-pycodestyle
4686 (package
4687 (name "python-pycodestyle")
4688 (version "2.3.1")
4689 (source
4690 (origin
4691 (method url-fetch)
4692 (uri (pypi-uri "pycodestyle" version))
4693 (sha256
4694 (base32
4695 "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"))))
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}.")
4702 (license license:expat)))
4703
4704(define-public python2-pycodestyle
4705 (package-with-python2 python-pycodestyle))
4706
4707(define-public python-orderedmultidict
4708 (package
4709 (name "python-orderedmultidict")
4710 (version "0.7.11")
4711 (source
4712 (origin
4713 (method url-fetch)
4714 (uri (pypi-uri "orderedmultidict" version))
4715 (sha256
4716 (base32
4717 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
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.")
4738 (license license:unlicense)))
4739
4740(define-public python2-orderedmultidict
4741 (package-with-python2 python-orderedmultidict))
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.")
4764 (license license:unlicense)))
4765
4766(define-public python2-furl
4767 (package-with-python2 python-furl))
4768
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
4791those tests or marking them to @code{@@skip}, they can be automatically
4792retried.")
4793 (license license:asl2.0)))
4794
4795(define-public python2-flaky
4796 (package-with-python2 python-flaky))
4797
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.")
4820 (license license:bsd-3)))
4821
4822(define-public python2-flask-babel
4823 (package-with-python2 python-flask-babel))
4824
4825(define-public python-sqlalchemy-utils
4826 (package
4827 (name "python-sqlalchemy-utils")
4828 (version "0.32.13")
4829 (source
4830 (origin
4831 (method url-fetch)
4832 (uri (pypi-uri "SQLAlchemy-Utils" version))
4833 (sha256
4834 (base32
4835 "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
4836 (build-system python-build-system)
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")))))
4844 (propagated-inputs
4845 `(("python-six" ,python-six)
4846 ("python-sqlalchemy" ,python-sqlalchemy)))
4847 (native-inputs
4848 `(("python-dateutil" ,python-dateutil)
4849 ("python-flexmock" ,python-flexmock)
4850 ("python-psycopg2" ,python-psycopg2)
4851 ("python-pytest" ,python-pytest)
4852 ("python-pytz" ,python-pytz)))
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
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")
4870 (license license:bsd-3)))
4871
4872(define-public python2-sqlalchemy-utils
4873 (package-with-python2 python-sqlalchemy-utils))
4874
4875(define-public python-alembic
4876 (package
4877 (name "python-alembic")
4878 (version "0.8.10")
4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (pypi-uri "alembic" version))
4883 (sha256
4884 (base32
4885 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
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.")
4900 (license license:expat)))
4901
4902(define-public python2-alembic
4903 (package-with-python2 python-alembic))
4904
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
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)
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.")
4953 (license license:gpl2)))
4954
4955(define-public python2-distutils-extra
4956 (package-with-python2 python-distutils-extra))
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)
4974 (arguments
4975 ;; incompatible with Python 3 (exception syntax)
4976 `(#:python ,python-2
4977 #:tests? #f))
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.")
4983 (license license:lgpl3+)))
4984
4985(define-public python-pillow
4986 (package
4987 (name "python-pillow")
4988 (version "3.3.3")
4989 (source
4990 (origin
4991 (method url-fetch)
4992 (uri (pypi-uri "Pillow" version))
4993 (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
4994 (sha256
4995 (base32
4996 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
4997 (build-system python-build-system)
4998 (native-inputs
4999 `(("python-nose" ,python-nose)))
5000 (inputs
5001 `(("freetype" ,freetype)
5002 ("lcms" ,lcms)
5003 ("zlib" ,zlib)
5004 ("libjpeg" ,libjpeg)
5005 ("openjpeg" ,openjpeg)
5006 ("libtiff" ,libtiff)
5007 ("libwebp" ,libwebp)))
5008 (arguments
5009 `(#:phases (modify-phases %standard-phases
5010 (add-after
5011 'install 'check-installed
5012 (lambda* (#:key outputs inputs #:allow-other-keys)
5013 (begin
5014 (setenv "HOME" (getcwd))
5015 ;; Make installed package available for running the
5016 ;; tests
5017 (add-installed-pythonpath inputs outputs)
5018 (and (zero? (system* "python" "selftest.py"
5019 "--installed"))
5020 (zero? (system* "python" "test-installed.py"))))))
5021 (delete 'check))))
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.")
5031 (license (license:x11-style
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))
5037
5038(define-public python-pycparser
5039 (package
5040 (name "python-pycparser")
5041 (version "2.17")
5042 (source
5043 (origin
5044 (method url-fetch)
5045 (uri (pypi-uri "pycparser" version))
5046 (sha256
5047 (base32
5048 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
5049 (outputs '("out" "doc"))
5050 (build-system python-build-system)
5051 (native-inputs
5052 `(("pkg-config" ,pkg-config)))
5053 (arguments
5054 `(#:phases
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)))))))
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.")
5077 (license license:bsd-3)))
5078
5079(define-public python2-pycparser
5080 (package-with-python2 python-pycparser))
5081
5082(define-public python-cffi
5083 (package
5084 (name "python-cffi")
5085 (version "1.10.0")
5086 (source
5087 (origin
5088 (method url-fetch)
5089 (uri (pypi-uri "cffi" version))
5090 (sha256
5091 (base32 "1mffyilq4qycm8gs4wkgb18rnqil8a9blqq77chdlshzxc8jkc5k"))))
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)
5101 ("python-pytest" ,python-pytest)))
5102 (arguments
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." <>)))))
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/"))))
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))))))
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.")
5143 (license license:expat)))
5144
5145(define-public python2-cffi
5146 (package-with-python2 python-cffi))
5147
5148(define-public python-xcffib
5149 (package
5150 (name "python-xcffib")
5151 (version "0.5.1")
5152 (source
5153 (origin
5154 (method url-fetch)
5155 (uri (pypi-uri "xcffib" version))
5156 (sha256
5157 (base32
5158 "09gbnmr5vn58mm8xi3fmd7fz6743cks6c46dphnxzwax6zsxmy60"))))
5159 (build-system python-build-system)
5160 (inputs
5161 `(("libxcb" ,libxcb)))
5162 (propagated-inputs
5163 `(("python-cffi" ,python-cffi) ; used at run time
5164 ("python-six" ,python-six)))
5165 (arguments
5166 `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
5167 #:tests? #f
5168 #:phases
5169 (modify-phases %standard-phases
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)))
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))))))
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.")
5189 (license license:expat)))
5190
5191(define-public python2-xcffib
5192 (package-with-python2 python-xcffib))
5193
5194(define-public python-cairocffi
5195 (package
5196 (name "python-cairocffi")
5197 (version "0.8.0")
5198 (source
5199 (origin
5200 (method url-fetch)
5201 ;; The archive on pypi is missing the 'utils' directory!
5202 (uri (string-append "https://github.com/Kozea/cairocffi/archive/v"
5203 version ".tar.gz"))
5204 (file-name (string-append name "-" version ".tar.gz"))
5205 (sha256
5206 (base32
5207 "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
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)
5216 ("python-docutils" ,python-docutils)))
5217 (propagated-inputs
5218 `(("python-xcffib" ,python-xcffib))) ; used at run time
5219 (arguments
5220 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
5221 #:tests? #f
5222 #:phases
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))))))
5241 (home-page "https://github.com/Kozea/cairocffi")
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.")
5248 (license license:bsd-3)))
5249
5250(define-public python2-cairocffi
5251 (package-with-python2 python-cairocffi))
5252
5253(define-public python-decorator
5254 (package
5255 (name "python-decorator")
5256 (version "4.0.10")
5257 (source
5258 (origin
5259 (method url-fetch)
5260 (uri (pypi-uri "decorator" version))
5261 (sha256
5262 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
5263 (build-system python-build-system)
5264 (arguments '(#:tests? #f)) ; no test target
5265 (home-page "https://pypi.python.org/pypi/decorator/")
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
5277(define-public python-drmaa
5278 (package
5279 (name "python-drmaa")
5280 (version "0.7.7")
5281 (source
5282 (origin
5283 (method url-fetch)
5284 (uri (pypi-uri "drmaa" version))
5285 (sha256
5286 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
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
5293 `(("python-nose" ,python-nose)))
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.")
5300 (license license:bsd-3)))
5301
5302(define-public python2-drmaa
5303 (package-with-python2 python-drmaa))
5304
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
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)
5347 (arguments
5348 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
5349 (propagated-inputs
5350 `(("python-psutil" ,python-psutil)
5351 ("python-drmaa" ,python-drmaa)
5352 ("python-pyzmq" ,python-pyzmq)))
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.")
5359 (license license:gpl3+)))
5360
5361(define-public python2-gridmap
5362 (package-with-python2 python-gridmap))
5363
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
5411(define-public python-pexpect
5412 (package
5413 (name "python-pexpect")
5414 (version "4.2.1")
5415 (source
5416 (origin
5417 (method url-fetch)
5418 (uri (pypi-uri "pexpect" version))
5419 (sha256
5420 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
5421 (build-system python-build-system)
5422 (arguments
5423 `(#:phases
5424 (modify-phases %standard-phases
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))
5439 (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
5440 (native-inputs
5441 `(("python-nose" ,python-nose)
5442 ("python-pytest" ,python-pytest-3.0)
5443 ("man-db" ,man-db)
5444 ("which" ,which)
5445 ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
5446 (propagated-inputs
5447 `(("python-ptyprocess" ,python-ptyprocess)))
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.")
5455 (license license:isc)))
5456
5457(define-public python2-pexpect
5458 (package-with-python2 python-pexpect))
5459
5460(define-public python-setuptools-scm
5461 (package
5462 (name "python-setuptools-scm")
5463 (version "1.15.0")
5464 (source (origin
5465 (method url-fetch)
5466 (uri (pypi-uri "setuptools_scm" version))
5467 (sha256
5468 (base32
5469 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
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
5474 "Setuptools_scm handles managing your Python package versions in
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
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"))))
5493 (outputs '("out" "doc"))
5494 (build-system python-build-system)
5495 (propagated-inputs
5496 `(("python-appdirs" ,python-appdirs)))
5497 (native-inputs
5498 `(("python-setuptools-scm" ,python-setuptools-scm)
5499 ("python-sphinx" ,python-sphinx)
5500 ("python-rst.linker" ,python-rst.linker)
5501 ("python-pytest" ,python-pytest)
5502 ("python-pytest-runner" ,python-pytest-runner)))
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)))))))
5520 (home-page "https://github.com/jaraco/path.py")
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
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
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
5572 `(("unzip" ,unzip)))
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.")
5582 (license license:zpl2.1)))
5583
5584(define-public python2-simplegeneric
5585 (package-with-python2 python-simplegeneric))
5586
5587(define-public python-ipython-genutils
5588 ;; TODO: This package is retired, check if can be removed, see description.
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
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.")
5612 (license license:bsd-3)))
5613
5614(define-public python2-ipython-genutils
5615 (package-with-python2 python-ipython-genutils))
5616
5617(define-public python-traitlets
5618 (package
5619 (name "python-traitlets")
5620 (version "4.2.0")
5621 (source
5622 (origin
5623 (method url-fetch)
5624 (uri (pypi-uri "traitlets" version))
5625 (sha256
5626 (base32
5627 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
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
5637 `(("python-mock" ,python-mock)
5638 ("python-nose" ,python-nose)))
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.")
5648 (license license:bsd-3)))
5649
5650(define-public python2-traitlets
5651 (package-with-python2 python-traitlets))
5652
5653(define-public python-jupyter-core
5654 (package
5655 (name "python-jupyter-core")
5656 (version "4.2.1")
5657 (source
5658 (origin
5659 (method url-fetch)
5660 (uri (string-append (pypi-uri "jupyter_core" version)))
5661 (sha256
5662 (base32
5663 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
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
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
5710(define-public python-ipykernel
5711 (package
5712 (name "python-ipykernel")
5713 (version "4.5.2")
5714 (source
5715 (origin
5716 (method url-fetch)
5717 (uri (pypi-uri "ipykernel" version))
5718 (sha256
5719 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
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
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
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))
5757 #:phases
5758 (modify-phases %standard-phases
5759 (delete 'install)
5760 (replace 'build
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)))))
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
5783(define-public python-ipython
5784 (package
5785 (name "python-ipython")
5786 (version "5.2.2")
5787 (source
5788 (origin
5789 (method url-fetch)
5790 (uri (pypi-uri "ipython" version ".tar.gz"))
5791 (sha256
5792 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
5793 (build-system python-build-system)
5794 (outputs '("out" "doc"))
5795 (propagated-inputs
5796 `(("python-pyzmq" ,python-pyzmq)
5797 ("python-prompt-toolkit" ,python-prompt-toolkit)
5798 ("python-terminado" ,python-terminado)
5799 ("python-matplotlib" ,python-matplotlib)
5800 ("python-numpy" ,python-numpy)
5801 ("python-numpydoc" ,python-numpydoc)
5802 ("python-jinja2" ,python-jinja2)
5803 ("python-mistune" ,python-mistune)
5804 ("python-pexpect" ,python-pexpect)
5805 ("python-pickleshare" ,python-pickleshare)
5806 ("python-simplegeneric" ,python-simplegeneric)
5807 ("python-jsonschema" ,python-jsonschema)
5808 ("python-traitlets" ,python-traitlets)
5809 ("python-ipykernel" ,python-ipykernel)
5810 ("python-nbformat" ,python-nbformat)
5811 ("python-pygments" ,python-pygments)))
5812 (inputs
5813 `(("readline" ,readline)
5814 ("which" ,which)))
5815 (native-inputs
5816 `(("graphviz" ,graphviz)
5817 ("pkg-config" ,pkg-config)
5818 ("python-requests" ,python-requests) ;; for tests
5819 ("python-testpath" ,python-testpath)
5820 ("python-nose" ,python-nose)
5821 ("python-sphinx" ,python-sphinx)
5822 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
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)))
5857 ("texinfo" ,texinfo)))
5858 (arguments
5859 `(#:phases
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"))
5869 (examples (string-append doc "/examples"))
5870 (python-arg (string-append "PYTHON=" (which "python"))))
5871 (setenv "LANG" "en_US.utf8")
5872 ;; Make installed package available for running the tests
5873 (add-installed-pythonpath inputs outputs)
5874 (with-directory-excursion "docs"
5875 ;; FIXME: pdf fails to build
5876 ;;(system* "make" "pdf" "PAPER=a4")
5877 (system* "make" python-arg "html")
5878 (system* "make" python-arg "info"))
5879 (copy-recursively "docs/man" man1)
5880 (copy-recursively "examples" examples)
5881 (copy-recursively "docs/build/html" html)
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
5893 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5894 (if tests?
5895 (with-directory-excursion "/tmp"
5896 ;; Make installed package available for running the tests
5897 (add-installed-pythonpath inputs outputs)
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))))))))
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.")
5921 (license license:bsd-3)
5922 (properties `((python2-variant . ,(delay python2-ipython))))))
5923
5924(define-public python2-ipython
5925 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
5926 (package
5927 (inherit ipython)
5928 ;; FIXME: add pyreadline once available.
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)))
5934 (native-inputs
5935 `(("python2-mock" ,python2-mock)
5936 ,@(package-native-inputs ipython))))))
5937
5938(define-public python-isodate
5939 (package
5940 (name "python-isodate")
5941 (version "0.5.4")
5942 (source
5943 (origin
5944 (method url-fetch)
5945 (uri (pypi-uri "isodate" version))
5946 (sha256
5947 (base32
5948 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
5949 (build-system python-build-system)
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.")
5957 (license license:bsd-3)))
5958
5959(define-public python2-isodate
5960 (package-with-python2 python-isodate))
5961
5962(define-public python-html5lib
5963 (package
5964 (name "python-html5lib")
5965 (version "1.0b10")
5966 (source
5967 (origin
5968 (method url-fetch)
5969 (uri (pypi-uri "html5lib" version))
5970 (sha256
5971 (base32
5972 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
5973 (build-system python-build-system)
5974 (propagated-inputs
5975 `(("python-six" ,python-six)
5976 ("python-webencodings" ,python-webencodings)))
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.")
5986 (license license:expat)))
5987
5988(define-public python2-html5lib
5989 (package-with-python2 python-html5lib))
5990
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
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
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
6078(define-public python-urwid
6079 (package
6080 (name "python-urwid")
6081 (version "1.3.1")
6082 (source
6083 (origin
6084 (method url-fetch)
6085 (uri (pypi-uri "urwid" version))
6086 (sha256
6087 (base32
6088 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
6089 (build-system python-build-system)
6090 (arguments
6091 `(#:phases
6092 (modify-phases %standard-phases
6093 ;; Disable failing test. Bug filed upstream:
6094 ;; https://github.com/wardi/urwid/issues/164
6095 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
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")))))))
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.")
6106 (license license:lgpl2.1+)))
6107
6108(define-public python2-urwid
6109 (let ((python2-urwid (package-with-python2 python-urwid)))
6110 (package
6111 (inherit python2-urwid)
6112 (arguments
6113 (append
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
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))))))
6125
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)
6138 (arguments
6139 `(#:phases
6140 (modify-phases %standard-phases
6141 (replace 'check
6142 (lambda _
6143 (zero? (system* "./admin/runtests")))))))
6144 (properties `((python2-variant . ,(delay python2-openid))))
6145 (propagated-inputs
6146 `(("python-defusedxml" ,python-defusedxml)))
6147 (native-inputs
6148 `(("python-psycopg2" ,python-psycopg2)
6149 ("python-django" ,python-django)))
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
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
6177(define-public python-urwidtrees
6178 (package
6179 (name "python-urwidtrees")
6180 (version "1.0.2")
6181 (source
6182 (origin
6183 (method url-fetch)
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"))
6189 (sha256
6190 (base32
6191 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
6192 (build-system python-build-system)
6193 (arguments
6194 '(#:tests? #f)) ; no tests
6195 (propagated-inputs `(("python-urwid" ,python-urwid)))
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.")
6200 (license license:gpl3+)))
6201
6202(define-public python2-urwidtrees
6203 (package-with-python2 python-urwidtrees))
6204
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
6213 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
6214 version ".tar.gz"))
6215 (sha256
6216 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
6217 (build-system gnu-build-system)
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)))))
6229 (native-inputs
6230 `(("pkg-config" ,pkg-config)))
6231 (inputs
6232 `(("python" ,python)
6233 ("dbus-glib" ,dbus-glib)))
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/")
6238 (license license:expat)))
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))))
6250
6251(define-public python-apsw
6252 (package
6253 (name "python-apsw")
6254 (version "3.9.2-r1")
6255 (source
6256 (origin
6257 (method url-fetch)
6258 (uri (pypi-uri "apsw" version))
6259 (sha256
6260 (base32
6261 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
6262 (build-system python-build-system)
6263 (inputs
6264 `(("sqlite" ,sqlite)))
6265 (arguments
6266 `(#:phases
6267 (modify-phases %standard-phases
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") ))))
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")))))))
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.")
6289 (license license:zlib)))
6290
6291(define-public python2-apsw
6292 (package-with-python2 python-apsw))
6293
6294(define-public python-lxml
6295 (package
6296 (name "python-lxml")
6297 (version "3.8.0")
6298 (source
6299 (origin
6300 (method url-fetch)
6301 (uri (pypi-uri "lxml" version))
6302 (sha256
6303 (base32
6304 "15nvf6n285n282682qyw3wihsncb0x5amdhyi4b83bfa2nz74vvk"))))
6305 (build-system python-build-system)
6306 (inputs
6307 `(("libxml2" ,libxml2)
6308 ("libxslt" ,libxslt)))
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.")
6315 (license license:bsd-3))) ; and a few more, see LICENSES.txt
6316
6317(define-public python2-lxml
6318 (package-with-python2 python-lxml))
6319
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")
6325 (version "4.5.3")
6326 (source
6327 (origin
6328 (method url-fetch)
6329 (uri (pypi-uri "beautifulsoup4" version))
6330 (sha256
6331 (base32
6332 "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"))))
6333 (build-system python-build-system)
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")))))))
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.")
6354 (license license:expat)
6355 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
6356
6357(define-public python2-beautifulsoup4
6358 (package
6359 (inherit (package-with-python2
6360 (strip-python2-variant python-beautifulsoup4)))
6361 (arguments `(#:python ,python-2))))
6362
6363(define-public python-cssutils
6364 (package
6365 (name "python-cssutils")
6366 (version "1.0.1")
6367 (source
6368 (origin
6369 (method url-fetch)
6370 (uri (pypi-uri "cssutils" version))
6371 (sha256
6372 (base32
6373 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
6374 (build-system python-build-system)
6375 (native-inputs
6376 `(("unzip" ,unzip))) ; for unpacking the source
6377 (arguments
6378 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
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.")
6386 (license license:lgpl3+)))
6387
6388(define-public python2-cssutils
6389 (package-with-python2 python-cssutils))
6390
6391(define-public python-cssselect
6392 (package
6393 (name "python-cssselect")
6394 (version "0.9.2")
6395 (source
6396 (origin
6397 (method url-fetch)
6398 (uri (pypi-uri "cssselect" version))
6399 (sha256
6400 (base32
6401 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
6402 (build-system python-build-system)
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.")
6415 (license license:bsd-3)))
6416
6417(define-public python2-cssselect
6418 (package-with-python2 python-cssselect))
6419
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)
6432 (arguments '(#:tests? #f)) ; No tests.
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
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)
6454 (arguments '(#:tests? #f)) ; No tests.
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
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)
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))
6491
6492(define-public python-networkx
6493 (package
6494 (name "python-networkx")
6495 (version "1.11")
6496 (source
6497 (origin
6498 (method url-fetch)
6499 (uri (pypi-uri "networkx" version))
6500 (sha256
6501 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
6502 (build-system python-build-system)
6503 ;; python-decorator is needed at runtime
6504 (propagated-inputs
6505 `(("python-decorator" ,python-decorator)))
6506 (native-inputs
6507 `(("python-nose" ,python-nose)))
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.")
6513 (license license:bsd-3)))
6514
6515(define-public python2-networkx
6516 (package-with-python2 python-networkx))
6517
6518(define-public snakemake
6519 (package
6520 (name "snakemake")
6521 (version "3.13.3")
6522 (source
6523 (origin
6524 (method url-fetch)
6525 (uri (pypi-uri "snakemake" version))
6526 (sha256
6527 (base32 "1nixb944r4hlskwkzc4wjs34b40xpxpw9gmhhm5p09gvmm22ap5d"))))
6528 (build-system python-build-system)
6529 (arguments
6530 ;; TODO: Package missing test dependencies.
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)))))
6544 (propagated-inputs
6545 `(("python-wrapt" ,python-wrapt)
6546 ("python-requests" ,python-requests)))
6547 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
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)))
6554
6555(define-public python-seaborn
6556 (package
6557 (name "python-seaborn")
6558 (version "0.7.1")
6559 (source
6560 (origin
6561 (method url-fetch)
6562 (uri (pypi-uri "seaborn" version))
6563 (sha256
6564 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
6565 (build-system python-build-system)
6566 (arguments
6567 '(#:tests? #f)) ; Tests requires a running X11 server.
6568 (propagated-inputs
6569 `(("python-pandas" ,python-pandas)
6570 ("python-matplotlib" ,python-matplotlib)
6571 ("python-scipy" ,python-scipy)))
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.")
6579 (license license:bsd-3)
6580 (properties `((python2-variant . ,(delay python2-seaborn))))))
6581
6582(define-public python2-seaborn
6583 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
6584 (package
6585 (inherit base)
6586 (propagated-inputs `(("python2-pytz" ,python2-pytz)
6587 ,@(package-propagated-inputs base))))))
6588
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))
6618
6619(define-public python-sympy
6620 (package
6621 (name "python-sympy")
6622 (version "1.0")
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
6630 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
6631 (build-system python-build-system)
6632 (propagated-inputs
6633 `(("python-mpmath" ,python-mpmath)))
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.")
6640 (license license:bsd-3)))
6641
6642(define-public python2-sympy
6643 (package-with-python2 python-sympy))
6644
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.")
6663 (license license:asl2.0)))
6664
6665(define-public python2-q
6666 (package-with-python2 python-q))
6667
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)
6681 (native-inputs
6682 `(("unzip" ,unzip))) ; for unpacking the source
6683 (synopsis "Python micro test suite harness")
6684 (description "A micro unittest suite harness for Python.")
6685 (home-page "https://github.com/trentm/testlib")
6686 (license license:expat)))
6687
6688(define-public python2-testlib
6689 (package-with-python2 python-testlib))
6690
6691(define-public python2-xlib
6692 (package
6693 (name "python2-xlib")
6694 (version "0.14")
6695 (source (origin
6696 (method url-fetch)
6697 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6698 "/" version "/"
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
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.")
6713 (license license:gpl2+)))
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)
6722 (uri (pypi-uri "singledispatch" version))
6723 (sha256
6724 (base32
6725 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6726 (build-system python-build-system)
6727 (native-inputs
6728 `(("python-six" ,python-six))) ; required for conversion, not at run-time
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))
6739
6740(define-public python-tornado
6741 (package
6742 (name "python-tornado")
6743 (version "4.5.1")
6744 (source
6745 (origin
6746 (method url-fetch)
6747 (uri (pypi-uri "tornado" version))
6748 (sha256
6749 (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
6750 (build-system python-build-system)
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))
6762 (native-inputs
6763 `(("python-certifi" ,python-certifi)))
6764 (propagated-inputs
6765 `(("python-backports-abc" ,python-backports-abc)))
6766 (home-page "http://www.tornadoweb.org/")
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.")
6774 (license license:asl2.0)
6775 (properties `((python2-variant . ,(delay python2-tornado))))))
6776
6777(define-public python2-tornado
6778 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
6779 (package (inherit tornado)
6780 (propagated-inputs
6781 `(("python2-backport-ssl-match-hostname"
6782 ,python2-backport-ssl-match-hostname)
6783 ("python2-singledispatch" ,python2-singledispatch)
6784 ,@(package-propagated-inputs tornado))))))
6785
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
6809;; the python- version can be removed with python-3.5
6810(define-public python-backports-abc
6811 (package
6812 (name "python-backports-abc")
6813 (version "0.5")
6814 (source
6815 (origin
6816 (method url-fetch)
6817 (uri (pypi-uri "backports_abc" version))
6818 (sha256
6819 (base32
6820 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6821 (build-system python-build-system)
6822 (home-page "https://github.com/cython/backports_abc")
6823 (synopsis "Backport of additions to the 'collections.abc' module")
6824 (description
6825 "Python-backports-abc provides a backport of additions to the
6826'collections.abc' module in Python-3.5.")
6827 (license license:psfl)))
6828
6829(define-public python2-backports-abc
6830 (package-with-python2 python-backports-abc))
6831
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
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
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)))
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
6887(define-public python-waf
6888 (package
6889 (name "python-waf")
6890 (version "1.9.8")
6891 (source (origin
6892 (method url-fetch)
6893 (uri (string-append "https://waf.io/"
6894 "waf-" version ".tar.bz2"))
6895 (sha256
6896 (base32
6897 "0wl4cnmp06lfxqjxaan58bqxn27smhydz0sg5prrfbl3bsw4gv6q"))))
6898 (build-system python-build-system)
6899 (arguments
6900 '(#:phases
6901 (modify-phases %standard-phases
6902 (replace 'build
6903 (lambda _
6904 (zero? (system* "python" "waf-light" "configure" "build"))))
6905 (replace 'check
6906 (lambda _
6907 (zero? (system* "python" "waf" "--version"))))
6908 (replace 'install
6909 (lambda _
6910 (copy-file "waf" %output))))))
6911 (home-page "https://waf.io/")
6912 (synopsis "Python-based build system")
6913 (description
6914 "Waf is a Python-based framework for configuring, compiling and installing
6915applications.")
6916 (license license:bsd-3)))
6917
6918(define-public python2-waf
6919 (package-with-python2 python-waf))
6920
6921(define-public python-pyzmq
6922 (package
6923 (name "python-pyzmq")
6924 (version "15.1.0")
6925 (source
6926 (origin
6927 (method url-fetch)
6928 (uri (pypi-uri "pyzmq" version))
6929 (sha256
6930 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
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)
6942 ("python-nose" ,python-nose)))
6943 (home-page "https://github.com/zeromq/pyzmq")
6944 (synopsis "Python bindings for 0MQ")
6945 (description
6946 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
6947 (license license:bsd-4)))
6948
6949(define-public python2-pyzmq
6950 (package-with-python2 python-pyzmq))
6951
6952(define-public python-pep8
6953 (package
6954 (name "python-pep8")
6955 (version "1.7.0")
6956 (source
6957 (origin
6958 (method url-fetch)
6959 (uri (pypi-uri "pep8" version))
6960 (sha256
6961 (base32
6962 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
6963 (build-system python-build-system)
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))
6973
6974(define-public python-pyflakes
6975 (package
6976 (name "python-pyflakes")
6977 (version "1.0.0")
6978 (source
6979 (origin
6980 (method url-fetch)
6981 (uri (pypi-uri "pyflakes" version))
6982 (sha256
6983 (base32
6984 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
6985 (build-system python-build-system)
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)))
6992
6993(define-public python2-pyflakes
6994 (package-with-python2 python-pyflakes))
6995
6996(define-public python-mccabe
6997 (package
6998 (name "python-mccabe")
6999 (version "0.4.0")
7000 (source
7001 (origin
7002 (method url-fetch)
7003 (uri (pypi-uri "mccabe" version))
7004 (sha256
7005 (base32
7006 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
7007 (build-system python-build-system)
7008 (native-inputs
7009 `(("python-pytest" ,python-pytest)
7010 ("python-pytest-runner" ,python-pytest-runner)))
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.")
7016 (license license:expat)))
7017
7018(define-public python2-mccabe
7019 (package-with-python2 python-mccabe))
7020
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
7030 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7031
7032(define-public python2-mccabe-0.2.1
7033 (package-with-python2 python-mccabe-0.2.1))
7034
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
7049 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
7050 (arguments
7051 ;; XXX Tests not compatible with Python 3.5.
7052 '(#:tests? #f))))
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
7071 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
7072 (arguments
7073 ;; XXX Tests not compatible with Python 3.5.
7074 '(#:tests? #f))))
7075
7076(define-public python2-pyflakes-0.8.1
7077 (package-with-python2 python-pyflakes-0.8.1))
7078
7079(define-public python-flake8
7080 (package
7081 (name "python-flake8")
7082 (version "2.5.4")
7083 (source
7084 (origin
7085 (method url-fetch)
7086 (uri (pypi-uri "flake8" version))
7087 (sha256
7088 (base32
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))))
7098 (build-system python-build-system)
7099 (propagated-inputs
7100 `(("python-pep8" ,python-pep8)
7101 ("python-pyflakes" ,python-pyflakes)
7102 ("python-mccabe" ,python-mccabe)))
7103 (native-inputs
7104 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
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))
7115
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)
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)))
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
7152(define-public python-mistune
7153 (package
7154 (name "python-mistune")
7155 (version "0.7.3")
7156 (source
7157 (origin
7158 (method url-fetch)
7159 (uri (pypi-uri "mistune" version))
7160 (sha256
7161 (base32
7162 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
7163 (build-system python-build-system)
7164 (native-inputs
7165 `(("python-nose" ,python-nose)
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.")
7171 (license license:bsd-3)))
7172
7173(define-public python2-mistune
7174 (package-with-python2 python-mistune))
7175
7176(define-public python-markdown
7177 (package
7178 (name "python-markdown")
7179 (version "2.6.8")
7180 (source
7181 (origin
7182 (method url-fetch)
7183 (uri (pypi-uri "Markdown" version))
7184 (sha256
7185 (base32
7186 "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a"))))
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.")
7204 (license license:bsd-3)))
7205
7206(define-public python2-markdown
7207 (package-with-python2 python-markdown))
7208
7209(define-public python-ptyprocess
7210 (package
7211 (name "python-ptyprocess")
7212 (version "0.5.1")
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
7221 "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
7222 (build-system python-build-system)
7223 (native-inputs
7224 `(("python-nose" ,python-nose)))
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.")
7236 (license license:isc)))
7237
7238(define-public python2-ptyprocess
7239 (package-with-python2 python-ptyprocess))
7240
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
7300(define-public python-terminado
7301 (package
7302 (name "python-terminado")
7303 (version "0.6")
7304 (source
7305 (origin
7306 (method url-fetch)
7307 (uri (pypi-uri "terminado" version))
7308 (sha256
7309 (base32
7310 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
7311 (build-system python-build-system)
7312 (propagated-inputs
7313 `(("python-tornado" ,python-tornado)
7314 ("python-ptyprocess" ,python-ptyprocess)))
7315 (native-inputs
7316 `(("python-nose" ,python-nose)))
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.")
7327 (license license:bsd-2)
7328 (properties `((python2-variant . ,(delay python2-terminado))))))
7329
7330(define-public python2-terminado
7331 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
7332 (package (inherit terminado)
7333 (propagated-inputs
7334 `(("python2-backport-ssl-match-hostname"
7335 ,python2-backport-ssl-match-hostname)
7336 ,@(package-propagated-inputs terminado))))))
7337
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
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)
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)))))
7385 (home-page "https://github.com/behdad/fonttools")
7386 (synopsis "Tools to manipulate font files")
7387 (description
7388 "FontTools/TTX is a library to manipulate font files from Python. It
7389supports reading and writing of TrueType/OpenType fonts, reading and writing
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.")
7393 (license (license:non-copyleft
7394 "file://LICENSE.txt"
7395 "See LICENSE.txt in the distribution."))))
7396
7397(define-public python2-fonttools
7398 (package-with-python2 python-fonttools))
7399
7400(define-public python-ly
7401 (package
7402 (name "python-ly")
7403 (version "0.9.4")
7404 (source
7405 (origin
7406 (method url-fetch)
7407 (uri (string-append "https://pypi.python.org/packages/57/4f/"
7408 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
7409 "/python-ly-" version ".tar.gz"))
7410 (sha256
7411 (base32
7412 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
7413 (build-system python-build-system)
7414 (arguments
7415 ;; FIXME: Some tests need network access.
7416 '(#:tests? #f))
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")
7422 (license license:gpl2+)))
7423
7424(define-public python-appdirs
7425 (package
7426 (name "python-appdirs")
7427 (version "1.4.3")
7428 (source
7429 (origin
7430 (method url-fetch)
7431 (uri (pypi-uri "appdirs" version))
7432 (sha256
7433 (base32
7434 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
7435 (build-system python-build-system)
7436 (home-page "https://github.com/ActiveState/appdirs")
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))
7446
7447(define-public python-llfuse
7448 (package
7449 (name "python-llfuse")
7450 (version "1.2")
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
7458 "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4"))))
7459 (build-system python-build-system)
7460 (inputs
7461 `(("fuse" ,fuse)
7462 ("attr" ,attr)))
7463 (native-inputs
7464 `(("pkg-config" ,pkg-config)))
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/")
7469 (license license:lgpl2.0+)
7470 (properties `((python2-variant . ,(delay python2-llfuse))))))
7471
7472(define-public python2-llfuse
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)
7480 (version "0.41.1")
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
7488 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
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.
7491 (license (list license:expat license:lgpl2.0+))))
7492
7493(define-public python-msgpack
7494 (package
7495 (name "python-msgpack")
7496 (version "0.4.8")
7497 (source (origin
7498 (method url-fetch)
7499 (uri (pypi-uri "msgpack-python" version))
7500 (sha256
7501 (base32
7502 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
7503 (build-system python-build-system)
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/")
7509 (license license:asl2.0)))
7510
7511(define-public python2-msgpack
7512 (package-with-python2 python-msgpack))
7513
7514(define-public python-netaddr
7515 (package
7516 (name "python-netaddr")
7517 (version "0.7.19")
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
7527 "1zdfadvpq4lmcqzr383gywxn4xyn355kj1n3lk9q2l03vmyfrbiq"))))
7528 (build-system python-build-system)
7529 (arguments `(#:tests? #f)) ;; No tests.
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.")
7535 (license license:bsd-3)))
7536
7537(define-public python2-netaddr
7538 (package-with-python2 python-netaddr))
7539
7540(define-public python-wrapt
7541 (package
7542 (name "python-wrapt")
7543 (version "1.10.8")
7544 (source
7545 (origin
7546 (method url-fetch)
7547 (uri (pypi-uri "wrapt" version))
7548 (sha256
7549 (base32
7550 "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af"))))
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))
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.")
7562 (license license:bsd-2)))
7563
7564(define-public python2-wrapt
7565 (package-with-python2 python-wrapt))
7566
7567(define-public python-iso8601
7568 (package
7569 (name "python-iso8601")
7570 (version "0.1.11")
7571 (source
7572 (origin
7573 (method url-fetch)
7574 (uri (pypi-uri "iso8601" version))
7575 (sha256
7576 (base32
7577 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
7578 (build-system python-build-system)
7579 (native-inputs
7580 `(("python-pytest" ,python-pytest)))
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))
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)
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.")
7611 (license license:asl2.0)))
7612
7613(define-public python2-monotonic
7614 (package-with-python2 python-monotonic))
7615
7616(define-public python-webob
7617 (package
7618 (name "python-webob")
7619 (version "1.5.1")
7620 (source
7621 (origin
7622 (method url-fetch)
7623 (uri (pypi-uri "WebOb" version))
7624 (sha256
7625 (base32
7626 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
7627 (build-system python-build-system)
7628 (native-inputs
7629 `(("python-nose" ,python-nose)))
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))
7639
7640(define-public python-xlrd
7641 (package
7642 (name "python-xlrd")
7643 (version "1.0.0")
7644 (source (origin
7645 (method url-fetch)
7646 (uri (pypi-uri "xlrd" version))
7647 (sha256
7648 (base32
7649 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
7650 (build-system python-build-system)
7651 (arguments
7652 `(#:phases
7653 (modify-phases %standard-phases
7654 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
7655 ;; run tests instead for now.
7656 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
7657 (native-inputs `(("python-nose" ,python-nose)))
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
7661spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
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.")
7664 (license license:bsd-3)))
7665
7666(define-public python2-xlrd
7667 (package-with-python2 python-xlrd))
7668
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)
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.")
7690 (license license:bsd-3)))
7691
7692(define-public python2-prettytable
7693 (package-with-python2 python-prettytable))
7694
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
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))))
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
7744 `(("python-cython" ,python-cython)
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
7753designed to efficiently cope with extremely large amounts of data.")
7754 (license license:bsd-3)))
7755
7756(define-public python2-tables
7757 (package-with-python2 python-tables))
7758
7759(define-public python-pyasn1
7760 (package
7761 (name "python-pyasn1")
7762 (version "0.2.3")
7763 (source
7764 (origin
7765 (method url-fetch)
7766 (uri (pypi-uri "pyasn1" version))
7767 (sha256
7768 (base32
7769 "1b86yx23c1x74clai05a5ma8c8nfmhlx3j1mxq0ff657i2ylx33k"))))
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.")
7776 (license license:bsd-2)))
7777
7778(define-public python2-pyasn1
7779 (package-with-python2 python-pyasn1))
7780
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)
7793 (propagated-inputs
7794 `(("python-pyasn1" ,python-pyasn1)))
7795 (home-page "https://sourceforge.net/projects/pyasn1/")
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.")
7800 (license license:bsd-3)))
7801
7802(define-public python2-pyasn1-modules
7803 (package-with-python2 python-pyasn1-modules))
7804
7805(define-public python-ipaddress
7806 (package
7807 (name "python-ipaddress")
7808 (version "1.0.18")
7809 (source (origin
7810 (method url-fetch)
7811 (uri (pypi-uri "ipaddress" version))
7812 (sha256
7813 (base32
7814 "1q8klj9d84cmxgz66073x1j35cplr3r77vx1znhxiwl5w74391ax"))))
7815 (build-system python-build-system)
7816 (home-page "https://github.com/phihag/ipaddress")
7817 (synopsis "IP address manipulation library")
7818 (description
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.")
7823 (license license:psfl)))
7824
7825(define-public python2-ipaddress
7826 (package-with-python2 python-ipaddress))
7827
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.")
7855 (license license:asl2.0)))
7856
7857(define-public python-idna
7858 (package
7859 (name "python-idna")
7860 (version "2.5")
7861 (source
7862 (origin
7863 (method url-fetch)
7864 (uri (pypi-uri "idna" version))
7865 (sha256
7866 (base32
7867 "1ara12a7k2zc69msa0arrvw00gn61a6i6by01xb3lkkc0h4cxd9w"))))
7868 (build-system python-build-system)
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.")
7879 (license license:bsd-4)))
7880
7881(define-public python2-idna
7882 (package-with-python2 python-idna))
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)
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.")
7904 (license license:bsd-3)))
7905
7906(define-public python2-pretend
7907 (package-with-python2 python-pretend))
7908
7909(define-public python-cryptography-vectors
7910 (package
7911 (name "python-cryptography-vectors")
7912 (version "2.0.3")
7913 (source
7914 (origin
7915 (method url-fetch)
7916 (uri (pypi-uri "cryptography_vectors" version))
7917 (sha256
7918 (base32
7919 "1qa117fs1yd50zn2cfxh7d9l999ds0z4h83m9m7j4fk6ffm33f5y"))))
7920 (build-system python-build-system)
7921 (home-page "https://github.com/pyca/cryptography")
7922 (synopsis "Test vectors for the cryptography package")
7923 (description
7924 "This package contains test vectors for the cryptography package.")
7925 ;; Distributed under either BSD-3 or ASL2.0
7926 (license (list license:bsd-3 license:asl2.0))))
7927
7928(define-public python2-cryptography-vectors
7929 (package-with-python2 python-cryptography-vectors))
7930
7931(define-public python-cryptography
7932 (package
7933 (name "python-cryptography")
7934 (version "2.0.3")
7935 (source
7936 (origin
7937 (method url-fetch)
7938 (uri (pypi-uri "cryptography" version))
7939 (sha256
7940 (base32
7941 "0fnck37zyvbzmccbp7w3jy27jgmij1992j5wyy3gxhw6a11b4jyh"))))
7942 (build-system python-build-system)
7943 (inputs
7944 `(("openssl" ,openssl)))
7945 (propagated-inputs
7946 `(("python-asn1crypto" ,python-asn1crypto)
7947 ("python-cffi" ,python-cffi)
7948 ("python-six" ,python-six)
7949 ("python-idna" ,python-idna)
7950 ("python-iso8601" ,python-iso8601)))
7951 (native-inputs
7952 `(("python-cryptography-vectors" ,python-cryptography-vectors)
7953 ("python-hypothesis" ,python-hypothesis)
7954 ("python-pretend" ,python-pretend)
7955 ("python-pytz" ,python-pytz)
7956 ("python-pytest" ,python-pytest-3.0)))
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
7966 (license (list license:bsd-3 license:asl2.0))
7967 (properties `((python2-variant . ,(delay python2-cryptography))))))
7968
7969(define-public python2-cryptography
7970 (let ((crypto (package-with-python2
7971 (strip-python2-variant python-cryptography))))
7972 (package (inherit crypto)
7973 (propagated-inputs
7974 `(("python2-ipaddress" ,python2-ipaddress)
7975 ("python2-backport-ssl-match-hostname"
7976 ,python2-backport-ssl-match-hostname)
7977 ("python2-enum34" ,python2-enum34)
7978 ,@(package-propagated-inputs crypto))))))
7979
7980(define-public python-pyopenssl
7981 (package
7982 (name "python-pyopenssl")
7983 (version "17.2.0")
7984 (source
7985 (origin
7986 (method url-fetch)
7987 (uri (pypi-uri "pyOpenSSL" version))
7988 (sha256
7989 (base32
7990 "0d283g4zi0hr9papd24mjl70mi15gyzq6fx618rizi87dgipqqax"))))
7991 (build-system python-build-system)
7992 (arguments
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)
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"))))))))
8008 (propagated-inputs
8009 `(("python-cryptography" ,python-cryptography)
8010 ("python-six" ,python-six)))
8011 (inputs
8012 `(("openssl" ,openssl)))
8013 (native-inputs
8014 `(("python-flaky" ,python-flaky)
8015 ("python-pretend" ,python-pretend)
8016 ("python-pytest" ,python-pytest-3.0)))
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.")
8022 (license license:asl2.0)))
8023
8024(define-public python2-pyopenssl
8025 (package-with-python2 python-pyopenssl))
8026
8027(define-public python-pip
8028 (package
8029 (name "python-pip")
8030 (version "9.0.1")
8031 (source
8032 (origin
8033 (method url-fetch)
8034 (uri (pypi-uri "pip" version))
8035 (sha256
8036 (base32
8037 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
8038 (build-system python-build-system)
8039 (arguments
8040 '(#:tests? #f)) ; there are no tests in the pypi archive.
8041 (home-page "https://pip.pypa.io/")
8042 (synopsis "Package manager for Python software")
8043 (description
8044 "Pip is a package manager for Python software, that finds packages on the
8045Python Package Index (PyPI).")
8046 (license license:expat)))
8047
8048(define-public python2-pip
8049 (package-with-python2 python-pip))
8050
8051(define-public python-tlsh
8052 (package
8053 (name "python-tlsh")
8054 (version "3.4.4")
8055 (home-page "https://github.com/trendmicro/tlsh")
8056 (source (origin
8057 (method url-fetch)
8058 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
8059 version ".tar.gz"))
8060 (sha256
8061 (base32
8062 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
8063 (file-name (string-append name "-" version ".tar.gz"))))
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.")
8088 (license license:asl2.0)))
8089
8090(define-public python2-tlsh
8091 (package
8092 (inherit python-tlsh)
8093 (name "python2-tlsh")
8094 (inputs `(("python" ,python-2)))))
8095
8096(define-public python-termcolor
8097 (package
8098 (name "python-termcolor")
8099 (version "1.1.0")
8100 (source
8101 (origin
8102 (method url-fetch)
8103 (uri (pypi-uri "termcolor" version))
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
8120(define-public python-libarchive-c
8121 (package
8122 (name "python-libarchive-c")
8123 (version "2.2")
8124 (source (origin
8125 (method url-fetch)
8126 (uri (pypi-uri "libarchive-c" version))
8127 (sha256
8128 (base32
8129 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
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
8141 "/lib/libarchive.so'")))))))))
8142 (inputs
8143 `(("libarchive" ,libarchive)))
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).")
8150 (license license:lgpl2.0+)))
8151
8152(define-public python2-libarchive-c
8153 (package-with-python2 python-libarchive-c))
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
8162 #:configure-flags '("--single-version-externally-managed" "--root=/")
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)
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
8180serve the same purpose: provide Python bindings for libmagic.")))
8181
8182(define-public python2-file
8183 (package-with-python2 python-file))
8184
8185(define-public python-debian
8186 (package
8187 (name "python-debian")
8188 (version "0.1.28")
8189 (source
8190 (origin
8191 (method url-fetch)
8192 (uri (pypi-uri name version))
8193 (sha256
8194 (base32
8195 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
8196 (build-system python-build-system)
8197 (propagated-inputs
8198 `(("python-six" ,python-six)))
8199 (home-page "http://packages.debian.org/sid/python-debian")
8200 (synopsis "Debian package related modules")
8201 (description
8202 ;; XXX: Use @enumerate instead of @itemize to work around
8203 ;; <http://bugs.gnu.org/21772>.
8204 "This package provides Python modules that abstract many formats of
8205Debian-related files, such as:
8206
8207@enumerate
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.
8215@end enumerate\n")
8216
8217 ;; Modules are either GPLv2+ or GPLv3+.
8218 (license license:gpl3+)))
8219
8220(define-public python2-debian
8221 (package-with-python2 python-debian))
8222
8223(define-public python-nbformat
8224 (package
8225 (name "python-nbformat")
8226 (version "4.3.0")
8227 (source
8228 (origin
8229 (method url-fetch)
8230 (uri (pypi-uri "nbformat" version))
8231 (sha256
8232 (base32
8233 "12s7j4qja8b5bs1kyw5dzmrqbjxxj8wk52cyasbiqbv7fblcrssz"))))
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)))
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
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)
8264 ("python-six" ,python-six)))
8265 (native-inputs
8266 `(("python-nose" ,python-nose)))
8267 (home-page "https://github.com/jsocol/bleach")
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
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
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)
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)))
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)
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
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.")
8402 (properties `((python2-variant . ,(delay python2-notebook))))
8403 (license license:bsd-3)))
8404
8405(define-public python2-notebook
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 #")))))))))))
8424
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
8440 `(("python-certifi" ,python-certifi)
8441 ("python-nose" ,python-nose)))
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
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)
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
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)
8500 ("python-pygments" ,python-pygments)))
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
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)
8530 ("python-notebook" ,python-notebook)))
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
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)
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.")
8560 (license license:lgpl2.1+)))
8561
8562(define-public python2-chardet
8563 (package-with-python2 python-chardet))
8564
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
8582 `(("python-pytest" ,python-pytest)))
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
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)
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.")
8618 (license license:zpl2.1)))
8619
8620(define-public python2-zope-event
8621 (package-with-python2 python-zope-event))
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)
8636 (native-inputs
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.")
8644 (license license:zpl2.1)))
8645
8646(define-public python2-zope-interface
8647 (package-with-python2 python-zope-interface))
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.")
8671 (license license:zpl2.1)))
8672
8673(define-public python2-zope-exceptions
8674 (package-with-python2 python-zope-exceptions))
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
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))))
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.")
8703 (license license:zpl2.1)))
8704
8705(define-public python2-zope-testing
8706 (package-with-python2 python-zope-testing))
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)
8722 (arguments
8723 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8724 (native-inputs
8725 `(("python-six" ,python-six)
8726 ;("python-zope-interface" ,python-zope-interface)
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.")
8736 (license license:zpl2.1)))
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)))))))
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)
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.")
8766 (license license:zpl2.1)))
8767
8768(define-public python2-zope-i18nmessageid
8769 (package-with-python2 python-zope-i18nmessageid))
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)
8784 (arguments
8785 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
8786 (propagated-inputs
8787 `(("python-zope-event" ,python-zope-event)
8788 ("python-zope-exceptions", python-zope-exceptions)
8789 ("python-zope-interface" ,python-zope-interface)))
8790 (native-inputs
8791 `(("python-zope-testing" ,python-zope-testing)
8792 ("python-coverage" ,python-coverage)
8793 ("python-nose" ,python-nose)))
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.")
8798 (license license:zpl2.1)))
8799
8800(define-public python2-zope-schema
8801 (package-with-python2 python-zope-schema))
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)
8816 (arguments
8817 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
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.")
8825 (license license:zpl2.1)))
8826
8827(define-public python2-zope-configuration
8828 (package-with-python2 python-zope-configuration))
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)
8843 (arguments
8844 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
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.")
8854 (license license:zpl2.1)))
8855
8856(define-public python2-zope-proxy
8857 (package-with-python2 python-zope-proxy))
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)
8872 (arguments
8873 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8874 (propagated-inputs
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.")
8881 (license license:zpl2.1)))
8882
8883(define-public python2-zope-location
8884 (package-with-python2 python-zope-location))
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)
8899 (arguments
8900 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
8901 (propagated-inputs
8902 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8903 ("python-zope-proxy" ,python-zope-proxy)
8904 ("python-zope-schema" ,python-zope-schema)))
8905 (native-inputs
8906 `(("python-six" ,python-six)
8907 ("python-zope-component" ,python-zope-component)
8908 ("python-zope-configuration" ,python-zope-configuration)
8909 ("python-zope-location" ,python-zope-location)
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.")
8916 (license license:zpl2.1)))
8917
8918(define-public python2-zope-security
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)))))))
8926
8927(define-public python-zope-component
8928 (package
8929 (name "python-zope-component")
8930 (version "4.3.0")
8931 (source
8932 (origin
8933 (method url-fetch)
8934 (uri (pypi-uri "zope.component" version))
8935 (sha256
8936 (base32
8937 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
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.")
8954 (license license:zpl2.1)))
8955
8956(define-public python2-zope-component
8957 (package-with-python2 python-zope-component))
8958
8959(define-public python-pythondialog
8960 (package
8961 (name "python-pythondialog")
8962 (version "3.4.0")
8963 (source
8964 (origin
8965 (method url-fetch)
8966 (uri (pypi-uri "pythondialog" version))
8967 (sha256
8968 (base32
8969 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
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))))
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")
8991 (license license:lgpl2.1)
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")))))))
9005
9006(define-public python-pyrfc3339
9007 (package
9008 (name "python-pyrfc3339")
9009 (version "1.0")
9010 (source
9011 (origin
9012 (method url-fetch)
9013 (uri (pypi-uri "pyRFC3339" version))
9014 (sha256
9015 (base32
9016 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
9017 (build-system python-build-system)
9018 (propagated-inputs
9019 `(("python-pytz" ,python-pytz)))
9020 (native-inputs
9021 `(("python-nose" ,python-nose)))
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))
9030
9031(define-public python-werkzeug
9032 (package
9033 (name "python-werkzeug")
9034 (version "0.11.15")
9035 (source
9036 (origin
9037 (method url-fetch)
9038 (uri (pypi-uri "Werkzeug" version))
9039 (sha256
9040 (base32
9041 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
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.")
9052 (license license:x11)))
9053
9054(define-public python2-werkzeug
9055 (package-with-python2 python-werkzeug))
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.
9071 (patches (search-patches "python-configobj-setuptools.patch"))))
9072 (build-system python-build-system)
9073 (propagated-inputs
9074 `(("python-six" ,python-six)))
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")
9081 (license license:bsd-3)))
9082
9083(define-public python2-configobj
9084 (package-with-python2 python-configobj))
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))
9111
9112(define-public python-ndg-httpsclient
9113 (package
9114 (name "python-ndg-httpsclient")
9115 (version "0.4.2")
9116 (source (origin
9117 (method url-fetch)
9118 (uri (pypi-uri "ndg_httpsclient" version))
9119 (sha256
9120 (base32
9121 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
9122 (build-system python-build-system)
9123 (arguments
9124 '(;; The tests appear to require networking.
9125 #:tests? #f))
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/")
9134 (license license:bsd-3)))
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)))))
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*
9163 "python" "test_contextlib2.py" "-v")))))))
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.")
9171 (license license:psfl)))
9172
9173(define-public python2-contextlib2
9174 (package-with-python2 python-contextlib2))
9175
9176(define-public python-texttable
9177 (package
9178 (name "python-texttable")
9179 (version "0.8.7")
9180 (source
9181 (origin
9182 (method url-fetch)
9183 (uri (pypi-uri "texttable" version))
9184 (sha256
9185 (base32
9186 "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
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.")
9193 (license license:lgpl2.1+)))
9194
9195(define-public python2-texttable
9196 (package-with-python2 python-texttable))
9197
9198(define-public python-websocket-client
9199 (package
9200 (name "python-websocket-client")
9201 (version "0.37.0")
9202 (source
9203 (origin
9204 (method url-fetch)
9205 (uri (pypi-uri "websocket_client" version))
9206 (sha256
9207 (base32
9208 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
9209 (build-system python-build-system)
9210 (propagated-inputs
9211 `(("python-six" ,python-six)))
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.")
9216 (license license:lgpl2.1+)))
9217
9218(define-public python2-websocket-client
9219 (package-with-python2 python-websocket-client))
9220
9221(define-public python-atomicwrites
9222 (package
9223 (name "python-atomicwrites")
9224 (version "1.1.5")
9225 (source (origin
9226 (method url-fetch)
9227 (uri (pypi-uri "atomicwrites" version))
9228 (sha256
9229 (base32
9230 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
9231 (build-system python-build-system)
9232 (synopsis "Atomic file writes in Python")
9233 (description "Library for atomic file writes using platform dependent tools
9234for atomic file system operations.")
9235 (home-page "https://github.com/untitaker/python-atomicwrites")
9236 (license license:expat)))
9237
9238(define-public python2-atomicwrites
9239 (package-with-python2 python-atomicwrites))
9240
9241(define-public python-requests-toolbelt
9242 (package
9243 (name "python-requests-toolbelt")
9244 (version "0.6.2")
9245 (source (origin
9246 (method url-fetch)
9247 (uri (string-append
9248 "https://pypi.python.org/packages/"
9249 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
9250 "requests-toolbelt-" version ".tar.gz"))
9251 (sha256
9252 (base32
9253 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
9254 (build-system python-build-system)
9255 (native-inputs
9256 `(("python-betamax" ,python-betamax)
9257 ("python-mock" ,python-mock)
9258 ("python-pytest" ,python-pytest)))
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")
9265 (license license:asl2.0)))
9266
9267(define-public python-click-threading
9268 (package
9269 (name "python-click-threading")
9270 (version "0.4.3")
9271 (source (origin
9272 (method url-fetch)
9273 (uri (pypi-uri "click-threading" version))
9274 (sha256
9275 (base32
9276 "0xs4bg2ws0zgyiplk312l049hi23c2zqf1g771rjhh5vr2msk4cg"))))
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)))
9285
9286(define-public python-click-log
9287 (package
9288 (name "python-click-log")
9289 (version "0.2.0")
9290 (source (origin
9291 (method url-fetch)
9292 (uri (pypi-uri "click-log" version))
9293 (sha256
9294 (base32
9295 "1bjrfxji1yv4fj0g78ri2yfgn2wbivn8g69fxfinxvxpmighhshp"))))
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)))
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)
9316 (native-inputs
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")
9323 (license license:expat)))
9324
9325(define-public python2-apipkg
9326 (package-with-python2 python-apipkg))
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)
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))
9344 (native-inputs
9345 `(("python-pytest" ,python-pytest)
9346 ("python-setuptools-scm" ,python-setuptools-scm)))
9347 (propagated-inputs
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
9353minimal and fast API targeting the following uses:
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/")
9360 (license license:expat)))
9361
9362(define-public python2-execnet
9363 (package-with-python2 python-execnet))
9364
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)
9377 ;; TODO: Tests require packaging 'hiredis'.
9378 (arguments '(#:tests? #f))
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
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)
9401 (propagated-inputs
9402 `(("python-apipkg" ,python-apipkg)
9403 ("python-execnet" ,python-execnet)
9404 ("python-py" ,python-py)
9405 ("python-pytest" ,python-pytest)))
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/")
9410 (license license:expat)))
9411
9412(define-public python2-pytest-cache
9413 (package-with-python2 python-pytest-cache))
9414
9415(define-public python-pytest-localserver
9416 (package
9417 (name "python-pytest-localserver")
9418 (version "0.3.5")
9419 (source (origin
9420 (method url-fetch)
9421 (uri (pypi-uri "pytest-localserver" version))
9422 (sha256
9423 (base32
9424 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
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
9433 `(("python-pytest" ,python-pytest)
9434 ("python-requests" ,python-requests)
9435 ("python-six" ,python-six)))
9436 (propagated-inputs
9437 `(("python-werkzeug" ,python-werkzeug)))
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)))
9443
9444(define-public python-wsgi-intercept
9445 (package
9446 (name "python-wsgi-intercept")
9447 (version "1.2.2")
9448 (source (origin
9449 (method url-fetch)
9450 (uri (string-append
9451 "https://pypi.python.org/packages/"
9452 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
9453 "wsgi_intercept-" version ".tar.gz"))
9454 (sha256
9455 (base32
9456 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
9457 (build-system python-build-system)
9458 (propagated-inputs
9459 `(("python-six" ,python-six)))
9460 (native-inputs
9461 `(("python-pytest" ,python-pytest)
9462 ("python-httplib2" ,python-httplib2)
9463 ("python-requests" ,python-requests)
9464 ("python-urllib3" ,python-urllib3)))
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)))
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)))
9496
9497(define-public python-icalendar
9498 (package
9499 (name "python-icalendar")
9500 (version "3.11.7")
9501 (source (origin
9502 (method url-fetch)
9503 (uri (pypi-uri "icalendar" version))
9504 (sha256
9505 (base32
9506 "0ahf1i98wjizhld2qd7v2vmvzsmdw08mmins82bf3fpbnp2sxbgc"))))
9507 (build-system python-build-system)
9508 (propagated-inputs
9509 `(("python-dateutil" ,python-dateutil)
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")
9515 (license license:bsd-2)))
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"))))
9527 (arguments '(#:tests? #f)) ; No tests.
9528 (build-system python-build-system)
9529 (propagated-inputs
9530 `(("python-sphinx" ,python-sphinx)))
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")
9535 (license license:bsd-2)))
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)
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.")
9552 (license license:bsd-3)))
9553
9554(define-public python2-args
9555 (package-with-python2 python-args))
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)
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)))
9576 (propagated-inputs
9577 `(("python-args" ,python-args)))
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.")
9584 (license license:isc)))
9585
9586(define-public python2-clint
9587 (package-with-python2 python-clint))
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)
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.")
9605 (license license:bsd-3)))
9606
9607(define-public python2-astor
9608 (package-with-python2 python-astor))
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)
9621 (propagated-inputs
9622 `(("python-appdirs" ,python-appdirs)))
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.")
9629 (license license:bsd-3)))
9630
9631(define-public python2-rply
9632 (package-with-python2 python-rply))
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)
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)))
9656 (propagated-inputs
9657 `(("python-astor" ,python-astor)
9658 ("python-clint" ,python-clint)
9659 ("python-rply" ,python-rply)))
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))
9670
9671(define-public python-rauth
9672 (package
9673 (name "python-rauth")
9674 (version "0.7.3")
9675 (source
9676 (origin
9677 (method url-fetch)
9678 (uri (pypi-uri "rauth" version))
9679 (sha256
9680 (base32
9681 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
9682 (build-system python-build-system)
9683 (arguments
9684 `(#:test-target "check"))
9685 (propagated-inputs
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.")
9693 (license license:expat)
9694 (properties `((python2-variant . ,(delay python2-rauth))))))
9695
9696(define-public python2-rauth
9697 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9698 (package
9699 (inherit base)
9700 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9701 ,@(package-native-inputs base))))))
9702
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
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
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
9767(define-public python2-futures
9768 (package
9769 (name "python2-futures")
9770 (version "3.0.5")
9771 (source
9772 (origin
9773 (method url-fetch)
9774 (uri (pypi-uri "futures" version))
9775 (sha256
9776 (base32
9777 "1pw1z4329xvlabdpwqa6b7v2fxf7hl64m4cgr22ckbym8m8m4hh5"))))
9778 (build-system python-build-system)
9779 (arguments `(#:python ,python-2))
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")
9787 (license license:bsd-3)))
9788
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)
9820 ,@(package-native-inputs promise))))))
9821
9822(define-public python-urllib3
9823 (package
9824 (name "python-urllib3")
9825 (version "1.18.1")
9826 (source
9827 (origin
9828 (method url-fetch)
9829 (uri (pypi-uri "urllib3" version))
9830 (sha256
9831 (base32
9832 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
9833 (build-system python-build-system)
9834 (arguments `(#:tests? #f))
9835 (native-inputs
9836 `(;; some packages for tests
9837 ("python-nose" ,python-nose)
9838 ("python-mock" ,python-mock)
9839 ("python-tornado" ,python-tornado)))
9840 (propagated-inputs
9841 `(;; extra packages for https security
9842 ("python-certifi" ,python-certifi)
9843 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9844 ("python-pyasn1" ,python-pyasn1)
9845 ("python-pyopenssl" ,python-pyopenssl)))
9846 (home-page "https://urllib3.readthedocs.org/")
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))
9856
9857(define-public python-colorama
9858 (package
9859 (name "python-colorama")
9860 (version "0.3.7")
9861 (source
9862 (origin
9863 (method url-fetch)
9864 (uri (pypi-uri "colorama" version))
9865 (sha256
9866 (base32
9867 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
9868 (build-system python-build-system)
9869 (synopsis "Colored terminal text rendering for Python")
9870 (description "Colorama is a Python library for rendering colored terminal
9871text.")
9872 (home-page "https://pypi.python.org/pypi/colorama")
9873 (license license:bsd-3)))
9874
9875(define-public python2-colorama
9876 (package-with-python2 python-colorama))
9877
9878(define-public python-rsa
9879 (package
9880 (name "python-rsa")
9881 (version "3.4.2")
9882 (source
9883 (origin
9884 (method url-fetch)
9885 (uri (pypi-uri "rsa" version))
9886 (sha256
9887 (base32
9888 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
9889 (build-system python-build-system)
9890 (propagated-inputs
9891 `(("python-pyasn1" ,python-pyasn1)))
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")
9898 (license license:asl2.0)))
9899
9900(define-public python2-rsa
9901 (package-with-python2 python-rsa))
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)
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))
9923
9924(define-public python-tox
9925 (package
9926 (name "python-tox")
9927 (version "2.8.0")
9928 (source
9929 (origin
9930 (method url-fetch)
9931 (uri (pypi-uri "tox" version))
9932 (sha256
9933 (base32
9934 "00lrql2cfzhb712v70inac6mrgdv8s8fmvz7qpggkk623hkm2pgc"))))
9935 (build-system python-build-system)
9936 (arguments
9937 ;; FIXME: Tests require pytest-timeout, which itself requires
9938 ;; pytest>=2.8.0 for installation.
9939 '(#:tests? #f))
9940 (propagated-inputs
9941 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
9942 ("python-py" ,python-py)
9943 ("python-virtualenv" ,python-virtualenv)))
9944 (native-inputs
9945 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
9946 ("python-pytest" ,python-pytest) ; >= 2.3.5
9947 ("python-setuptools-scm" ,python-setuptools-scm)))
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))
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)
9972 (native-inputs
9973 `(("python-nose" ,python-nose)))
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))
9983
9984(define-public python-botocore
9985 (package
9986 (name "python-botocore")
9987 (version "1.7.9")
9988 (source
9989 (origin
9990 (method url-fetch)
9991 (uri (pypi-uri "botocore" version))
9992 (sha256
9993 (base32
9994 "02b1bw25r1wdjs5yppb1h9igf11wj092biriv2yg8hzp5r0wrkmg"))))
9995 (build-system python-build-system)
9996 (arguments
9997 ;; FIXME: Many tests are failing.
9998 '(#:tests? #f))
9999 (propagated-inputs
10000 `(("python-dateutil" ,python-dateutil)
10001 ("python-docutils" ,python-docutils)
10002 ("python-jmespath" ,python-jmespath)))
10003 (native-inputs
10004 `(("python-mock" ,python-mock)
10005 ("python-nose" ,python-nose)
10006 ("behave" ,behave)
10007 ("python-tox" ,python-tox)
10008 ("python-wheel" ,python-wheel)))
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.")
10013 (license license:asl2.0)))
10014
10015(define-public python2-botocore
10016 (package-with-python2 python-botocore))
10017
10018(define-public awscli
10019 (package
10020 (name "awscli")
10021 (version "1.11.151")
10022 (source
10023 (origin
10024 (method url-fetch)
10025 (uri (pypi-uri name version))
10026 (sha256
10027 (base32
10028 "0h6rirbfy0f9cxm7ikll0kr720dircfmxf2vslmhn4n325831wsp"))))
10029 (build-system python-build-system)
10030 (propagated-inputs
10031 `(("python-colorama" ,python-colorama)
10032 ("python-botocore" ,python-botocore)
10033 ("python-s3transfer" ,python-s3transfer)
10034 ("python-docutils" ,python-docutils)
10035 ("python-pyyaml" ,python-pyyaml)
10036 ("python-rsa" ,python-rsa)))
10037 (arguments
10038 ;; FIXME: The 'pypi' release does not contain tests.
10039 '(#:tests? #f))
10040 (home-page "https://aws.amazon.com/cli/")
10041 (synopsis "Command line client for AWS")
10042 (description "AWS CLI provides a unified command line interface to the
10043Amazon Web Services (AWS) API.")
10044 (license license:asl2.0)))
10045
10046(define-public python-hypothesis
10047 (package
10048 (name "python-hypothesis")
10049 (version "3.1.0")
10050 (source (origin
10051 (method url-fetch)
10052 (uri (pypi-uri "hypothesis" version))
10053 (sha256
10054 (base32
10055 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
10056 (build-system python-build-system)
10057 (native-inputs
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")
10066 (license license:mpl2.0)
10067 (properties `((python2-variant . ,(delay python2-hypothesis))))))
10068
10069(define-public python2-hypothesis
10070 (let ((hypothesis (package-with-python2
10071 (strip-python2-variant python-hypothesis))))
10072 (package (inherit hypothesis)
10073 (native-inputs
10074 `(("python2-enum34" ,python2-enum34)
10075 ,@(package-native-inputs hypothesis))))))
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)
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/")
10097 (license license:unlicense)))
10098
10099(define-public python2-pytest-subtesthack
10100 (package-with-python2 python-pytest-subtesthack))
10101
10102(define-public python-xdo
10103 (package
10104 (name "python-xdo")
10105 (version "0.3")
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
10113 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
10114 (build-system python-build-system)
10115 (arguments
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
10129 (propagated-inputs
10130 `(("python-six" ,python-six)))
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.)")
10139 (license license:bsd-3)))
10140
10141(define-public python2-xdo
10142 (package-with-python2 python-xdo))
10143
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)
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)))))
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.")
10176 (license license:bsd-3)))
10177
10178(define-public python2-wtforms
10179 (package-with-python2 python-wtforms))
10180
10181(define-public python-mako
10182 (package
10183 (name "python-mako")
10184 (version "1.0.6")
10185 (source
10186 (origin
10187 (method url-fetch)
10188 (uri (pypi-uri "Mako" version))
10189 (sha256
10190 (base32
10191 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
10192 (build-system python-build-system)
10193 (propagated-inputs
10194 `(("python-markupsafe" ,python-markupsafe)))
10195 (native-inputs
10196 `(("python-mock" ,python-mock)
10197 ("python-nose" ,python-nose)
10198 ("python-pytest" ,python-pytest)))
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.")
10203 (license license:expat)))
10204
10205(define-public python2-mako
10206 (package-with-python2 python-mako))
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.")
10224 (license license:zpl2.1)))
10225
10226(define-public python2-waitress
10227 (package-with-python2 python-waitress))
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)
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))
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.")
10260 (license license:expat)))
10261
10262(define-public python2-wsgiproxy2
10263 (package-with-python2 python-wsgiproxy2))
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)))
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))
10291
10292(define-public python-paste
10293 (package
10294 (name "python-paste")
10295 (version "2.0.3")
10296 (source
10297 (origin
10298 (method url-fetch)
10299 (uri (pypi-uri "Paste" version))
10300 (sha256
10301 (base32
10302 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
10303 (patches (search-patches "python-paste-remove-website-test.patch"
10304 "python-paste-remove-timing-test.patch"))))
10305 (build-system python-build-system)
10306 (native-inputs
10307 `(("python-nose" ,python-nose)))
10308 (propagated-inputs
10309 `(("python-six" ,python-six)))
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).")
10317 (license license:expat)))
10318
10319(define-public python2-paste
10320 (package-with-python2 python-paste))
10321
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
10337 `(("python-paste" ,python-paste)
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
10358(define-public python-pyquery
10359 (package
10360 (name "python-pyquery")
10361 (version "1.2.17")
10362 (source
10363 (origin
10364 (method url-fetch)
10365 (uri (pypi-uri "pyquery" version))
10366 (sha256
10367 (base32
10368 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
10369 (build-system python-build-system)
10370 (native-inputs
10371 `(("python-webob" ,python-webob)
10372 ("python-webtest" ,python-webtest)))
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.")
10381 (license license:bsd-3)))
10382
10383(define-public python2-pyquery
10384 (package-with-python2 python-pyquery))
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.")
10427 (license license:expat)))
10428
10429(define-public python2-webtest
10430 (package-with-python2 python-webtest))
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.")
10458 (license license:bsd-3)
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)))
10469 (native-inputs `(("python2-nose" ,python2-nose))))))
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)))
10486 (home-page "https://github.com/celery/py-amqp")
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.")
10493 (license license:lgpl2.1+)
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
10505 ,@(package-arguments amqp))))))
10506
10507(define-public python-kombu
10508 (package
10509 (name "python-kombu")
10510 (version "3.0.37")
10511 (source
10512 (origin
10513 (method url-fetch)
10514 (uri (pypi-uri "kombu" version))
10515 (sha256
10516 (base32
10517 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
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)
10524 ("python-amqp" ,python-amqp)
10525 ("python-redis" ,python-redis)))
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.")
10534 (license license:bsd-3)
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)
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)))
10546 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10547 ,@(package-native-inputs kombu))))))
10548
10549(define-public python-billiard
10550 (package
10551 (name "python-billiard")
10552 (version "3.3.0.23")
10553 (source
10554 (origin
10555 (method url-fetch)
10556 (uri (pypi-uri "billiard" version))
10557 (sha256
10558 (base32
10559 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
10560 (build-system python-build-system)
10561 (native-inputs
10562 `(("python-nose" ,python-nose)))
10563 (home-page "https://github.com/celery/billiard")
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.")
10571 (license license:bsd-3)
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)
10579 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10580 ("python2-mock" ,python2-mock)
10581 ,@(package-native-inputs billiard))))))
10582
10583(define-public python-celery
10584 (package
10585 (name "python-celery")
10586 (version "3.1.24")
10587 (source
10588 (origin
10589 (method url-fetch)
10590 (uri (pypi-uri "celery" version))
10591 (sha256
10592 (base32
10593 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
10594 (build-system python-build-system)
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.*")))))))
10604 (native-inputs
10605 `(("python-nose" ,python-nose)))
10606 (propagated-inputs
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).")
10618 (license license:bsd-3)
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)
10626 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10627 ("python2-mock" ,python2-mock)
10628 ,@(package-native-inputs celery))))))
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.).")
10652 (license license:expat)))
10653
10654(define-public python2-translitcodec
10655 (package-with-python2 python-translitcodec))
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.")
10676 (license license:asl2.0)))
10677
10678(define-public python2-editor
10679 (package-with-python2 python-editor))
10680
10681(define-public python-sphinxcontrib-programoutput
10682 (package
10683 (name "python-sphinxcontrib-programoutput")
10684 (version "0.10")
10685 (source (origin
10686 (method url-fetch)
10687 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10688 (sha256
10689 (base32
10690 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
10691 (build-system python-build-system)
10692 (arguments
10693 ;; FIXME: Many tests are failing and the upstream is gone.
10694 '(#:tests? #f))
10695 (propagated-inputs
10696 `(("python-sphinx" ,python-sphinx)))
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")
10701 (license license:bsd-2)))
10702
10703(define-public python2-sphinxcontrib-programoutput
10704 (package-with-python2 python-sphinxcontrib-programoutput))
10705
10706(define-public python-sphinx-repoze-autointerface
10707 (package
10708 (name "python-sphinx-repoze-autointerface")
10709 (version "0.8")
10710 (source (origin
10711 (method url-fetch)
10712 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10713 (sha256
10714 (base32
10715 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
10716 (build-system python-build-system)
10717 (arguments '(#:tests? #f)) ; No tests.
10718 (propagated-inputs
10719 `(("python-sphinx" ,python-sphinx)
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")
10726 (license license:repoze)))
10727
10728(define-public python2-sphinx-repoze-autointerface
10729 (package-with-python2 python-sphinx-repoze-autointerface))
10730
10731(define-public python-psycopg2
10732 (package
10733 (name "python-psycopg2")
10734 (version "2.6.2")
10735 (source
10736 (origin
10737 (method url-fetch)
10738 (uri (pypi-uri "psycopg2" version))
10739 (sha256
10740 (base32
10741 "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
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. ")
10753 (license license:lgpl3+)))
10754
10755(define-public python2-psycopg2
10756 (package-with-python2 python-psycopg2))
10757
10758(define-public python-vobject
10759 (package
10760 (name "python-vobject")
10761 (version "0.9.5")
10762 (source (origin
10763 (method url-fetch)
10764 (uri (pypi-uri "vobject" version))
10765 (sha256
10766 (base32
10767 "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg"))))
10768 (build-system python-build-system)
10769 (arguments
10770 '(;; The test suite relies on some non-portable Windows interfaces.
10771 #:tests? #f))
10772 (propagated-inputs
10773 `(("python-dateutil" ,python-dateutil)
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/")
10782 (license license:asl2.0)))
10783
10784(define-public python2-vobject
10785 (package-with-python2 python-vobject))
10786
10787(define-public python-munkres
10788 (package
10789 (name "python-munkres")
10790 (version "1.0.8")
10791 (source (origin
10792 (method url-fetch)
10793 (uri (pypi-uri "munkres" version))
10794 (sha256
10795 (base32
10796 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
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.")
10805 (license license:bsd-3)))
10806
10807(define-public python2-munkres
10808 (package-with-python2 python-munkres))
10809
10810(define-public python-flask
10811 (package
10812 (name "python-flask")
10813 (version "0.11.1")
10814 (source (origin
10815 (method url-fetch)
10816 (uri (pypi-uri "Flask" version))
10817 (sha256
10818 (base32
10819 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
10820 (build-system python-build-system)
10821 (propagated-inputs
10822 `(("python-itsdangerous" ,python-itsdangerous)
10823 ("python-jinja2" ,python-jinja2)
10824 ("python-click" ,python-click)
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.")
10831 (license license:bsd-3)))
10832
10833(define-public python2-flask
10834 (package-with-python2 python-flask))
10835
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)
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)))))
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
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
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")
10916 (license license:expat)))
10917
10918(define-public python2-cookies
10919 (package-with-python2 python-cookies))
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
10937 `(("python-mock" ,python-mock)))
10938 (propagated-inputs
10939 `(("python-requests" ,python-requests)
10940 ("python-cookies" ,python-cookies)
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.")
10946 (license license:asl2.0)))
10947
10948(define-public python2-responses
10949 (package-with-python2 python-responses))
10950
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
10964 `(("python-pytest" ,python-pytest)))
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
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)
10991 ;; The tests depend on the internal "test" module, which does not provide
10992 ;; a stable interface.
10993 (arguments `(#:tests? #f))
10994 (home-page "https://pathlib.readthedocs.org/")
10995 (synopsis "Object-oriented file system paths")
10996 (description "Pathlib offers a set of classes to handle file system paths.
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.).
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.")
11012 (license license:expat)))
11013
11014(define-public python2-pathlib
11015 (package-with-python2 python-pathlib))
11016
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)
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.
11031 (arguments
11032 `(#:python ,python-2))
11033 (native-inputs
11034 `(("python2-six" ,python2-six)))
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
11055(define-public python-jellyfish
11056 (package
11057 (name "python-jellyfish")
11058 (version "0.5.6")
11059 (source (origin
11060 (method url-fetch)
11061 (uri (pypi-uri "jellyfish" version))
11062 (sha256
11063 (base32
11064 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
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.")
11072 (license license:bsd-2)
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)
11079 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
11080 ,@(package-native-inputs jellyfish))))))
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
11101 `(("python2-unittest2" ,python2-unittest2)))
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.")
11106 (license license:bsd-2)))
11107
11108(define-public python-rarfile
11109 (package
11110 (name "python-rarfile")
11111 (version "2.8")
11112 (source (origin
11113 (method url-fetch)
11114 (uri (pypi-uri "rarfile" version))
11115 (sha256
11116 (base32
11117 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
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.")
11133 (license license:isc)))
11134
11135(define-public python2-rarfile
11136 (package-with-python2 python-rarfile))
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'")))
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))))))
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))
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)
11211 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
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))
11221 (propagated-inputs
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.")
11239 (license license:gpl2+)))
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
11254 `(("python-nose" ,python-nose)))
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
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)))))
11271 (home-page "https://github.com/matze/pkgconfig")
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.")
11277 (license license:expat)))
11278
11279(define-public python2-pkgconfig
11280 (package-with-python2 python-pkgconfig))
11281
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
11295 `(#:tests? #f)) ; Tests use deprecated python modules.
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.")
11303 (license license:asl2.0)
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)
11311 (arguments
11312 `(#:python ,python-2
11313 #:phases
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"))))))))))
11320
11321(define-public python-future
11322 (package
11323 (name "python-future")
11324 (version "0.16.0")
11325 (source
11326 (origin
11327 (method url-fetch)
11328 (uri (pypi-uri "future" version))
11329 (sha256
11330 (base32
11331 "1nzy1k4m9966sikp0qka7lirh8sqrsyainyf8rk97db7nwdfv773"))))
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.")
11343 (license license:expat)))
11344
11345(define-public python2-future
11346 (package-with-python2 python-future))
11347
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)
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.")
11387 (license license:lgpl3+)))
11388
11389(define-public python2-cysignals
11390 (package-with-python2 python-cysignals))
11391
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))))))
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."))
11429 (license (list license:gpl3 license:bsd-3 license:expat))))
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
11448 `(("python2-unittest2" ,python2-unittest2)))
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
11454to occurrences in strings and comments.")
11455 (license license:gpl2)))
11456
11457(define-public python-py3status
11458 (package
11459 (name "python-py3status")
11460 (version "3.1")
11461 (source
11462 (origin
11463 (method url-fetch)
11464 (uri (pypi-uri "py3status" version))
11465 (sha256
11466 (base32
11467 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
11468 (build-system python-build-system)
11469 (arguments
11470 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
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.")
11476 (license license:bsd-3)))
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)
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.
11514@end enumerate\n")
11515 (license license:bsd-3)))
11516
11517(define-public python2-tblib
11518 (package-with-python2 python-tblib))
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
11543 `(("python-pytest" ,python-pytest)))
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.")
11548 (license license:bsd-3)))
11549
11550(define-public python2-sqlparse
11551 (package-with-python2 python-sqlparse))
11552
11553(define-public python-greenlet
11554 (package
11555 (name "python-greenlet")
11556 (version "0.4.11")
11557 (source (origin
11558 (method url-fetch)
11559 (uri (pypi-uri "greenlet" version))
11560 (sha256
11561 (base32
11562 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
11563 (build-system python-build-system)
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\".")
11571 (license (list license:psfl license:expat))))
11572
11573(define-public python2-greenlet
11574 (package-with-python2 python-greenlet))
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
11600 `(("python-six" ,python-six)))
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))
11613
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
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
11680(define-public python-twisted
11681 (package
11682 (name "python-twisted")
11683 (version "16.2.0")
11684 (source (origin
11685 (method url-fetch)
11686 (uri (pypi-uri "Twisted" version ".tar.bz2"))
11687 (sha256
11688 (base32
11689 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11690 (build-system python-build-system)
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")))))
11698 (propagated-inputs
11699 `(("python-zope-interface" ,python-zope-interface)))
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))
11709
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
11723 `(("python-pyev" ,python-pyev)
11724 ("python-tornado" ,python-tornado)
11725 ("python-twisted" ,python-twisted)))
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
11737(define-public python-ply
11738 (package
11739 (name "python-ply")
11740 (version "3.9")
11741 (source
11742 (origin
11743 (method url-fetch)
11744 (uri (pypi-uri "ply" version))
11745 (sha256
11746 (base32
11747 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
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.")
11753 (license license:bsd-3)))
11754
11755(define-public python2-ply
11756 (package-with-python2 python-ply))
11757
11758(define-public python-tabulate
11759 (package
11760 (name "python-tabulate")
11761 (version "0.7.7")
11762 (source (origin
11763 (method url-fetch)
11764 (uri (pypi-uri "tabulate" version))
11765 (sha256
11766 (base32
11767 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
11768 (build-system python-build-system)
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))
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))
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
11796 (propagated-inputs
11797 `(("python-six" ,python-six)))
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.")
11804 (license license:asl2.0)))
11805
11806(define-public python2-kazoo
11807 (package-with-python2 python-kazoo))
11808
11809(define-public python-pykafka
11810 (package
11811 (name "python-pykafka")
11812 (version "2.4.0")
11813 (source (origin
11814 (method url-fetch)
11815 (uri (string-append
11816 "https://pypi.python.org/packages/8b/3e/"
11817 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11818 "pykafka-" version ".tar.gz"))
11819 (sha256
11820 (base32
11821 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11822 (build-system python-build-system)
11823 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
11824 (propagated-inputs
11825 `(("python-gevent" ,python-gevent)
11826 ("python-kazoo" ,python-kazoo)
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.")
11836 (license license:asl2.0)))
11837
11838(define-public python2-pykafka
11839 (package-with-python2 python-pykafka))
11840
11841(define-public python-wcwidth
11842 (package
11843 (name "python-wcwidth")
11844 (version "0.1.7")
11845 (source
11846 (origin
11847 (method url-fetch)
11848 (uri (pypi-uri "wcwidth" version))
11849 (sha256
11850 (base32
11851 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
11852 (build-system python-build-system)
11853 (home-page "https://github.com/jquast/wcwidth")
11854 (synopsis "Measure number of terminal column cells of wide-character codes")
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.")
11860 (license license:expat)))
11861
11862(define-public python2-wcwidth
11863 (package-with-python2 python-wcwidth))
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)
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.")
11888 (license license:asl2.0)))
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)
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.")
11906 (license license:bsd-3)))
11907
11908(define-public python2-chai
11909 (package-with-python2 python-chai))
11910
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
11923 `(;; For testing
11924 ("python-chai" ,python-chai)
11925 ("python-simplejson" ,python-simplejson)))
11926 (propagated-inputs
11927 `(("python-dateutil" ,python-dateutil)))
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.")
11934 (license license:asl2.0)))
11935
11936(define-public python2-arrow
11937 (package-with-python2 python-arrow))
11938
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)
11950 (native-inputs
11951 `(("python-pytest" ,python-pytest)))
11952 (home-page "https://github.com/jpvanhal/inflection")
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
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)
11974 (home-page "https://github.com/toastdriven/pylev")
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}.")
11979 (license license:bsd-3)))
11980
11981(define-public python2-pylev
11982 (package-with-python2 python-pylev))
11983
11984(define-public python-cleo
11985 (package
11986 (name "python-cleo")
11987 (version "0.6.1")
11988 (source (origin
11989 (method url-fetch)
11990 (uri (pypi-uri "cleo" version))
11991 (sha256
11992 (base32
11993 "0q1cf0szr0d54am4pypzwdnm74zpladdsinad94c2fz5i06fdpf7"))))
11994 (build-system python-build-system)
11995 (native-inputs
11996 `(;; For testing
11997 ("python-mock" ,python-mock)
11998 ("python-pytest-mock" ,python-pytest-mock)
11999 ("python-pytest" ,python-pytest)))
12000 (propagated-inputs
12001 `(("python-backpack" ,python-backpack)
12002 ("python-pastel" ,python-pastel)
12003 ("python-pylev" ,python-pylev)))
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
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)
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.")
12030 (license license:bsd-2)))
12031
12032(define-public python2-lazy-object-proxy
12033 (package-with-python2 python-lazy-object-proxy))
12034
12035(define-public python-dnspython
12036 (package
12037 (name "python-dnspython")
12038 (version "1.15.0")
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
12045 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
12046 (build-system python-build-system)
12047 (arguments '(#:tests? #f)) ; XXX: requires internet access
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
12059(define-public python-email-validator
12060 (package
12061 (name "python-email-validator")
12062 (version "1.0.2")
12063 (source
12064 (origin (method url-fetch)
12065 (uri (pypi-uri "email_validator" version))
12066 (sha256
12067 (base32
12068 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
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)))))
12078 (propagated-inputs
12079 `(("python-dnspython" ,python-dnspython)
12080 ("python-idna" ,python-idna)))
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.")
12085 (license license:cc0)))
12086
12087(define-public python2-email-validator
12088 (package-with-python2 python-email-validator))
12089
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)
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))
12110
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
12160(define-public python-pyaml
12161 (package
12162 (name "python-pyaml")
12163 (version "17.7.2")
12164 (source (origin
12165 (method url-fetch)
12166 (uri (pypi-uri "pyaml" version))
12167 (sha256
12168 (base32
12169 "132grrw0ajq4nrappi3ldbkb952k7yn9b6c7csi2rmvzm1g6ppp2"))))
12170 (build-system python-build-system)
12171 (native-inputs
12172 `(("python-unidecode" ,python-unidecode)))
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.")
12180 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
12181
12182(define-public python2-pyaml
12183 (package-with-python2 python-pyaml))
12184
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
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)
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.")
12227 (license license:bsd-3)))
12228
12229(define-public python2-flexmock
12230 (package-with-python2 python-flexmock))
12231
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
12244 (propagated-inputs
12245 `(("python-arrow" ,python-arrow)
12246 ("python-blinker" ,python-blinker)
12247 ("python-cleo" ,python-cleo)
12248 ("python-faker" ,python-faker)
12249 ("python-inflection" ,python-inflection)
12250 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
12251 ("python-pyaml" ,python-pyaml)
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)
12266 (propagated-inputs
12267 `(("python2-ipaddress" ,python2-ipaddress)
12268 ,@(package-propagated-inputs base))))))
12269
12270(define-public python-prompt-toolkit
12271 (package
12272 (name "python-prompt-toolkit")
12273 (version "1.0.9")
12274 (source
12275 (origin
12276 (method url-fetch)
12277 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
12278 (sha256
12279 (base32
12280 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
12281 (build-system python-build-system)
12282 (arguments
12283 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
12284 (propagated-inputs
12285 `(("python-wcwidth" ,python-wcwidth)
12286 ("python-six" ,python-six)
12287 ("python-pygments" ,python-pygments)))
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.")
12296 (license license:bsd-3)))
12297
12298(define-public python2-prompt-toolkit
12299 (package-with-python2 python-prompt-toolkit))
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)
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)))
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.")
12323 (license license:expat)))
12324
12325(define-public python2-jedi
12326 (package-with-python2 python-jedi))
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)
12339 (arguments
12340 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
12341 (propagated-inputs
12342 `(("python-docopt" ,python-docopt)
12343 ("python-jedi" ,python-jedi)
12344 ("python-prompt-toolkit" ,python-prompt-toolkit)
12345 ("python-pygments" ,python-pygments)))
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.")
12353 (license license:bsd-3)
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"))))
12361
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)))
12385 (propagated-inputs
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.")
12395 (license license:isc)))
12396
12397(define-public python2-requests-oauthlib
12398 (package-with-python2 python-requests-oauthlib))
12399
12400(define-public python-stem
12401 (package
12402 (name "python-stem")
12403 (version "1.5.4")
12404 (source
12405 (origin
12406 (method url-fetch)
12407 (uri (pypi-uri "stem" version))
12408 (sha256
12409 (base32
12410 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
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)))
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.")
12429 (license license:lgpl3)))
12430
12431(define-public python2-stem
12432 (package-with-python2 python-stem))
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)
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://")))))))
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.")
12459 (license license:bsd-3)))
12460
12461(define-public python2-pyserial
12462 (package-with-python2 python-pyserial))
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
12489 `(("pkg-config" ,pkg-config)
12490 ("python-cython" ,python-cython)))
12491 (inputs
12492 `(("gstreamer" ,gstreamer)
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")
12512 (version (string-append "1.9.1-" revision "."
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))
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)
12539 (propagated-inputs
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)
12552 (propagated-inputs
12553 `(("python2-enum34" ,python2-enum34)
12554 ,@(package-propagated-inputs base))))))
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)
12567 (arguments
12568 '(;; The tests require some extra resources to be downloaded.
12569 ;; TODO Try packaging these resources.
12570 #:tests? #f))
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.")
12577 (license license:asl2.0)))
12578
12579(define-public python2-nltk
12580 (package-with-python2 python-nltk))
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)
12593 (propagated-inputs
12594 `(("python-certifi" ,python-certifi)))
12595 (home-page "https://github.com/mongodb/mongo-python-driver")
12596 (synopsis "Python driver for MongoDB")
12597 (description "Python driver for MongoDB.")
12598 (license license:asl2.0)))
12599
12600(define-public python2-pymongo
12601 (package-with-python2 python-pymongo))
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.")
12620 (license license:expat)))
12621
12622(define-public python2-sh
12623 (package-with-python2 python-sh))
12624
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
12638 `(("python-pytest" ,python-pytest)))
12639 (propagated-inputs
12640 `(("python-requests" ,python-requests)
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
12650 (package-with-python2 python-consul))
12651
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)
12666 (propagated-inputs
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.")
12674 (license license:bsd-3)))
12675
12676(define-public python2-schematics
12677 (package-with-python2 python-schematics))
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.")
12696 (license license:expat)))
12697
12698(define-public python2-publicsuffix
12699 (package-with-python2 python-publicsuffix))
12700
12701(define-public python-publicsuffix2
12702 (package
12703 (name "python-publicsuffix2")
12704 (version "2.20160818")
12705 (source
12706 (origin
12707 (method url-fetch)
12708 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12709 (sha256
12710 (base32
12711 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
12712 (build-system python-build-system)
12713 (arguments
12714 '(#:tests? #f)) ; The test suite requires network access.
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.")
12719 (license (list license:expat license:mpl2.0))))
12720
12721(define-public python2-publicsuffix2
12722 (package-with-python2 python-publicsuffix2))
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)
12735 (propagated-inputs
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'"
12742 (home-page "https://github.com/seomoz/url-py")
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)
12751 (propagated-inputs
12752 `(("python2-publicsuffix" ,python2-publicsuffix))))))
12753
12754(define-public python-freezegun
12755 (package
12756 (name "python-freezegun")
12757 (version "0.3.8")
12758 (source
12759 (origin
12760 (method url-fetch)
12761 (uri (pypi-uri "freezegun" version))
12762 (sha256
12763 (base32
12764 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
12765 (build-system python-build-system)
12766 (native-inputs
12767 `(("python-mock" ,python-mock)
12768 ("python-nose" ,python-nose)
12769 ("python-coverage" ,python-coverage)))
12770 (propagated-inputs
12771 `(("python-six" ,python-six)
12772 ("python-dateutil" ,python-dateutil)))
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
12788 (package-with-python2 python-freezegun))
12789
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))
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.")
12866 (license license:asl2.0)))
12867
12868(define-public python2-cachecontrol
12869 (package-with-python2 python-cachecontrol))
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.")
12888 (license license:ncsa)))
12889
12890(define-public python2-lit
12891 (package-with-python2 python-lit))
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
12905 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
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.")
12913 (license license:expat)))
12914
12915(define-public python2-pytest-pep8
12916 (package-with-python2 python-pytest-pep8))
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
12930 `(#:phases
12931 (modify-phases %standard-phases
12932 (delete 'check)
12933 (add-after 'install 'check
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)
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.")
12949 (license license:expat)))
12950
12951(define-public python2-pytest-flakes
12952 (package-with-python2 python-pytest-flakes))
12953
12954(define-public python-natsort
12955 (package
12956 (name "python-natsort")
12957 (version "5.0.2")
12958 (source (origin
12959 (method url-fetch)
12960 (uri (pypi-uri "natsort" version))
12961 (sha256
12962 (base32
12963 "0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
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
12997 `(("python2-pathlib" ,python2-pathlib)
12998 ("python2-mock" ,python2-mock)
12999 ("python2-enum34" ,python2-enum34)
13000 ,@(package-native-inputs base))))))
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)
13014 (propagated-inputs
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.")
13024 (license license:lgpl3+)))
13025
13026(define-public python2-glances
13027 (package-with-python2 python-glances))
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
13042 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
13043 #:phases
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)))
13054 (propagated-inputs
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.")
13064 (license license:expat)))
13065
13066(define-public python2-graphql-core
13067 (package-with-python2 python-graphql-core))
13068
13069(define-public python-graphql-relay
13070 (package
13071 (name "python-graphql-relay")
13072 (version "0.4.5")
13073 (source
13074 (origin
13075 (method url-fetch)
13076 (uri (pypi-uri "graphql-relay" version))
13077 (sha256
13078 (base32
13079 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
13080 (build-system python-build-system)
13081 (native-inputs
13082 `(("python-pytest" ,python-pytest)))
13083 (propagated-inputs
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.")
13095 (license license:expat)))
13096
13097(define-public python2-graphql-relay
13098 (package-with-python2 python-graphql-relay))
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)))
13118 (propagated-inputs
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
13138 `(("python2-sqlalchemy" ,python2-sqlalchemy)
13139 ,@(package-native-inputs base))))))
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
13154 (propagated-inputs
13155 `(("python-bcrypt" ,python-bcrypt)
13156 ("python-click" ,python-click)
13157 ("python-consul" ,python-consul)
13158 ("python-graphene" ,python-graphene)
13159 ("python-jinja2" ,python-jinja2)
13160 ("python-peewee" ,python-peewee)
13161 ("python-pika" ,python-pika)
13162 ("python-tornado" ,python-tornado)
13163 ("python-wtforms" ,python-wtforms)))
13164 (native-inputs
13165 `(("python-nose2" ,python-nose2)))
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)))
13173
13174(define-public python-snowballstemmer
13175 (package
13176 (name "python-snowballstemmer")
13177 (version "1.2.1")
13178 (source (origin
13179 (method url-fetch)
13180 (uri (pypi-uri "snowballstemmer" version))
13181 (sha256
13182 (base32
13183 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
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
13198(define-public python-sphinx-cloud-sptheme
13199 (package
13200 (name "python-sphinx-cloud-sptheme")
13201 (version "1.8.0")
13202 (source (origin
13203 (method url-fetch)
13204 (uri (pypi-uri "cloud_sptheme" version))
13205 (sha256
13206 (base32
13207 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
13208 (build-system python-build-system)
13209 ;; FIXME: The 'pypi' release archive does not contain tests.
13210 (arguments '(#:tests? #f))
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
13216related extensions.")
13217 (license license:bsd-3)))
13218
13219(define-public python2-sphinx-cloud-sptheme
13220 (package-with-python2 python-sphinx-cloud-sptheme))
13221
13222(define-public python-sphinx-alabaster-theme
13223 (package
13224 (name "python-sphinx-alabaster-theme")
13225 (version "0.7.9")
13226 (source (origin
13227 (method url-fetch)
13228 (uri (pypi-uri "alabaster" version))
13229 (sha256
13230 (base32
13231 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
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
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))
13259 (propagated-inputs
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.")
13265 (license license:expat)))
13266
13267(define-public python2-betamax
13268 (package-with-python2 python-betamax))
13269
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
13294(define-public python-s3transfer
13295 (package
13296 (name "python-s3transfer")
13297 (version "0.1.11")
13298 (source (origin
13299 (method url-fetch)
13300 (uri (pypi-uri "s3transfer" version))
13301 (sha256
13302 (base32
13303 "0yfrfnf404cxzn3iswibqjxklsl0b1lwgqiml6pwiqj79a7zbwbn"))))
13304 (build-system python-build-system)
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")))))))
13313 (native-inputs
13314 `(("python-docutils" ,python-docutils)
13315 ("python-mock" ,python-mock)
13316 ("python-nose" ,python-nose)))
13317 (propagated-inputs
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)
13332 ,@(package-native-inputs base))))))
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))))))
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.")
13431 (license license:expat)))
13432
13433(define-public python2-validictory
13434 (package-with-python2 python-validictory))
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
13449 `(("python-dateutil" ,python-dateutil)))
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)))
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)))
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)))
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
13527 "https://github.com/mitsuhiko/flask-sqlalchemy")
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)))
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))
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)
13579 (arguments
13580 '(;; Test files are not distributed on PyPi:
13581 ;; https://github.com/shibukawa/imagesize_py/issues/7
13582 #:tests? #f))
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.")
13588 (license license:expat)))
13589
13590(define-public python2-imagesize
13591 (package-with-python2 python-imagesize))
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
13601 (url "https://github.com/tgalal/python-axolotl-curve25519")
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=/")))
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
13619 license:bsd-3)))) ; curve/curve25519-donna.c
13620
13621(define-public python2-axolotl-curve25519
13622 (package-with-python2 python-axolotl-curve25519))
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"))
13646 #t)))))
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))
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)
13674 (arguments
13675 '(#:phases
13676 (modify-phases %standard-phases
13677 (replace 'check
13678 (lambda _
13679 (zero? (system* "python" "test3.py")))))))
13680 (home-page "https://github.com/gfxmonk/termstyle")
13681 (synopsis "Console text coloring for Python")
13682 (description "This package provides console text coloring for Python.")
13683 (license license:bsd-3)))
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)))
13717
13718(define-public python2-rednose
13719 (package-with-python2 python-rednose))
13720
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)
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")))))))
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)))
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))
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))
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)
13820 (native-inputs
13821 `(("python-pexpect" ,python-pexpect)
13822 ("tcsh" ,tcsh)
13823 ("bash-full" ,bash))) ;full Bash for 'test_file_completion'
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))
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))
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"))))
13904
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))
13950
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)
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")))))))
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))
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)
14001 (arguments
14002 ;; FIXME: Tests require packaging 'pymaging'.
14003 '(#:tests? #f))
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))
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)))
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)))
14063
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
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))
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))
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)))
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)))
14200
14201(define-public python2-cliapp
14202 (package
14203 (name "python2-cliapp")
14204 (version "1.20170823")
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
14213 "1i9gik0xrj6jmi95s5w988jl1y265baz5xm5pbqdyvsh8h9ln6yq"))))
14214 (build-system python-build-system)
14215 (arguments
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)))
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
14242(define-public python2-ttystatus
14243 (package
14244 (name "python2-ttystatus")
14245 (version "0.35")
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
14254 "0vivqbw7ddhsq1zj3g9cvvv4f0phl0pis2smsnwcr2szz2fk3hl6"))))
14255 (build-system python-build-system)
14256 (native-inputs
14257 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
14258 ("python2-pep8" ,python2-pep8)))
14259 (arguments
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")))))))
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+)))
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+)))
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"))
14316 (patches (search-patches
14317 "python2-larch-coverage-4.0a6-compatibility.patch"))
14318 (sha256
14319 (base32
14320 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
14321 (build-system python-build-system)
14322 (arguments
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)))
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+)))
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))
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))
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))
14426
14427(define-public python-astroid
14428 (package
14429 (name "python-astroid")
14430 (version "1.5.3")
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
14439 "0isn5p7f9n48hmksgbrj7dkm9dyglnayzn5jngk37qywg8a74ngn"))))
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.")
14464 (license license:lgpl2.1+)
14465 (properties `((python2-variant . ,(delay python2-astroid))))))
14466
14467(define-public python2-astroid
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))))))
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))
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)))
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))
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
14582unit tests and failing them if the unit test module does not exercise all
14583statements in the module it tests.")
14584 (license license:gpl3+)))
14585
14586(define-public python-pylint
14587 (package
14588 (name "python-pylint")
14589 (version "1.7.2")
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
14598 "0mzn1czhf1mgr2wiqfihb274sja02h899b85kywdpivppa9nwrmp"))))
14599 (build-system python-build-system)
14600 (native-inputs
14601 `(("python-pytest" ,python-pytest)
14602 ("python-pytest-runner" ,python-pytest-runner)
14603 ("python-tox" ,python-tox)))
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.")
14636 (properties `((python2-variant . ,(delay python2-pylint))))
14637 (license license:gpl2+)))
14638
14639(define-public python2-pylint
14640 (let ((pylint (package-with-python2
14641 (strip-python2-variant python-pylint))))
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))))))
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))
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))
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"))))))
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))
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)))
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)))
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))
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))
14862
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
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))
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))
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)))
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))
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))
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))
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))
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))
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))
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))
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))
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)))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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+)))
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))
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)))
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))
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))
15761
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
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))
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))
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))
15875
15876(define-public python-marshmallow
15877 (package
15878 (name "python-marshmallow")
15879 (version "3.0.0b3")
15880 (source
15881 (origin
15882 (method url-fetch)
15883 (uri (pypi-uri "marshmallow" version))
15884 (sha256
15885 (base32
15886 "07mcrij1yvk85lvgx44wwr9pc80xryghvlgayb057g1cazcypysd"))))
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))
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))
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))
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))
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))
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))
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))
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))
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)))
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))
16181
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
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))
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))
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))
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))
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))