projects/guix·blob version-0.13.0 · refs

14624 lines · 518.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <[email protected]>
3;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <[email protected]>
4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <[email protected]>
5;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
6;;; Copyright © 2014, 2017 Eric Bavier <[email protected]>
7;;; Copyright © 2014, 2015 Federico Beffa <[email protected]>
8;;; Copyright © 2015 Omar Radwan <[email protected]>
9;;; Copyright © 2015 Pierre-Antoine Rault <[email protected]>
10;;; Copyright © 2015, 2016 Ricardo Wurmus <[email protected]>
11;;; Copyright © 2015, 2016 Christopher Allan Webber <[email protected]>
12;;; Copyright © 2015 Eric Dvorsak <[email protected]>
13;;; Copyright © 2015, 2016 David Thompson <[email protected]>
14;;; Copyright © 2015, 2016, 2017 Leo Famulari <[email protected]>
15;;; Copyright © 2015 Ben Woodcroft <[email protected]>
16;;; Copyright © 2015, 2016 Erik Edrosa <[email protected]>
17;;; Copyright © 2015, 2016, 2017 Efraim Flashner <[email protected]>
18;;; Copyright © 2015 Kyle Meyer <[email protected]>
19;;; Copyright © 2015, 2016 Chris Marusich <[email protected]>
20;;; Copyright © 2016 Danny Milosavljevic <[email protected]>
21;;; Copyright © 2016 Lukas Gradl <[email protected]>
22;;; Copyright © 2016 Hartmut Goebel <[email protected]>
23;;; Copyright © 2016 Daniel Pimentel <[email protected]>
24;;; Copyright © 2016 Sou Bunnbu <[email protected]>
25;;; Copyright © 2016 Troy Sankey <[email protected]>
26;;; Copyright © 2016, 2017 ng0 <[email protected]>
27;;; Copyright © 2016 Dylan Jeffers <sapientech@[email protected]>
28;;; Copyright © 2016 David Craven <[email protected]>
29;;; Copyright © 2016, 2017 Marius Bakke <[email protected]>
30;;; Copyright © 2016 Stefan Reichoer <[email protected]>
31;;; Copyright © 2016 Dylan Jeffers <sapientech@[email protected]>
32;;; Copyright © 2016 Alex Vong <[email protected]>
33;;; Copyright © 2016, 2017 Arun Isaac <[email protected]>
34;;; Copyright © 2016, 2017 Julien Lepiller <[email protected]>
35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <[email protected]>
36;;; Copyright © 2016, 2017 Thomas Danckaert <[email protected]>
37;;; Copyright © 2017 Carlo Zancanaro <[email protected]>
38;;; Copyright © 2017 Frederick M. Muriithi <[email protected]>
39;;; Copyright © 2017 Adriano Peluso <[email protected]>
40;;; Copyright © 2017 Ben Sturmfels <[email protected]>
41;;; Copyright © 2017 Mathieu Othacehe <[email protected]>
42;;;
43;;; This file is part of GNU Guix.
44;;;
45;;; GNU Guix is free software; you can redistribute it and/or modify it
46;;; under the terms of the GNU General Public License as published by
47;;; the Free Software Foundation; either version 3 of the License, or (at
48;;; your option) any later version.
49;;;
50;;; GNU Guix is distributed in the hope that it will be useful, but
51;;; WITHOUT ANY WARRANTY; without even the implied warranty of
52;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53;;; GNU General Public License for more details.
54;;;
55;;; You should have received a copy of the GNU General Public License
56;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
57
58(define-module (gnu packages python)
59 #:use-module ((guix licenses) #:prefix license:)
60 #:use-module (gnu packages)
61 #:use-module (gnu packages algebra)
62 #:use-module (gnu packages adns)
63 #:use-module (gnu packages attr)
64 #:use-module (gnu packages backup)
65 #:use-module (gnu packages bash)
66 #:use-module (gnu packages compression)
67 #:use-module (gnu packages databases)
68 #:use-module (gnu packages django)
69 #:use-module (gnu packages file)
70 #:use-module (gnu packages fontutils)
71 #:use-module (gnu packages gcc)
72 #:use-module (gnu packages ghostscript)
73 #:use-module (gnu packages gl)
74 #:use-module (gnu packages glib)
75 #:use-module (gnu packages graphviz)
76 #:use-module (gnu packages gstreamer)
77 #:use-module (gnu packages gtk)
78 #:use-module (gnu packages icu4c)
79 #:use-module (gnu packages image)
80 #:use-module (gnu packages imagemagick)
81 #:use-module (gnu packages libevent)
82 #:use-module (gnu packages libffi)
83 #:use-module (gnu packages linux)
84 #:use-module (gnu packages man)
85 #:use-module (gnu packages maths)
86 #:use-module (gnu packages multiprecision)
87 #:use-module (gnu packages networking)
88 #:use-module (gnu packages ncurses)
89 #:use-module (gnu packages openstack)
90 #:use-module (gnu packages password-utils)
91 #:use-module (gnu packages pcre)
92 #:use-module (gnu packages perl)
93 #:use-module (gnu packages pkg-config)
94 #:use-module (gnu packages protobuf)
95 #:use-module (gnu packages qt)
96 #:use-module (gnu packages readline)
97 #:use-module (gnu packages sdl)
98 #:use-module (gnu packages shells)
99 #:use-module (gnu packages statistics)
100 #:use-module (gnu packages tex)
101 #:use-module (gnu packages texinfo)
102 #:use-module (gnu packages tls)
103 #:use-module (gnu packages version-control)
104 #:use-module (gnu packages video)
105 #:use-module (gnu packages web)
106 #:use-module (gnu packages base)
107 #:use-module (gnu packages xml)
108 #:use-module (gnu packages xorg)
109 #:use-module (gnu packages xdisorg)
110 #:use-module (gnu packages zip)
111 #:use-module (gnu packages tcl)
112 #:use-module (gnu packages bdw-gc)
113 #:use-module (guix packages)
114 #:use-module (guix download)
115 #:use-module (guix git-download)
116 #:use-module (guix utils)
117 #:use-module (guix build-system gnu)
118 #:use-module (guix build-system cmake)
119 #:use-module (guix build-system python)
120 #:use-module (guix build-system trivial)
121 #:use-module (srfi srfi-1))
122
123(define-public python-2.7
124 (package
125 (name "python")
126 (version "2.7.13")
127 (source
128 (origin
129 (method url-fetch)
130 (uri (string-append "https://www.python.org/ftp/python/"
131 version "/Python-" version ".tar.xz"))
132 (sha256
133 (base32
134 "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m"))
135 (patches (search-patches "python-2.7-search-paths.patch"
136 "python-2-deterministic-build-info.patch"
137 "python-2.7-site-prefixes.patch"
138 "python-2.7-source-date-epoch.patch"
139 "python-2.7-getentropy-on-old-kernels.patch"))
140 (modules '((guix build utils)))
141 ;; suboptimal to delete failing tests here, but if we delete them in the
142 ;; arguments then we need to make sure to strip out that phase when it
143 ;; gets inherited by python and python-minimal.
144 (snippet
145 '(begin
146 (for-each delete-file
147 '("Lib/test/test_compileall.py"
148 "Lib/test/test_ctypes.py" ; fails on mips64el
149 "Lib/test/test_distutils.py"
150 "Lib/test/test_import.py"
151 "Lib/test/test_shutil.py"
152 "Lib/test/test_socket.py"
153 "Lib/test/test_subprocess.py"))
154 #t))))
155 (outputs '("out"
156 "tk")) ;tkinter; adds 50 MiB to the closure
157 (build-system gnu-build-system)
158 (arguments
159 `(;; 356 tests OK.
160 ;; 6 tests failed:
161 ;; test_compileall test_distutils test_import test_shutil test_socket
162 ;; test_subprocess
163 ;; 39 tests skipped:
164 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
165 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
166 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
167 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
168 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
169 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
170 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
171 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
172 ;; test_winreg test_winsound test_zipfile64
173 ;; 4 skips unexpected on linux2:
174 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
175 #:test-target "test"
176 #:configure-flags
177 (list "--enable-shared" ;allow embedding
178 "--with-system-ffi" ;build ctypes
179 "--with-ensurepip=install" ;install pip and setuptools
180 "--enable-unicode=ucs4"
181 (string-append "LDFLAGS=-Wl,-rpath="
182 (assoc-ref %outputs "out") "/lib"))
183
184 #:modules ((ice-9 ftw) (ice-9 match)
185 (guix build utils) (guix build gnu-build-system))
186 #:phases
187 (modify-phases %standard-phases
188 (add-before
189 'configure 'patch-lib-shells
190 (lambda _
191 ;; Filter for existing files, since some may not exist in all
192 ;; versions of python that are built with this recipe.
193 (substitute* (filter file-exists?
194 '("Lib/subprocess.py"
195 "Lib/popen2.py"
196 "Lib/distutils/tests/test_spawn.py"
197 "Lib/test/test_subprocess.py"))
198 (("/bin/sh") (which "sh")))
199
200 ;; Use zero as the timestamp in .pyc files so that builds are
201 ;; deterministic. TODO: Remove it when this variable is set in
202 ;; gnu-build-system.scm.
203 (setenv "SOURCE_DATE_EPOCH" "1")
204 #t))
205 (add-before 'configure 'do-not-record-configure-flags
206 (lambda* (#:key configure-flags #:allow-other-keys)
207 ;; Remove configure flags from the installed '_sysconfigdata.py'
208 ;; and 'Makefile' so we don't end up keeping references to the
209 ;; build tools.
210 ;;
211 ;; Preserve at least '--with-system-ffi' since otherwise the
212 ;; thing tries to build libffi, fails, and we end up with a
213 ;; Python that lacks ctypes.
214 (substitute* "configure"
215 (("^CONFIG_ARGS=.*$")
216 (format #f "CONFIG_ARGS='~a'\n"
217 (if (member "--with-system-ffi" configure-flags)
218 "--with-system-ffi"
219 ""))))
220 #t))
221 (add-before
222 'check 'pre-check
223 (lambda _
224 ;; 'Lib/test/test_site.py' needs a valid $HOME
225 (setenv "HOME" (getcwd))
226 #t))
227 (add-after
228 'unpack 'set-source-file-times-to-1980
229 ;; XXX One of the tests uses a ZIP library to pack up some of the
230 ;; source tree, and fails with "ZIP does not support timestamps
231 ;; before 1980". Work around this by setting the file times in the
232 ;; source tree to sometime in early 1980.
233 (lambda _
234 (let ((circa-1980 (* 10 366 24 60 60)))
235 (ftw "." (lambda (file stat flag)
236 (utime file circa-1980 circa-1980)
237 #t))
238 #t)))
239 (add-after 'install 'remove-tests
240 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
241 ;; because these files are used by some libraries out there.
242 (lambda* (#:key outputs #:allow-other-keys)
243 (let ((out (assoc-ref outputs "out")))
244 (match (scandir (string-append out "/lib")
245 (lambda (name)
246 (string-prefix? "python" name)))
247 ((pythonX.Y)
248 (let ((testdir (string-append out "/lib/" pythonX.Y
249 "/test")))
250 (with-directory-excursion testdir
251 (for-each delete-file-recursively
252 (scandir testdir
253 (match-lambda
254 ((or "." "..") #f)
255 (file
256 (not
257 (string-prefix? "test_support."
258 file))))))
259 (call-with-output-file "__init__.py" (const #t))
260 #t)))))))
261 (add-before 'strip 'make-libraries-writable
262 (lambda* (#:key outputs #:allow-other-keys)
263 ;; Make .so files writable so they can be stripped.
264 (let ((out (assoc-ref outputs "out")))
265 (for-each (lambda (file)
266 (chmod file #o755))
267 (find-files (string-append out "/lib")
268 "\\.so"))
269 #t)))
270 (add-after 'install 'move-tk-inter
271 (lambda* (#:key outputs #:allow-other-keys)
272 ;; When Tkinter support is built move it to a separate output so
273 ;; that the main output doesn't contain a reference to Tcl/Tk.
274 (let ((out (assoc-ref outputs "out"))
275 (tk (assoc-ref outputs "tk")))
276 (when tk
277 (match (find-files out "tkinter.*\\.so")
278 ((tkinter.so)
279 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
280 ;; want it under TK/lib/pythonX.Y/site-packages.
281 (let* ((len (string-length out))
282 (target (string-append
283 tk "/"
284 (string-drop
285 (dirname (dirname tkinter.so))
286 len)
287 "/site-packages")))
288 (install-file tkinter.so target)
289 (delete-file tkinter.so)))))
290 #t))))))
291 (inputs
292 `(("bzip2" ,bzip2)
293 ("gdbm" ,gdbm)
294 ("libffi" ,libffi) ; for ctypes
295 ("sqlite" ,sqlite) ; for sqlite extension
296 ("openssl" ,openssl)
297 ("readline" ,readline)
298 ("zlib" ,zlib)
299 ("tcl" ,tcl)
300 ("tk" ,tk))) ; for tkinter
301 (native-inputs
302 `(("pkg-config" ,pkg-config)))
303 (native-search-paths
304 (list (search-path-specification
305 (variable "PYTHONPATH")
306 (files '("lib/python2.7/site-packages")))))
307 (home-page "https://www.python.org")
308 (synopsis "High-level, dynamically-typed programming language")
309 (description
310 "Python is a remarkably powerful dynamic programming language that
311is used in a wide variety of application domains. Some of its key
312distinguishing features include: clear, readable syntax; strong
313introspection capabilities; intuitive object orientation; natural
314expression of procedural code; full modularity, supporting hierarchical
315packages; exception-based error handling; and very high level dynamic
316data types.")
317 (license license:psfl)))
318
319;; Current 2.x version.
320(define-public python-2 python-2.7)
321
322(define-public python-3.5
323 (package (inherit python-2)
324 (version "3.5.3")
325 (source (origin
326 (method url-fetch)
327 (uri (string-append "https://www.python.org/ftp/python/"
328 version "/Python-" version ".tar.xz"))
329 (patches (search-patches
330 "python-fix-tests.patch"
331 "python-3.5-fix-tests.patch"
332 "python-3.5-getentropy-on-old-kernels.patch"
333 "python-3-deterministic-build-info.patch"
334 "python-3-search-paths.patch"))
335 (patch-flags '("-p0"))
336 (sha256
337 (base32
338 "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
339 (snippet
340 '(delete-file
341 "Lib/ctypes/test/test_win32.py")))) ; fails on aarch64
342 (arguments (substitute-keyword-arguments (package-arguments python-2)
343 ((#:tests? _) #t)))
344 (native-search-paths
345 (list (search-path-specification
346 (variable "PYTHONPATH")
347 (files (list (string-append "lib/python"
348 (version-major+minor version)
349 "/site-packages"))))))))
350
351;; Current 3.x version.
352(define-public python-3 python-3.5)
353
354;; Current major version.
355(define-public python python-3)
356
357;; Minimal variants of Python, mostly used to break the cycle between Tk and
358;; Python (Tk -> libxcb -> Python.)
359
360(define-public python2-minimal
361 (package (inherit python-2)
362 (name "python-minimal")
363 (outputs '("out"))
364
365 ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
366 ;; is invoked upon 'make install'. 'pip' also expects 'ctypes' and thus
367 ;; libffi.
368 (inputs `(("libffi" ,libffi)
369 ("zlib" ,zlib)))))
370
371(define-public python-minimal
372 (package (inherit python)
373 (name "python-minimal")
374 (outputs '("out"))
375
376 ;; Build fails due to missing ctypes without libffi.
377 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
378 ;; zlib is required by 'zipimport', used by pip.
379 (inputs `(("libffi" ,libffi)
380 ("openssl" ,openssl)
381 ("zlib" ,zlib)))))
382
383(define* (wrap-python3 python
384 #:optional
385 (name (string-append (package-name python) "-wrapper")))
386 (package (inherit python)
387 (name name)
388 (source #f)
389 (build-system trivial-build-system)
390 (outputs '("out"))
391 (inputs `(("bash" ,bash)))
392 (propagated-inputs `(("python" ,python)))
393 (arguments
394 `(#:modules ((guix build utils))
395 #:builder
396 (begin
397 (use-modules (guix build utils))
398 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
399 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
400 (mkdir-p bin)
401 (for-each
402 (lambda (old new)
403 (symlink (string-append python old)
404 (string-append bin "/" new)))
405 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
406 `("python" ,"pydoc" ,"idle" ,"pip"))
407 ;; python-config outputs search paths based upon its location,
408 ;; use a bash wrapper to avoid changing its outputs.
409 (let ((bash (string-append (assoc-ref %build-inputs "bash")
410 "/bin/bash"))
411 (old (string-append python "python3-config"))
412 (new (string-append bin "/python-config")))
413 (with-output-to-file new
414 (lambda ()
415 (format #t "#!~a~%" bash)
416 (format #t "exec \"~a\" \"$@\"~%" old)
417 (chmod new #o755)
418 #t)))))))
419 (synopsis "Wrapper for the Python 3 commands")
420 (description
421 "This package provides wrappers for the commands of Python@tie{}3.x such
422that they can be invoked under their usual name---e.g., @command{python}
423instead of @command{python3}.")))
424
425(define-public python-wrapper (wrap-python3 python))
426(define-public python-minimal-wrapper (wrap-python3 python-minimal))
427
428(define-public python-psutil
429 (package
430 (name "python-psutil")
431 (version "4.3.0")
432 (source
433 (origin
434 (method url-fetch)
435 (uri (pypi-uri "psutil" version))
436 (sha256
437 (base32
438 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
439 (build-system python-build-system)
440 (arguments
441 ;; FIXME: some tests does not return and times out.
442 '(#:tests? #f))
443 (home-page "https://www.github.com/giampaolo/psutil")
444 (synopsis "Library for retrieving information on running processes")
445 (description
446 "psutil (Python system and process utilities) is a library for retrieving
447information on running processes and system utilization (CPU, memory, disks,
448network) in Python. It is useful mainly for system monitoring, profiling and
449limiting process resources and management of running processes. It implements
450many functionalities offered by command line tools such as: ps, top, lsof,
451netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
452pidof, tty, taskset, pmap.")
453 (license license:bsd-3)))
454
455(define-public python2-psutil
456 (package-with-python2 python-psutil))
457
458(define-public python-passlib
459 (package
460 (name "python-passlib")
461 (version "1.7.1")
462 (source
463 (origin
464 (method url-fetch)
465 (uri (pypi-uri "passlib" version))
466 (sha256
467 (base32
468 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
469 (build-system python-build-system)
470 (native-inputs
471 `(("python-nose" ,python-nose)))
472 (propagated-inputs
473 `(("python-py-bcrypt" ,python-py-bcrypt)))
474 (arguments
475 `(#:phases
476 (alist-cons-before
477 'check 'set-PYTHON_EGG_CACHE
478 ;; some tests require access to "$HOME/.cython"
479 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
480 %standard-phases)))
481 (home-page "https://bitbucket.org/ecollins/passlib")
482 (synopsis
483 "Comprehensive password hashing framework")
484 (description
485 "Passlib is a password hashing library for Python 2 & 3, which provides
486cross-platform implementations of over 30 password hashing algorithms, as well
487as a framework for managing existing password hashes. It's designed to be
488useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
489to providing full-strength password hashing for multi-user application.")
490 (license license:bsd-3)))
491
492(define-public python2-passlib
493 (package-with-python2 python-passlib))
494
495(define-public python-py-bcrypt
496 (package
497 (name "python-py-bcrypt")
498 (version "0.4")
499 (source
500 (origin
501 (method url-fetch)
502 (uri (string-append
503 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
504 version
505 ".tar.gz"))
506 (sha256
507 (base32
508 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
509 (build-system python-build-system)
510 (home-page "https://code.google.com/p/py-bcrypt")
511 (synopsis
512 "Bcrypt password hashing and key derivation")
513 (description
514 "A python wrapper of OpenBSD's Blowfish password hashing code. This
515system hashes passwords using a version of Bruce Schneier's Blowfish block
516cipher with modifications designed to raise the cost of off-line password
517cracking and frustrate fast hardware implementation. The computation cost of
518the algorithm is parametised, so it can be increased as computers get faster.
519The intent is to make a compromise of a password database less likely to
520result in an attacker gaining knowledge of the plaintext passwords (e.g. using
521John the Ripper).")
522 ;; "sha2.c" is under BSD-3;
523 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
524 ;; the rest is under ISC.
525 (license (list license:isc license:bsd-3 license:bsd-4))))
526
527(define-public python2-py-bcrypt
528 (package-with-python2 python-py-bcrypt))
529
530
531(define-public python-paramiko
532 (package
533 (name "python-paramiko")
534 (version "1.17.4")
535 (source
536 (origin
537 (method url-fetch)
538 (uri (pypi-uri "paramiko" version))
539 (sha256
540 (base32
541 "1rs2qcmskcmq66q6g5al08wa41l9am0fad5r719m8wf91msyylqw"))))
542 (build-system python-build-system)
543 (arguments
544 '(;; FIXME: One test fails with "EOFError not raised by connect".
545 #:tests? #f))
546 ;; #:phases
547 ;; (modify-phases %standard-phases
548 ;; (replace 'check
549 ;; (lambda _
550 ;; (zero? (system* "python" "test.py")))))))
551 (propagated-inputs
552 `(("python-pycrypto" ,python-pycrypto)
553 ("python-ecdsa" ,python-ecdsa)))
554 (home-page "http://www.paramiko.org/")
555 (synopsis "SSHv2 protocol library")
556 (description "Paramiko is a python implementation of the SSHv2 protocol,
557providing both client and server functionality. While it leverages a Python C
558extension for low level cryptography (PyCrypto), Paramiko itself is a pure
559Python interface around SSH networking concepts.")
560 (license license:lgpl2.1+)))
561
562(define-public python2-paramiko
563 (package-with-python2 python-paramiko))
564
565
566(define-public python-httplib2
567 (package
568 (name "python-httplib2")
569 (version "0.9.2")
570 (source
571 (origin
572 (method url-fetch)
573 (uri (pypi-uri "httplib2" version))
574 (sha256
575 (base32
576 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
577 (build-system python-build-system)
578 (home-page "https://github.com/jcgregorio/httplib2")
579 (synopsis "Comprehensive HTTP client library")
580 (description
581 "A comprehensive HTTP client library supporting many features left out of
582other HTTP libraries.")
583 (license license:expat)))
584
585(define-public python2-httplib2
586 (package-with-python2 python-httplib2))
587
588(define-public python-ecdsa
589 (package
590 (name "python-ecdsa")
591 (version "0.13")
592 (source
593 (origin
594 (method url-fetch)
595 (uri (string-append
596 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
597 version
598 ".tar.gz"))
599 (sha256
600 (base32
601 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
602 (build-system python-build-system)
603 (inputs
604 `(("openssl" ,openssl)))
605 (home-page
606 "https://github.com/warner/python-ecdsa")
607 (synopsis
608 "ECDSA cryptographic signature library (pure python)")
609 (description
610 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
611Curve Digital Signature Algorithm), implemented purely in Python. With this
612library, you can quickly create keypairs (signing key and verifying key), sign
613messages, and verify the signatures. The keys and signatures are very short,
614making them easy to handle and incorporate into other protocols.")
615 (license license:expat)))
616
617(define-public python2-ecdsa
618 (package-with-python2 python-ecdsa))
619
620(define-public python-ccm
621 (package
622 (name "python-ccm")
623 (version "2.1.6")
624 (source
625 (origin
626 (method url-fetch)
627 (uri (pypi-uri "ccm" version))
628 (sha256
629 (base32
630 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
631 (build-system python-build-system)
632 (propagated-inputs
633 `(("python-pyyaml" ,python-pyyaml)
634 ;; Not listed in setup.py, but used in ccmlib/node.py for full
635 ;; functionality
636 ("python-psutil" ,python-psutil)
637 ("python-six" ,python-six)))
638 (home-page "https://github.com/pcmanus/ccm")
639 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
640localhost")
641 (description "Cassandra Cluster Manager is a development tool for testing
642local Cassandra clusters. It creates, launches and removes Cassandra clusters
643on localhost.")
644 (license license:asl2.0)))
645
646(define-public python2-ccm
647 (package-with-python2 python-ccm))
648
649(define-public python-pytz
650 (package
651 (name "python-pytz")
652 (version "2016.10")
653 (source
654 (origin
655 (method url-fetch)
656 (uri (pypi-uri "pytz" version ".tar.bz2"))
657 (sha256
658 (base32
659 "0az099cyp6p5xbsvfcdacj4hvxncbwm2ayn3h55mcp07zb2b45kh"))))
660 (build-system python-build-system)
661 (arguments `(#:tests? #f)) ; no test target
662 (home-page "http://pythonhosted.org/pytz")
663 (synopsis "Python timezone library")
664 (description
665 "This library allows accurate and cross platform timezone calculations
666using Python 2.4 or higher and provides access to the Olson timezone database.")
667 (license license:expat)))
668
669(define-public python2-pytz
670 (package-with-python2 python-pytz))
671
672
673(define-public python-babel
674 (package
675 (name "python-babel")
676 (version "2.3.4")
677 (source
678 (origin
679 (method url-fetch)
680 (uri (pypi-uri "Babel" version))
681 (sha256
682 (base32
683 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
684 (build-system python-build-system)
685 (propagated-inputs
686 `(("python-pytz" ,python-pytz)))
687 (arguments `(#:tests? #f)) ; no test target
688 (home-page "http://babel.pocoo.org/")
689 (synopsis
690 "Tools for internationalizing Python applications")
691 (description
692 "Babel is composed of two major parts:
693- tools to build and work with gettext message catalogs
694- a Python interface to the CLDR (Common Locale Data Repository), providing
695access to various locale display names, localized number and date formatting,
696etc. ")
697 (license license:bsd-3)))
698
699(define-public python2-babel
700 (package-with-python2 python-babel))
701
702(define-public python2-backport-ssl-match-hostname
703 (package
704 (name "python2-backport-ssl-match-hostname")
705 (version "3.5.0.1")
706 (source
707 (origin
708 (method url-fetch)
709 (uri (string-append
710 "https://pypi.python.org/packages/source/b/"
711 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
712 version ".tar.gz"))
713 (sha256
714 (base32
715 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
716 (build-system python-build-system)
717 (arguments
718 `(#:python ,python-2
719 #:tests? #f)) ; no test target
720 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
721 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
722 (description
723 "This backport brings the ssl.match_hostname() function to users of
724earlier versions of Python. The function checks the hostname in the
725certificate returned by the server to which a connection has been established,
726and verifies that it matches the intended target hostname.")
727 (license license:psfl)))
728
729(define-public python-hdf4
730 (package
731 (name "python-hdf4")
732 (version "0.9")
733 (source
734 (origin
735 (method url-fetch)
736 (uri (pypi-uri name version))
737 (sha256
738 (base32
739 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
740 (build-system python-build-system)
741 (native-inputs `(("nose" ,python-nose)))
742 (propagated-inputs `(("numpy" ,python-numpy)))
743 (inputs
744 `(("hdf4" ,hdf4)
745 ("libjpeg" ,libjpeg)
746 ("zlib" ,zlib)))
747 (arguments
748 `(#:phases
749 (modify-phases %standard-phases
750 (replace 'check
751 (lambda _
752 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
753 ;; on to import numpy. Somehow this works on their CI system.
754 ;; Let's just manage PYTHONPATH here instead.
755 (substitute* "runexamples.sh"
756 (("export PYTHONPATH=.*") ""))
757 (setenv "PYTHONPATH"
758 (string-append (getcwd) ":"
759 (getenv "PYTHONPATH")))
760 (and (zero? (system* "./runexamples.sh"))
761 (zero? (system* "nosetests" "-v"))))))))
762 (home-page "https://github.com/fhs/python-hdf4")
763 (synopsis "Python interface to the NCSA HDF4 library")
764 (description
765 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
766which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
767NetCDF files can also be read and modified. Python-HDF4 is a fork of
768@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
769 (license license:expat)))
770
771(define-public python2-hdf4
772 (package-with-python2 python-hdf4))
773
774(define-public python-h5py
775 (package
776 (name "python-h5py")
777 (version "2.6.0")
778 (source
779 (origin
780 (method url-fetch)
781 (uri (pypi-uri "h5py" version))
782 (sha256
783 (base32
784 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
785 (build-system python-build-system)
786 (arguments
787 `(#:tests? #f ; no test target
788 #:phases
789 (modify-phases %standard-phases
790 (add-after 'unpack 'fix-hdf5-paths
791 (lambda* (#:key inputs #:allow-other-keys)
792 (let ((prefix (assoc-ref inputs "hdf5")))
793 (substitute* "setup_build.py"
794 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
795 (string-append "['" prefix "/lib" "']"))
796 (("'/opt/local/include', '/usr/local/include'")
797 (string-append "'" prefix "/include" "'")))
798 (substitute* "setup_configure.py"
799 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
800 (string-append "['" prefix "/lib" "']")))
801 #t))))))
802 (propagated-inputs
803 `(("python-six" ,python-six)
804 ("python-numpy" ,python-numpy)))
805 (inputs
806 `(("hdf5" ,hdf5)))
807 (native-inputs
808 `(("python-cython" ,python-cython)
809 ("python-pkgconfig" ,python-pkgconfig)))
810 (home-page "http://www.h5py.org/")
811 (synopsis "Read and write HDF5 files from Python")
812 (description
813 "The h5py package provides both a high- and low-level interface to the
814HDF5 library from Python. The low-level interface is intended to be a
815complete wrapping of the HDF5 API, while the high-level component supports
816access to HDF5 files, datasets and groups using established Python and NumPy
817concepts.")
818 (license license:bsd-3)))
819
820(define-public python2-h5py
821 (package-with-python2 python-h5py))
822
823(define-public python-netcdf4
824 (package
825 (name "python-netcdf4")
826 (version "1.2.7")
827 (source
828 (origin
829 (method url-fetch)
830 (uri (pypi-uri "netCDF4" version))
831 (sha256
832 (base32
833 "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
834 (build-system python-build-system)
835 (native-inputs
836 `(("python-cython" ,python-cython)))
837 (propagated-inputs
838 `(("python-numpy" ,python-numpy)))
839 (inputs
840 `(("netcdf" ,netcdf)
841 ("hdf4" ,hdf4)
842 ("hdf5" ,hdf5)))
843 (arguments
844 '(#:phases
845 (modify-phases %standard-phases
846 (replace 'check
847 (lambda _
848 (setenv "NO_NET" "1") ; disable opendap tests
849 (with-directory-excursion "test"
850 (setenv "PYTHONPATH" ; find and add the library we just built
851 (string-append
852 (car (find-files "../build" "lib.*"
853 #:directories? #:t
854 #:fail-on-error? #:t))
855 ":" (getenv "PYTHONPATH")))
856 (zero? (system* "python" "run_all.py"))))))))
857 (home-page
858 "https://github.com/Unidata/netcdf4-python")
859 (synopsis "Python/numpy interface to the netCDF library")
860 (description "Netcdf4-python is a Python interface to the netCDF C
861library. netCDF version 4 has many features not found in earlier
862versions of the library and is implemented on top of HDF5. This module
863can read and write files in both the new netCDF 4 and the old netCDF 3
864format, and can create files that are readable by HDF5 clients. The
865API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
866to users of that module.")
867 ;; The software is mainly ISC, but includes some files covered
868 ;; by the Expat license.
869 (license (list license:isc license:expat))))
870
871(define-public python2-netcdf4
872 (package-with-python2 python-netcdf4))
873
874(define-public python-lockfile
875 (package
876 (name "python-lockfile")
877 (version "0.12.2")
878 (source
879 (origin
880 (method url-fetch)
881 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
882 "lockfile-" version ".tar.gz"))
883 (sha256
884 (base32
885 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
886 (build-system python-build-system)
887 (arguments '(#:test-target "check"))
888 (native-inputs
889 `(("python-pbr" ,python-pbr)))
890 (home-page "https://launchpad.net/pylockfile")
891 (synopsis "Platform-independent file locking module")
892 (description
893 "The lockfile package exports a LockFile class which provides a simple
894API for locking files.")
895 (license license:expat)))
896
897(define-public python2-lockfile
898 (package-with-python2 python-lockfile))
899
900(define-public python-mock
901 (package
902 (name "python-mock")
903 (version "1.0.1")
904 (source
905 (origin
906 (method url-fetch)
907 (uri (pypi-uri "mock" version))
908 (sha256
909 (base32
910 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
911 (build-system python-build-system)
912 (arguments '(#:test-target "check"))
913 (home-page "https://github.com/testing-cabal/mock")
914 (synopsis "Python mocking and patching library for testing")
915 (description
916 "Mock is a library for testing in Python. It allows you to replace parts
917of your system under test with mock objects and make assertions about how they
918have been used.")
919 (license license:expat)))
920
921(define-public python2-mock
922 (package-with-python2 python-mock))
923
924
925(define-public python-setuptools
926 (package
927 (name "python-setuptools")
928 (version "31.0.0")
929 (source
930 (origin
931 (method url-fetch)
932 (uri (pypi-uri "setuptools" version))
933 (sha256
934 (base32
935 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
936 (modules '((guix build utils)))
937 (snippet
938 '(begin
939 ;; Remove included binaries which are used to build self-extracting
940 ;; installers for Windows.
941 ;; TODO: Find some way to build them ourself so we can include them.
942 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
943 #t))))
944 (build-system python-build-system)
945 ;; FIXME: Tests require pytest, which itself relies on setuptools.
946 ;; One could bootstrap with an internal untested setuptools.
947 (arguments
948 `(#:tests? #f))
949 (home-page "https://pypi.python.org/pypi/setuptools")
950 (synopsis
951 "Library designed to facilitate packaging Python projects")
952 (description
953 "Setuptools is a fully-featured, stable library designed to facilitate
954packaging Python projects, where packaging includes:
955Python package and module definitions,
956distribution package metadata,
957test hooks,
958project installation,
959platform-specific details,
960Python 3 support.")
961 ;; TODO: setuptools now bundles the following libraries:
962 ;; packaging, pyparsing, six and appdirs. How to unbundle?
963 (license (list license:psfl ; setuptools itself
964 license:expat ; six, appdirs, pyparsing
965 license:asl2.0 ; packaging is dual ASL2/BSD-2
966 license:bsd-2))))
967
968(define-public python2-setuptools
969 (package-with-python2 python-setuptools))
970
971;;; Pycrypto is abandoned upstream:
972;;;
973;;; https://github.com/dlitz/pycrypto/issues/173
974;;;
975;;; TODO Remove this package from GNU Guix.
976(define-public python-pycrypto
977 (package
978 (name "python-pycrypto")
979 (version "2.6.1")
980 (source
981 (origin
982 (method url-fetch)
983 (uri (pypi-uri "pycrypto" version))
984 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
985 (sha256
986 (base32
987 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
988 (build-system python-build-system)
989 (inputs
990 `(("python" ,python)
991 ("gmp" ,gmp)))
992 (arguments
993 `(#:phases
994 (alist-cons-before
995 'build 'set-build-env
996 ;; pycrypto runs an autoconf configure script behind the scenes
997 (lambda _
998 (setenv "CONFIG_SHELL" (which "bash")))
999 %standard-phases)))
1000 (home-page "http://www.pycrypto.org/")
1001 (synopsis "Cryptographic modules for Python")
1002 (description
1003 "Pycrypto is a collection of both secure hash functions (such as SHA256
1004and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
1005etc.). The package is structured to make adding new modules easy.")
1006 (license license:public-domain)))
1007
1008(define-public python2-pycrypto
1009 (let ((pycrypto (package-with-python2 python-pycrypto)))
1010 (package (inherit pycrypto)
1011 (inputs
1012 `(("python" ,python-2)
1013 ,@(alist-delete
1014 "python"
1015 (package-inputs pycrypto)))))))
1016
1017(define-public python-eventlet
1018 (package
1019 (name "python-eventlet")
1020 (version "0.20.1")
1021 (source
1022 (origin
1023 (method url-fetch)
1024 (uri (pypi-uri "eventlet" version))
1025 (sha256
1026 (base32
1027 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
1028 (build-system python-build-system)
1029 (propagated-inputs
1030 `(("python-greenlet" ,python-greenlet)))
1031 (home-page "http://eventlet.net")
1032 (synopsis "Concurrent networking library for Python")
1033 (description
1034 "Eventlet is a concurrent networking library for Python that
1035allows you to change how you run your code, not how you write it.
1036It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
1037Coroutines ensure that the developer uses a blocking style of programming
1038that is similar to threading, but provide the benefits of non-blocking I/O.
1039The event dispatch is implicit, which means you can easily use @code{Eventlet}
1040from the Python interpreter, or as a small part of a larger application.")
1041 (license license:expat)))
1042
1043(define-public python2-eventlet
1044 (let ((base (package-with-python2
1045 (strip-python2-variant python-eventlet))))
1046 (package (inherit base)
1047 (propagated-inputs
1048 `(("python2-enum34" ,python2-enum34)
1049 ,@(package-propagated-inputs base))))))
1050
1051(define-public python-keyring
1052 (package
1053 (name "python-keyring")
1054 (version "8.7")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (pypi-uri "keyring" version))
1059 (sha256
1060 (base32
1061 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
1062 (build-system python-build-system)
1063 (native-inputs
1064 `(("python-setuptools-scm" ,python-setuptools-scm)))
1065 (propagated-inputs
1066 `(("python-pycrypto" ,python-pycrypto)))
1067 (arguments
1068 `(#:tests? #f)) ;TODO: tests require pytest
1069 (home-page "https://github.com/jaraco/keyring")
1070 (synopsis "Store and access your passwords safely")
1071 (description
1072 "The Python keyring lib provides a easy way to access the system keyring
1073service from python. It can be used in any application that needs safe
1074password storage.")
1075 ;; "MIT" and PSF dual license
1076 (license license:x11)))
1077
1078(define-public python2-keyring
1079 (package-with-python2 python-keyring))
1080
1081(define-public python-six
1082 (package
1083 (name "python-six")
1084 (version "1.10.0")
1085 (source
1086 (origin
1087 (method url-fetch)
1088 (uri (pypi-uri "six" version))
1089 (sha256
1090 (base32
1091 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
1092 (build-system python-build-system)
1093 (native-inputs
1094 `(("python-py" ,python-py)
1095 ("python-pytest" ,python-pytest)))
1096 (home-page "http://pypi.python.org/pypi/six/")
1097 (synopsis "Python 2 and 3 compatibility utilities")
1098 (description
1099 "Six is a Python 2 and 3 compatibility library. It provides utility
1100functions for smoothing over the differences between the Python versions with
1101the goal of writing Python code that is compatible on both Python versions.
1102Six supports every Python version since 2.5. It is contained in only one
1103Python file, so it can be easily copied into your project.")
1104 (license license:x11)))
1105
1106(define-public python2-six
1107 (package-with-python2 python-six))
1108
1109(define-public python-dateutil
1110 (package
1111 (name "python-dateutil")
1112 (version "2.6.0")
1113 (source
1114 (origin
1115 (method url-fetch)
1116 (uri (pypi-uri "python-dateutil" version))
1117 (sha256
1118 (base32
1119 "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
1120 (build-system python-build-system)
1121 (propagated-inputs
1122 `(("python-six" ,python-six)))
1123 (home-page "https://dateutil.readthedocs.io/en/stable/")
1124 (synopsis "Extensions to the standard datetime module")
1125 (description
1126 "The dateutil module provides powerful extensions to the standard
1127datetime module, available in Python 2.3+.")
1128 (license license:bsd-3)))
1129
1130(define-public python2-dateutil
1131 (package-with-python2 python-dateutil))
1132
1133(define-public python-parsedatetime
1134 (package
1135 (name "python-parsedatetime")
1136 (version "2.3")
1137 (source
1138 (origin
1139 (method url-fetch)
1140 (uri (pypi-uri "parsedatetime" version))
1141 (sha256
1142 (base32
1143 "1vkrmd398s11h1zn3zaqqsiqhj9lwy1ikcg6irx2lrgjzjg3rjll"))))
1144 (build-system python-build-system)
1145 (native-inputs
1146 `(("python-nose" ,python-nose)
1147 ("python-pyicu" ,python-pyicu)
1148 ("python-pytest" ,python-pytest)
1149 ("python-pytest-runner" ,python-pytest-runner)))
1150 (propagated-inputs
1151 `(("python-future" ,python-future)))
1152 (home-page "https://github.com/bear/parsedatetime/")
1153 (synopsis
1154 "Parse human-readable date/time text")
1155 (description
1156 "Parse human-readable date/time text.")
1157 (license license:asl2.0)))
1158
1159(define-public python2-parsedatetime
1160 (package-with-python2 python-parsedatetime))
1161
1162(define-public python-pandas
1163 (package
1164 (name "python-pandas")
1165 (version "0.19.2")
1166 (source
1167 (origin
1168 (method url-fetch)
1169 (uri (pypi-uri "pandas" version))
1170 (sha256
1171 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1172 (patches
1173 (search-patches "python-pandas-skip-failing-tests.patch"))))
1174 (build-system python-build-system)
1175 (propagated-inputs
1176 `(("python-numpy" ,python-numpy)
1177 ("python-pytz" ,python-pytz)
1178 ("python-dateutil" ,python-dateutil)))
1179 (native-inputs
1180 `(("python-nose" ,python-nose)
1181 ("python-cython" ,python-cython)))
1182 (home-page "http://pandas.pydata.org")
1183 (synopsis "Data structures for data analysis, time series, and statistics")
1184 (description
1185 "Pandas is a Python package providing fast, flexible, and expressive data
1186structures designed to make working with structured (tabular,
1187multidimensional, potentially heterogeneous) and time series data both easy
1188and intuitive. It aims to be the fundamental high-level building block for
1189doing practical, real world data analysis in Python.")
1190 (license license:bsd-3)))
1191
1192(define-public python2-pandas
1193 (package-with-python2 python-pandas))
1194
1195(define-public python-tzlocal
1196 (package
1197 (name "python-tzlocal")
1198 (version "1.2.2")
1199 (source
1200 (origin
1201 (method url-fetch)
1202 (uri (pypi-uri "tzlocal" version))
1203 (sha256
1204 (base32
1205 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
1206 (build-system python-build-system)
1207 (propagated-inputs
1208 `(("python-pytz" ,python-pytz)))
1209 (home-page "https://github.com/regebro/tzlocal")
1210 (synopsis
1211 "Local timezone information for Python")
1212 (description
1213 "Tzlocal returns a tzinfo object with the local timezone information.
1214This module attempts to fix a glaring hole in pytz, that there is no way to
1215get the local timezone information, unless you know the zoneinfo name, and
1216under several distributions that's hard or impossible to figure out.")
1217 (license license:cc0)))
1218
1219(define-public python2-pysqlite
1220 (package
1221 (name "python2-pysqlite")
1222 (version "2.8.3")
1223 (source
1224 (origin
1225 (method url-fetch)
1226 (uri (pypi-uri "pysqlite" version))
1227 (sha256
1228 (base32
1229 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1230 (build-system python-build-system)
1231 (inputs
1232 `(("sqlite" ,sqlite)))
1233 (arguments
1234 `(#:python ,python-2 ; incompatible with Python 3
1235 #:tests? #f)) ; no test target
1236 (home-page "https://github.com/ghaering/pysqlite")
1237 (synopsis "SQLite bindings for Python")
1238 (description
1239 "Pysqlite provides SQLite bindings for Python that comply to the
1240Database API 2.0T.")
1241 (license license:zlib)))
1242
1243
1244(define-public python2-mechanize
1245 (package
1246 (name "python2-mechanize")
1247 (version "0.2.5")
1248 (source
1249 (origin
1250 (method url-fetch)
1251 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1252 version ".tar.gz"))
1253 (sha256
1254 (base32
1255 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1256 (build-system python-build-system)
1257 (arguments
1258 `(#:python ,python-2 ; apparently incompatible with Python 3
1259 #:tests? #f))
1260 ;; test fails with message
1261 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1262 ;; (python-3.3.2) or
1263 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1264 ;; (python-2.7.5).
1265 ;; The source code is from March 2011 and probably not up-to-date
1266 ;; with respect to python unit tests.
1267 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1268 (synopsis
1269 "Stateful programmatic web browsing in Python")
1270 (description
1271 "Mechanize implements stateful programmatic web browsing in Python,
1272after Andy Lester’s Perl module WWW::Mechanize.")
1273 (license (license:non-copyleft
1274 "file://COPYING"
1275 "See COPYING in the distribution."))))
1276
1277
1278(define-public python-simplejson
1279 (package
1280 (name "python-simplejson")
1281 (version "3.10.0")
1282 (source
1283 (origin
1284 (method url-fetch)
1285 (uri (pypi-uri "simplejson" version))
1286 (sha256
1287 (base32
1288 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
1289 (build-system python-build-system)
1290 (home-page "http://simplejson.readthedocs.org/en/latest/")
1291 (synopsis
1292 "Json library for Python")
1293 (description
1294 "JSON (JavaScript Object Notation) is a subset of JavaScript
1295syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1296format.
1297
1298Simplejson exposes an API familiar to users of the standard library marshal
1299and pickle modules. It is the externally maintained version of the json
1300library contained in Python 2.6, but maintains compatibility with Python 2.5
1301and (currently) has significant performance advantages, even without using
1302the optional C extension for speedups. Simplejson is also supported on
1303Python 3.3+.")
1304 (license license:x11)))
1305
1306(define-public python2-simplejson
1307 (package-with-python2 python-simplejson))
1308
1309
1310(define-public python-pyicu
1311 (package
1312 (name "python-pyicu")
1313 (version "1.9.5")
1314 (source
1315 (origin
1316 (method url-fetch)
1317 (uri (pypi-uri "PyICU" version))
1318 (sha256
1319 (base32
1320 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
1321 (build-system python-build-system)
1322 (arguments
1323 '(#:phases
1324 (modify-phases %standard-phases
1325 (add-before 'check 'delete-failing-test
1326 (lambda _
1327 ;; XXX: These tests require locales that are unavailable
1328 ;; in the build environment.
1329 (delete-file "test/test_DateTimeParserGenerator.py")
1330 #t)))))
1331 (inputs
1332 `(("icu4c" ,icu4c)))
1333 (home-page "http://pyicu.osafoundation.org/")
1334 (synopsis "Python extension wrapping the ICU C++ API")
1335 (description
1336 "PyICU is a python extension wrapping the ICU C++ API.")
1337 (license license:x11)))
1338
1339(define-public python2-pyicu
1340 (package-with-python2 python-pyicu))
1341
1342(define-public python2-dogtail
1343 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1344 ;; spaces in indentation" with Python 3.
1345 (package
1346 (name "python2-dogtail")
1347 (version "0.9.9")
1348 (source (origin
1349 (method url-fetch)
1350 (uri (pypi-uri "dogtail" version))
1351 (sha256
1352 (base32
1353 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
1354 (build-system python-build-system)
1355 (arguments `(#:python ,python-2
1356 #:tests? #f)) ; invalid command "test"
1357 ;; Currently no offical homepage.
1358 (home-page "https://pypi.python.org/pypi/dogtail/")
1359 (synopsis "GUI test tool and automation framework written in Python")
1360 (description
1361 "Dogtail is a GUI test tool and automation framework written in Python.
1362It uses Accessibility (a11y) technologies to communicate with desktop
1363applications. dogtail scripts are written in Python and executed like any
1364other Python program.")
1365 (license license:gpl2+)))
1366
1367(define-public python2-empy
1368 (package
1369 (name "python2-empy")
1370 (version "3.3")
1371 (source (origin
1372 (method url-fetch)
1373 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1374 version ".tar.gz"))
1375 (sha256
1376 (base32
1377 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1378 (build-system python-build-system)
1379 (arguments
1380 `(#:python ,python-2
1381 #:phases (alist-replace
1382 'check
1383 (lambda _
1384 (zero? (system* "./test.sh")))
1385 %standard-phases)))
1386 (home-page "http://www.alcyone.com/software/empy/")
1387 (synopsis "Templating system for Python")
1388 (description
1389 "EmPy is a system for embedding Python expressions and statements in
1390template text; it takes an EmPy source file, processes it, and produces
1391output. This is accomplished via expansions, which are special signals to the
1392EmPy system and are set off by a special prefix (by default the at sign, @@).
1393EmPy can expand arbitrary Python expressions and statements in this way, as
1394well as a variety of special forms. Textual data not explicitly delimited in
1395this way is sent unaffected to the output, allowing Python to be used in
1396effect as a markup language. Also supported are callbacks via hooks,
1397recording and playback via diversions, and dynamic, chainable filters. The
1398system is highly configurable via command line options and embedded
1399commands.")
1400 (license license:lgpl2.1+)))
1401
1402(define-public python2-element-tree
1403 (package
1404 (name "python2-element-tree")
1405 (version "1.2.6")
1406 (source (origin
1407 (method url-fetch)
1408 (uri (string-append
1409 "http://effbot.org/media/downloads/elementtree-"
1410 version "-20050316.tar.gz"))
1411 (sha256
1412 (base32
1413 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1414 (build-system python-build-system)
1415 (arguments
1416 `(#:python ,python-2 ; seems to be part of Python 3
1417 #:tests? #f)) ; no 'test' sub-command
1418 (synopsis "Toolkit for XML processing in Python")
1419 (description
1420 "ElementTree is a Python library supporting lightweight XML processing.")
1421 (home-page "http://effbot.org/zone/element-index.htm")
1422 (license (license:x11-style
1423 "http://docs.python.org/2/license.html"
1424 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
1425
1426(define-public python2-pybugz
1427 (package
1428 (name "python2-pybugz")
1429 (version "0.6.11")
1430 (source (origin
1431 (method url-fetch)
1432 (uri (string-append
1433 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1434 version ".tar.gz"))
1435 (sha256
1436 (base32
1437 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
1438 (patches (search-patches "pybugz-stty.patch"
1439 "pybugz-encode-error.patch"))))
1440 (build-system python-build-system)
1441 (arguments
1442 `(#:python ,python-2 ; SyntaxError with Python 3
1443 #:tests? #f)) ; no 'test' sub-command
1444 (propagated-inputs
1445 `(("element-tree" ,python2-element-tree)))
1446 (synopsis "Python and command-line interface to Bugzilla")
1447 (description
1448 "PyBugz is a Python library and command-line tool to query the Bugzilla
1449bug tracking system. It is meant as an aid to speed up interaction with the
1450bug tracker.")
1451 (home-page "http://www.liquidx.net/pybugz/")
1452 (license license:gpl2)))
1453
1454(define-public python-enum34
1455 (package
1456 (name "python-enum34")
1457 (version "1.1.6")
1458 (source
1459 (origin
1460 (method url-fetch)
1461 (uri (pypi-uri "enum34" version))
1462 (sha256
1463 (base32
1464 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
1465 (build-system python-build-system)
1466 (home-page "https://pypi.python.org/pypi/enum34")
1467 (synopsis "Backported Python 3.4 Enum")
1468 (description
1469 "Enum34 is the new Python stdlib enum module available in Python 3.4
1470backported for previous versions of Python from 2.4 to 3.3.")
1471 (license license:bsd-3)))
1472
1473(define-public python2-enum34
1474 (package-with-python2 python-enum34))
1475
1476(define-public python-parse-type
1477 (package
1478 (name "python-parse-type")
1479 (version "0.3.4")
1480 (source
1481 (origin
1482 (method url-fetch)
1483 (uri (string-append "https://pypi.python.org/packages/source/p/"
1484 "parse_type/parse_type-" version ".tar.gz"))
1485 (sha256
1486 (base32
1487 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1488 (build-system python-build-system)
1489 (propagated-inputs
1490 `(("python-six" ,python-six)
1491 ("python-parse" ,python-parse)))
1492 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1493 (home-page "https://github.com/jenisys/parse_type")
1494 (synopsis "Extended parse module")
1495 (description
1496 "Parse_type extends the python parse module.")
1497 (license license:bsd-3)))
1498
1499(define-public python-parse
1500 (package
1501 (name "python-parse")
1502 (version "1.6.6")
1503 (source
1504 (origin
1505 (method url-fetch)
1506 (uri (pypi-uri "parse" version))
1507 (sha256
1508 (base32
1509 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1510 (patches (search-patches "python-parse-too-many-fields.patch"))))
1511 (build-system python-build-system)
1512 (arguments
1513 `(#:phases
1514 (modify-phases %standard-phases
1515 (replace 'check
1516 (lambda _ (zero? (system* "python" "test_parse.py")))))))
1517 (home-page "https://github.com/r1chardj0n3s/parse")
1518 (synopsis "Parse strings")
1519 (description
1520 "Parse strings using a specification based on the Python format()
1521syntax.")
1522 (license license:x11)))
1523
1524(define-public python-polib
1525 (package
1526 (name "python-polib")
1527 (version "1.0.8")
1528 (source (origin
1529 (method url-fetch)
1530 (uri (pypi-uri "polib" version))
1531 (sha256
1532 (base32
1533 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1534 (build-system python-build-system)
1535 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1536 (synopsis "Manipulate, create and modify gettext files")
1537 (description "Polib can manipulate any gettext format (po, pot and mo)
1538files. It can be used to create po files from scratch or to modify
1539existing ones.")
1540 (license license:expat)))
1541
1542(define-public python2-polib
1543 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1544 (package
1545 (inherit base)
1546 (arguments `(,@(package-arguments base)
1547 ;; Tests don't work with python2.
1548 #:tests? #f)))))
1549
1550(define-public scons
1551 (package
1552 (name "scons")
1553 (version "2.3.4")
1554 (source (origin
1555 (method url-fetch)
1556 (uri (string-append "mirror://sourceforge/scons/scons/" version
1557 "/scons-" version ".tar.gz"))
1558 (sha256
1559 (base32
1560 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
1561 (build-system python-build-system)
1562 (arguments
1563 ;; With Python 3.x, fails to build with a syntax error.
1564 `(#:python ,python-2
1565 #:use-setuptools? #f ; still relies on distutils
1566 #:tests? #f)) ; no 'python setup.py test' command
1567 (home-page "http://scons.org/")
1568 (synopsis "Software construction tool written in Python")
1569 (description
1570 "SCons is a software construction tool. Think of SCons as an improved,
1571cross-platform substitute for the classic Make utility with integrated
1572functionality similar to autoconf/automake and compiler caches such as ccache.
1573In short, SCons is an easier, more reliable and faster way to build
1574software.")
1575 (license license:x11)))
1576
1577(define-public python-extras
1578 (package
1579 (name "python-extras")
1580 (version "0.0.3")
1581 (source
1582 (origin
1583 (method url-fetch)
1584 (uri (string-append
1585 "https://pypi.python.org/packages/source/e/extras/extras-"
1586 version ".tar.gz"))
1587 (sha256
1588 (base32
1589 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1590 (build-system python-build-system)
1591 (arguments
1592 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1593 '(#:tests? #f))
1594 (home-page "https://github.com/testing-cabal/extras")
1595 (synopsis "Useful extensions to the Python standard library")
1596 (description
1597 "Extras is a set of extensions to the Python standard library.")
1598 (license license:expat)))
1599
1600(define-public python2-extras
1601 (package-with-python2 python-extras))
1602
1603(define-public python-mimeparse
1604 (package
1605 (name "python-mimeparse")
1606 (version "0.1.4")
1607 (source
1608 (origin
1609 (method url-fetch)
1610 (uri (string-append
1611 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1612 version ".tar.gz"))
1613 (sha256
1614 (base32
1615 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1616 (build-system python-build-system)
1617 (arguments
1618 '(#:tests? #f)) ; no setup.py test command
1619 (home-page
1620 "https://github.com/dbtsai/python-mimeparse")
1621 (synopsis "Python library for parsing MIME types")
1622 (description
1623 "Mimeparse provides basic functions for parsing MIME type names and
1624matching them against a list of media-ranges.")
1625 (license license:expat)))
1626
1627(define-public python2-mimeparse
1628 (package-with-python2 python-mimeparse))
1629
1630(define-public python-nose
1631 (package
1632 (name "python-nose")
1633 (version "1.3.7")
1634 (source
1635 (origin
1636 (method url-fetch)
1637 (uri (pypi-uri "nose" version))
1638 (sha256
1639 (base32
1640 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
1641 (build-system python-build-system)
1642 (arguments
1643 '(#:tests? #f)) ; FIXME: test suite fails
1644 (home-page "http://readthedocs.org/docs/nose/")
1645 (synopsis "Python testing library")
1646 (description
1647 "Nose extends the unittest library to make testing easier.")
1648 (license license:lgpl2.0+)))
1649
1650(define-public python2-nose
1651 (package-with-python2 python-nose))
1652
1653(define-public python-nose2
1654 (package
1655 (name "python-nose2")
1656 (version "0.6.5")
1657 (source
1658 (origin
1659 (method url-fetch)
1660 (uri (pypi-uri "nose2" version))
1661 (sha256
1662 (base32
1663 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1664 (build-system python-build-system)
1665 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
1666 (propagated-inputs
1667 `(("python-cov-core" ,python-cov-core)
1668 ("python-pytest-cov" ,python-pytest-cov)
1669 ("python-six" ,python-six)))
1670 (home-page "https://github.com/nose-devs/nose2")
1671 (synopsis "Next generation of nicer testing for Python")
1672 (description
1673 "Nose2 is the next generation of nicer testing for Python, based on the
1674plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1675better plugin api, being easier for users to configure, and simplifying internal
1676interfaces and processes.")
1677 (license license:bsd-2)))
1678
1679(define-public python2-nose2
1680 (package-with-python2 python-nose2))
1681
1682(define-public python-unittest2
1683 (package
1684 (name "python-unittest2")
1685 (version "0.5.1")
1686 (source
1687 (origin
1688 (method url-fetch)
1689 (uri (string-append
1690 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1691 version ".tar.gz"))
1692 (sha256
1693 (base32
1694 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1695 (build-system python-build-system)
1696 (home-page "http://pypi.python.org/pypi/unittest2")
1697 (synopsis "Python unit testing library")
1698 (description
1699 "Unittest2 is a replacement for the unittest module in the Python
1700standard library.")
1701 (license license:psfl)))
1702
1703(define-public python2-unittest2
1704 (package (inherit python-unittest2)
1705 (name "python2-unittest2")
1706 (version "0.5.1")
1707 (source
1708 (origin
1709 (method url-fetch)
1710 (uri (string-append
1711 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1712 version ".tar.gz"))
1713 (sha256
1714 (base32
1715 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1716 (arguments
1717 `(#:python ,python-2
1718 #:tests? #f)))) ; no setup.py test command
1719
1720(define-public python-pafy
1721 (package
1722 (name "python-pafy")
1723 (version "0.5.3.1")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (pypi-uri "pafy" version))
1728 (sha256
1729 (base32
1730 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
1731 (build-system python-build-system)
1732 (arguments
1733 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
1734 (propagated-inputs
1735 ;; Youtube-dl is a python package which is imported in the file
1736 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1737 `(("youtube-dl" ,youtube-dl)))
1738 (home-page "https://np1.github.io/pafy/")
1739 (synopsis "Retrieve YouTube content and metadata")
1740 (description
1741 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1742 (license license:lgpl3+)))
1743
1744(define-public python-py
1745 (package
1746 (name "python-py")
1747 (version "1.4.32")
1748 (source
1749 (origin
1750 (method url-fetch)
1751 (uri (pypi-uri "py" version))
1752 (sha256
1753 (base32
1754 "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
1755 (build-system python-build-system)
1756 (arguments
1757 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1758 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1759 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1760 ;; Is this module globally installed?"
1761 '(#:tests? #f))
1762 (home-page "http://pylib.readthedocs.org/")
1763 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1764 (description
1765 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1766code introspection, and logging.")
1767 (license license:expat)))
1768
1769(define-public python2-py
1770 (package-with-python2 python-py))
1771
1772(define-public python-pytest
1773 (package
1774 (name "python-pytest")
1775 (version "2.7.3")
1776 (source
1777 (origin
1778 (method url-fetch)
1779 (uri (string-append
1780 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1781 version ".tar.gz"))
1782 (sha256
1783 (base32
1784 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
1785 (modules '((guix build utils)))
1786 (snippet
1787 ;; One of the tests involves the /usr directory, so it fails.
1788 '(substitute* "testing/test_argcomplete.py"
1789 (("def test_remove_dir_prefix\\(self\\):")
1790 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1791 (build-system python-build-system)
1792 (propagated-inputs
1793 `(("python-py" ,python-py)))
1794 (native-inputs
1795 `(("python-nose" ,python-nose)
1796 ("python-mock" ,python-mock)))
1797 (home-page "http://pytest.org")
1798 (synopsis "Python testing library")
1799 (description
1800 "Pytest is a testing tool that provides auto-discovery of test modules
1801and functions, detailed info on failing assert statements, modular fixtures,
1802and many external plugins.")
1803 (license license:expat)))
1804
1805(define-public python2-pytest
1806 (package-with-python2 python-pytest))
1807
1808;; Some packages require a newer pytest.
1809(define-public python-pytest-3.0
1810 (package
1811 (inherit python-pytest)
1812 (name "python-pytest")
1813 (version "3.0.7")
1814 (source (origin
1815 (method url-fetch)
1816 (uri (pypi-uri "pytest" version))
1817 (sha256
1818 (base32
1819 "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
1820 (arguments
1821 `(#:phases
1822 (modify-phases %standard-phases
1823 (add-before 'check 'disable-invalid-test
1824 (lambda _
1825 (substitute* "testing/test_argcomplete.py"
1826 (("def test_remove_dir_prefix" line)
1827 (string-append "@pytest.mark.skip"
1828 "(reason=\"Assumes that /usr exists.\")\n "
1829 line)))
1830 #t)))))
1831 (native-inputs
1832 `(("python-nose" ,python-nose)
1833 ("python-mock" ,python-mock)
1834 ("python-hypothesis" ,python-hypothesis)))
1835 (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
1836
1837(define-public python2-pytest-3.0
1838 (let ((base (package-with-python2
1839 (strip-python2-variant python-pytest-3.0))))
1840 (package (inherit base)
1841 (native-inputs
1842 `(("python2-enum34" ,python2-enum34)
1843 ,@(package-native-inputs base))))))
1844
1845(define-public python-pytest-cov
1846 (package
1847 (name "python-pytest-cov")
1848 (version "2.4.0")
1849 (source
1850 (origin
1851 (method url-fetch)
1852 (uri (pypi-uri "pytest-cov" version))
1853 (sha256
1854 (base32
1855 "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
1856 (build-system python-build-system)
1857 (arguments
1858 `(#:phases
1859 (modify-phases %standard-phases
1860 (replace 'check
1861 (lambda _
1862 ;; options taken from tox.ini
1863 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1864 ;; with "Duplicate implicit target name"
1865 (zero? (system* "python" "./setup.py" "check"
1866 "--strict" "--metadata")))))))
1867 (propagated-inputs
1868 `(("python-coverage" ,python-coverage)
1869 ("python-pytest" ,python-pytest)))
1870 (home-page "https://github.com/pytest-dev/pytest-cov")
1871 (synopsis "Pytest plugin for measuring coverage")
1872 (description
1873 "Pytest-cov produces coverage reports. It supports centralised testing and
1874distributed testing in both @code{load} and @code{each} modes. It also
1875supports coverage of subprocesses.")
1876 (license license:expat)))
1877
1878(define-public python2-pytest-cov
1879 (package-with-python2 python-pytest-cov))
1880
1881(define-public python-pytest-runner
1882 (package
1883 (name "python-pytest-runner")
1884 (version "2.11.1")
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (pypi-uri "pytest-runner" version))
1889 (sha256
1890 (base32
1891 "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
1892 (build-system python-build-system)
1893 (arguments
1894 `(#:phases
1895 (modify-phases %standard-phases
1896 ;; The fancy way of setting the version with setuptools_scm does not
1897 ;; seem to work here.
1898 (add-after 'unpack 'set-version
1899 (lambda _
1900 (substitute* "docs/conf.py"
1901 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1902 (string-append "version = \"" ,version "\"")))
1903 #t)))))
1904 (native-inputs
1905 `(("python-pytest" ,python-pytest)
1906 ("python-setuptools-scm" ,python-setuptools-scm)))
1907 (home-page "https://github.com/pytest-dev/pytest-runner")
1908 (synopsis "Invoke py.test as a distutils command")
1909 (description
1910 "This package provides a @command{pytest-runner} command that
1911@file{setup.py} files can use to run tests.")
1912 (license license:expat)))
1913
1914(define-public python2-pytest-runner
1915 (package-with-python2 python-pytest-runner))
1916
1917(define-public python-pytest-mock
1918 (package
1919 (name "python-pytest-mock")
1920 (version "1.2")
1921 (source
1922 (origin
1923 (method url-fetch)
1924 (uri (pypi-uri "pytest-mock" version ".zip"))
1925 (sha256
1926 (base32
1927 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1928 (build-system python-build-system)
1929 (native-inputs
1930 `(("unzip" ,unzip)))
1931 (propagated-inputs
1932 `(("python-pytest" ,python-pytest)))
1933 (home-page "https://github.com/pytest-dev/pytest-mock/")
1934 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1935 (description
1936 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1937around the patching API provided by the @code{mock} package, but with the
1938benefit of not having to worry about undoing patches at the end of a test.
1939The mocker fixture has the same API as @code{mock.patch}, supporting the
1940same arguments.")
1941 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1942 (license license:expat)))
1943
1944(define-public python2-pytest-mock
1945 (let ((base (package-with-python2
1946 (strip-python2-variant python-pytest-mock))))
1947 (package (inherit base)
1948 (propagated-inputs
1949 `(("python2-mock" ,python2-mock)
1950 ,@(package-propagated-inputs base))))))
1951
1952(define-public python-pytest-xdist
1953 (package
1954 (name "python-pytest-xdist")
1955 (version "1.14")
1956 (source
1957 (origin
1958 (method url-fetch)
1959 (uri (pypi-uri "pytest-xdist" version ".zip"))
1960 (sha256
1961 (base32
1962 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1963 (modules '((guix build utils)))
1964 (snippet
1965 '(begin
1966 ;; Remove pre-compiled .pyc files from source.
1967 (for-each delete-file-recursively
1968 (find-files "." "__pycache__" #:directories? #t))
1969 (for-each delete-file (find-files "." "\\.pyc$"))
1970 #t))))
1971 (build-system python-build-system)
1972 (arguments
1973 '(#:tests? #f)) ;FIXME: Some tests are failing.
1974 ;; #:phases
1975 ;; (modify-phases %standard-phases
1976 ;; (delete 'check)
1977 ;; (add-after 'install 'check
1978 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
1979 ;; (add-installed-pythonpath inputs outputs)
1980 ;; (zero? (system* "py.test" "-v")))))
1981 (native-inputs
1982 `(("unzip" ,unzip)
1983 ("python-setuptools-scm" ,python-setuptools-scm)))
1984 (propagated-inputs
1985 `(("python-execnet" ,python-execnet)
1986 ("python-pytest" ,python-pytest)
1987 ("python-py" ,python-py)))
1988 (home-page
1989 "https://github.com/pytest-dev/pytest-xdist")
1990 (synopsis
1991 "Plugin for py.test with distributed testing and loop-on-failing modes")
1992 (description
1993 "The pytest-xdist plugin extends py.test with some unique test execution
1994modes: parallelization, running tests in boxed subprocesses, the ability
1995to run tests repeatedly when failed, and the ability to run tests on multiple
1996Python interpreters or platforms. It uses rsync to copy the existing
1997program code to a remote location, executes there, and then syncs the
1998result back.")
1999 (license license:expat)))
2000
2001(define-public python2-pytest-xdist
2002 (package-with-python2 python-pytest-xdist))
2003
2004(define-public python-scripttest
2005 (package
2006 (name "python-scripttest")
2007 (version "1.3")
2008 (source
2009 (origin
2010 (method url-fetch)
2011 (uri (string-append
2012 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
2013 version ".tar.gz"))
2014 (sha256
2015 (base32
2016 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
2017 (build-system python-build-system)
2018 (native-inputs
2019 `(("python-pytest" ,python-pytest)))
2020 (home-page "http://pythonpaste.org/scripttest/")
2021 (synopsis "Python library to test command-line scripts")
2022 (description "Scripttest is a Python helper library for testing
2023interactive command-line applications. With it you can run a script in a
2024subprocess and see the output as well as any file modifications.")
2025 (license license:expat)))
2026
2027(define-public python2-scripttest
2028 (package-with-python2 python-scripttest))
2029
2030(define-public python-testtools
2031 (package
2032 (name "python-testtools")
2033 (version "1.4.0")
2034 (source
2035 (origin
2036 (method url-fetch)
2037 (uri (pypi-uri "testtools" version))
2038 (sha256
2039 (base32
2040 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
2041 (build-system python-build-system)
2042 (arguments
2043 `(#:phases
2044 (modify-phases %standard-phases
2045 (add-after 'unpack 'fix-module-imports
2046 (lambda _
2047 (substitute* "setup.py"
2048 (("'unittest2>=0.8.0',") ""))
2049 (substitute* '("testtools/testcase.py"
2050 "testtools/testsuite.py"
2051 "testtools/run.py"
2052 "testtools/tests/test_run.py"
2053 "testtools/tests/test_testsuite.py"
2054 "testtools/tests/test_deferredruntest.py")
2055 ;; unittest2 is a backport of Python2.7 features to Python 2.4.
2056 (("import unittest2 as unittest") "import unittest")
2057 (("import unittest2") "import unittest as unittest2")
2058 (("from unittest2 import") "from unittest import"))
2059 (substitute* "testtools/tests/test_testresult.py"
2060 ;; NUL in source code is not allowed (raises ValueError).
2061 (("\\x00\\x04") "\\x04"))
2062 #t)))))
2063 (propagated-inputs
2064 `(("python-mimeparse" ,python-mimeparse)
2065 ("python-extras" ,python-extras)))
2066 (home-page "https://github.com/testing-cabal/testtools")
2067 (synopsis
2068 "Extensions to the Python standard library unit testing framework")
2069 (description
2070 "Testtools extends the Python standard library unit testing framework to
2071provide matchers, more debugging information, and cross-Python
2072compatibility.")
2073 (license license:psfl)))
2074
2075(define-public python2-testtools
2076 (package-with-python2 python-testtools))
2077
2078(define-public python-testscenarios
2079 (package
2080 (name "python-testscenarios")
2081 (version "0.4")
2082 (source
2083 (origin
2084 (method url-fetch)
2085 (uri (string-append
2086 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2087 version ".tar.gz"))
2088 (sha256
2089 (base32
2090 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2091 (build-system python-build-system)
2092 (propagated-inputs
2093 `(("python-testtools" ,python-testtools)))
2094 (home-page "https://launchpad.net/testscenarios")
2095 (synopsis "Pyunit extension for dependency injection")
2096 (description
2097 "Testscenarios provides clean dependency injection for Python unittest
2098style tests.")
2099 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2100
2101(define-public python2-testscenarios
2102 (package-with-python2 python-testscenarios))
2103
2104(define-public python-testresources
2105 (package
2106 (name "python-testresources")
2107 (version "0.2.7")
2108 (source
2109 (origin
2110 (method url-fetch)
2111 (uri (string-append
2112 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2113 version ".tar.gz"))
2114 (sha256
2115 (base32
2116 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2117 (build-system python-build-system)
2118 (home-page "https://launchpad.net/testresources")
2119 (synopsis
2120 "Pyunit extension for managing test resources")
2121 (description
2122 "Testresources is an extension to Python's unittest to allow declarative
2123use of resources by test cases.")
2124 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2125
2126(define-public python2-testresources
2127 (package-with-python2 python-testresources))
2128
2129(define-public python-subunit
2130 (package
2131 (name "python-subunit")
2132 (version "0.0.21")
2133 (source
2134 (origin
2135 (method url-fetch)
2136 (uri (string-append
2137 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2138 version ".tar.gz"))
2139 (sha256
2140 (base32
2141 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2142 (build-system python-build-system)
2143 (propagated-inputs
2144 `(("python-extras" ,python-extras)
2145 ("python-mimeparse" ,python-mimeparse)))
2146 (native-inputs
2147 `(("python-testscenarios" ,python-testscenarios)))
2148 (home-page "http://launchpad.net/subunit")
2149 (synopsis "Python implementation of the subunit protocol")
2150 (description
2151 "Python-subunit is a Python implementation of the subunit test streaming
2152protocol.")
2153 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
2154
2155(define-public python2-subunit
2156 (package-with-python2 python-subunit))
2157
2158;; Recent versions of python-fixtures and python-testrepository need
2159;; python-pbr for packaging, which itself needs these two packages for
2160;; testing.
2161;; To fix this circular dependency, we use a build of python-pbr, based on the
2162;; same source, just without any test dependencies and with tests disabled.
2163;; python-pbr-minmal is then used to package python-fixtures and
2164;; python-testrepository.
2165;; Strictly speaking we currently could remove the test-requirements from the
2166;; normal python-pbr package (and save this package) since test are disabled
2167;; there anyway. But this may change in future.
2168(define python-pbr-minimal
2169 (package
2170 (name "python-pbr-minimal")
2171 (version "1.10.0")
2172 (source
2173 (origin
2174 (method url-fetch)
2175 (uri (pypi-uri "pbr" version))
2176 (sha256
2177 (base32
2178 "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))
2179 (patches (search-patches "python-pbr-fix-man-page-support.patch"))))
2180 (build-system python-build-system)
2181 (arguments
2182 `(#:tests? #f))
2183 (home-page "http://docs.openstack.org/developer/pbr/")
2184 (synopsis "Minimal build of python-pbr used for bootstrapping")
2185 (description
2186 "Used only for bootstrapping python2-pbr, you should not need this.")
2187 (license license:asl2.0)))
2188
2189(define python2-pbr-minimal
2190 (package-with-python2 python-pbr-minimal))
2191
2192(define-public python-pbr
2193 (package
2194 (inherit python-pbr-minimal)
2195 (name "python-pbr")
2196 (arguments
2197 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2198 (propagated-inputs
2199 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2200 (native-inputs
2201 `(("python-fixtures" ,python-fixtures)
2202 ;; discover, coverage, hacking, subunit
2203 ("python-mock" ,python-mock)
2204 ("python-six" ,python-six)
2205 ("python-sphinx" ,python-sphinx)
2206 ("python-testrepository" ,python-testrepository)
2207 ("python-testresources" ,python-testresources)
2208 ("python-testscenarios" ,python-testscenarios)
2209 ("python-testtools" ,python-testtools)
2210 ("python-virtualenv" ,python-virtualenv)))
2211 (synopsis "Enhance the default behavior of Python’s setuptools")
2212 (description
2213 "Python Build Reasonableness (PBR) is a library that injects some useful
2214and sensible default behaviors into your setuptools run. It will set
2215versions, process requirements files and generate AUTHORS and ChangeLog file
2216from git information.
2217")))
2218
2219(define-public python2-pbr
2220 (package-with-python2 python-pbr))
2221
2222(define-public python-fixtures
2223 (package
2224 (name "python-fixtures")
2225 (version "1.4.0")
2226 (source
2227 (origin
2228 (method url-fetch)
2229 (uri (pypi-uri "fixtures" version))
2230 (sha256
2231 (base32
2232 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
2233 (build-system python-build-system)
2234 (arguments
2235 '(#:phases
2236 (modify-phases %standard-phases
2237 (replace 'check
2238 (lambda _
2239 (zero? (system* "python" "-m" "testtools.run"
2240 "fixtures.test_suite")))))))
2241 (propagated-inputs
2242 `(("python-six" ,python-six)))
2243 (native-inputs
2244 `(("python-mock" ,python-mock)
2245 ("python-pbr-minimal" ,python-pbr-minimal)
2246 ("python-testtools" ,python-testtools)))
2247 (home-page "https://launchpad.net/python-fixtures")
2248 (synopsis "Python test fixture library")
2249 (description
2250 "Fixtures provides a way to create reusable state, useful when writing
2251Python tests.")
2252 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
2253
2254(define-public python2-fixtures
2255 (package-with-python2 python-fixtures))
2256
2257(define-public python-testrepository
2258 (package
2259 (name "python-testrepository")
2260 (version "0.0.20")
2261 (source
2262 (origin
2263 (method url-fetch)
2264 (uri (string-append
2265 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2266 version ".tar.gz"))
2267 (sha256
2268 (base32
2269 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2270 (build-system python-build-system)
2271 (arguments
2272 ;; FIXME: Many tests are failing.
2273 '(#:tests? #f))
2274 (propagated-inputs
2275 `(("python-fixtures" ,python-fixtures)
2276 ("python-subunit" ,python-subunit)
2277 ("python-testtools" ,python-testtools)))
2278 (native-inputs
2279 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
2280 ("python-mimeparse" ,python-mimeparse)))
2281 (home-page "https://launchpad.net/testrepository")
2282 (synopsis "Database for Python test results")
2283 (description "Testrepository provides a database of test results which can
2284be used as part of a developer's workflow to check things such as what tests
2285have failed since the last commit or what tests are currently failing.")
2286 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
2287
2288(define-public python2-testrepository
2289 (package-with-python2 python-testrepository))
2290
2291(define-public python-coverage
2292 (package
2293 (name "python-coverage")
2294 (version "4.1")
2295 (source
2296 (origin
2297 (method url-fetch)
2298 (uri (pypi-uri "coverage" version))
2299 (sha256
2300 (base32
2301 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
2302 (build-system python-build-system)
2303 (arguments
2304 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2305 '(#:tests? #f))
2306 (home-page "http://nedbatchelder.com/code/coverage")
2307 (synopsis "Code coverage measurement for Python")
2308 (description
2309 "Coverage measures code coverage, typically during test execution. It
2310uses the code analysis tools and tracing hooks provided in the Python standard
2311library to determine which lines are executable, and which have been
2312executed.")
2313 (license license:bsd-3)))
2314
2315(define-public python2-coverage
2316 (package-with-python2 python-coverage))
2317
2318(define-public python-cov-core
2319 (package
2320 (name "python-cov-core")
2321 (version "1.15.0")
2322 (source
2323 (origin
2324 (method url-fetch)
2325 (uri (pypi-uri "cov-core" version))
2326 (sha256
2327 (base32
2328 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2329 (build-system python-build-system)
2330 (propagated-inputs
2331 `(("python-coverage" ,python-coverage)))
2332 (home-page "https://github.com/schlamar/cov-core")
2333 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
2334 (description
2335 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2336and @code{nose2-cov}. It is useful for developing coverage plugins for these
2337testing frameworks.")
2338 (license license:expat)))
2339
2340(define-public python2-cov-core
2341 (package-with-python2 python-cov-core))
2342
2343(define-public python-discover
2344 (package
2345 (name "python-discover")
2346 (version "0.4.0")
2347 (source
2348 (origin
2349 (method url-fetch)
2350 (uri (string-append
2351 "https://pypi.python.org/packages/source/d/discover/discover-"
2352 version ".tar.gz"))
2353 (sha256
2354 (base32
2355 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2356 (build-system python-build-system)
2357 (home-page "http://pypi.python.org/pypi/discover/")
2358 (synopsis
2359 "Python test discovery for unittest")
2360 (description
2361 "Discover provides test discovery for unittest, a feature that has been
2362backported from Python 2.7 for Python 2.4+.")
2363 (license license:bsd-3)))
2364
2365(define-public python2-discover
2366 (package-with-python2 python-discover))
2367
2368(define-public behave
2369 (package
2370 (name "behave")
2371 (version "1.2.5")
2372 (source (origin
2373 (method url-fetch)
2374 (uri (pypi-uri "behave" version ".tar.bz2"))
2375 (sha256
2376 (base32
2377 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
2378 (build-system python-build-system)
2379 (propagated-inputs
2380 `(("python-six" ,python-six)
2381 ("python-parse" ,python-parse)
2382 ("python-parse-type" ,python-parse-type)))
2383 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2384 ;PyHamcrest>=1.8
2385 (home-page "https://github.com/behave/behave")
2386 (synopsis "Python behavior-driven development")
2387 (description
2388 "Behave is a tool for behavior-driven development in python.
2389Behavior-driven development (or BDD) is an agile software development
2390technique that encourages collaboration between developers, QA and
2391non-technical or business participants in a software project. Behave uses
2392tests written in a natural language style, backed up by Python code.")
2393 (license license:x11)))
2394
2395(define-public python-exif-read
2396 (package
2397 (name "python-exif-read")
2398 (version "2.1.2")
2399 (source (origin
2400 (method url-fetch)
2401 (uri (pypi-uri "ExifRead" version))
2402 (sha256
2403 (base32
2404 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
2405 (build-system python-build-system)
2406 (arguments `(#:tests? #f)) ; no tests
2407 (home-page "https://github.com/ianare/exif-py")
2408 (synopsis "Python library to extract EXIF data from image files")
2409 (description
2410 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2411files.")
2412 (license license:bsd-3)))
2413
2414(define-public python2-exif-read
2415 (package-with-python2 python-exif-read))
2416
2417(define-public python-pyld
2418 (package
2419 (name "python-pyld")
2420 (version "0.7.1")
2421 (source (origin
2422 (method url-fetch)
2423 (uri (pypi-uri "PyLD" version))
2424 (sha256
2425 (base32
2426 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
2427 (build-system python-build-system)
2428 (arguments `(#:tests? #f)) ; no tests
2429 (home-page "https://github.com/digitalbazaar/pyld")
2430 (synopsis "Python implementation of the JSON-LD specification")
2431 (description
2432 "PyLD is an implementation of the JSON-LD specification.")
2433 (license license:bsd-3)))
2434
2435(define-public python2-pyld
2436 (package-with-python2 python-pyld))
2437
2438(define-public python-certifi
2439 (package
2440 (name "python-certifi")
2441 (version "2017.1.23")
2442 (source (origin
2443 (method url-fetch)
2444 (uri (pypi-uri "certifi" version))
2445 (sha256
2446 (base32
2447 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
2448 (build-system python-build-system)
2449 (home-page "https://certifi.io/")
2450 (synopsis "Python CA certificate bundle")
2451 (description
2452 "Certifi is a Python library that contains a CA certificate bundle, which
2453is used by the Requests library to verify HTTPS requests.")
2454 (license license:asl2.0)))
2455
2456(define-public python2-certifi
2457 (package-with-python2 python-certifi))
2458
2459(define-public python-click
2460 (package
2461 (name "python-click")
2462 (version "6.7")
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (pypi-uri "click" version))
2467 (sha256
2468 (base32
2469 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
2470 (build-system python-build-system)
2471 (arguments
2472 `(#:phases
2473 (modify-phases %standard-phases
2474 (add-after 'unpack 'fix-paths
2475 (lambda* (#:key inputs #:allow-other-keys)
2476 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2477 "cross-libc" "libc"))))
2478 (substitute* "click/_unicodefun.py"
2479 (("'locale'")
2480 (string-append "'" glibc "/bin/locale'"))))
2481 #t))
2482 (replace 'check
2483 (lambda _
2484 (zero? (system* "make" "test")))))))
2485 (native-inputs
2486 `(("python-pytest" ,python-pytest)))
2487 (home-page "http://click.pocoo.org")
2488 (synopsis "Command line library for Python")
2489 (description
2490 "Click is a Python package for creating command line interfaces in a
2491composable way with as little code as necessary. Its name stands for
2492\"Command Line Interface Creation Kit\". It's highly configurable but comes
2493with sensible defaults out of the box.")
2494 (license license:bsd-3)))
2495
2496(define-public python2-click
2497 (package-with-python2 python-click))
2498
2499(define-public python-wheel
2500 (package
2501 (name "python-wheel")
2502 (version "0.30.0a0")
2503 (source
2504 (origin
2505 (method url-fetch)
2506 (uri (pypi-uri "wheel" version))
2507 (sha256
2508 (base32
2509 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
2510 (build-system python-build-system)
2511 (native-inputs
2512 `(("python-jsonschema" ,python-jsonschema)
2513 ("python-pytest-cov" ,python-pytest-cov)))
2514 (home-page "https://bitbucket.org/pypa/wheel/")
2515 (synopsis "Format for built Python packages")
2516 (description
2517 "A wheel is a ZIP-format archive with a specially formatted filename and
2518the @code{.whl} extension. It is designed to contain all the files for a PEP
2519376 compatible install in a way that is very close to the on-disk format. Many
2520packages will be properly installed with only the @code{Unpack} step and the
2521unpacked archive preserves enough information to @code{Spread} (copy data and
2522scripts to their final locations) at any later time. Wheel files can be
2523installed with a newer @code{pip} or with wheel's own command line utility.")
2524 (license license:expat)
2525 (properties `((python2-variant . ,(delay python2-wheel))))))
2526
2527(define-public python2-wheel
2528 (let ((wheel (package-with-python2
2529 (strip-python2-variant python-wheel))))
2530 (package (inherit wheel)
2531 (native-inputs `(("python2-functools32" ,python2-functools32)
2532 ,@(package-native-inputs wheel))))))
2533
2534
2535(define-public python-requests
2536 (package
2537 (name "python-requests")
2538 (version "2.13.0")
2539 (source (origin
2540 (method url-fetch)
2541 (uri (pypi-uri "requests" version))
2542 (sha256
2543 (base32
2544 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
2545 ;; TODO: unbundle urllib3 and chardet.
2546 (build-system python-build-system)
2547 (arguments
2548 ;; FIXME: Some tests require network access.
2549 '(#:tests? #f))
2550 (home-page "http://python-requests.org/")
2551 (synopsis "Python HTTP library")
2552 (description
2553 "Requests is a Python HTTP client library. It aims to be easier to use
2554than Python’s urllib2 library.")
2555 (license license:asl2.0)))
2556
2557;; Some software requires an older version of Requests, notably Docker
2558;; Compose.
2559(define-public python-requests-2.7
2560 (package (inherit python-requests)
2561 (version "2.7.0")
2562 (source (origin
2563 (method url-fetch)
2564 (uri (pypi-uri "requests" version))
2565 (sha256
2566 (base32
2567 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2568
2569(define-public python2-requests
2570 (package-with-python2 python-requests))
2571
2572(define-public python-vcversioner
2573 (package
2574 (name "python-vcversioner")
2575 (version "2.16.0.0")
2576 (source
2577 (origin
2578 (method url-fetch)
2579 (uri (pypi-uri "vcversioner" version))
2580 (sha256
2581 (base32
2582 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
2583 (build-system python-build-system)
2584 (synopsis "Python library for version number discovery")
2585 (description "Vcversioner is a Python library that inspects tagging
2586information in a variety of version control systems in order to discover
2587version numbers.")
2588 (home-page "https://github.com/habnabit/vcversioner")
2589 (license license:isc)))
2590
2591(define-public python2-vcversioner
2592 (package-with-python2 python-vcversioner))
2593
2594(define-public python-jsonschema
2595 (package
2596 (name "python-jsonschema")
2597 (version "2.5.1")
2598 (source (origin
2599 (method url-fetch)
2600 (uri
2601 (string-append
2602 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2603 version ".tar.gz"))
2604 (sha256
2605 (base32
2606 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
2607 (build-system python-build-system)
2608 (arguments
2609 '(#:phases
2610 (modify-phases %standard-phases
2611 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
2612 (native-inputs
2613 `(("python-nose" ,python-nose)
2614 ("python-vcversioner" ,python-vcversioner)))
2615 (home-page "https://github.com/Julian/jsonschema")
2616 (synopsis "Implementation of JSON Schema for Python")
2617 (description
2618 "Jsonschema is an implementation of JSON Schema for Python.")
2619 (license license:expat)
2620 (properties `((python2-variant . ,(delay python2-jsonschema))))))
2621
2622(define-public python2-jsonschema
2623 (let ((jsonschema (package-with-python2
2624 (strip-python2-variant python-jsonschema))))
2625 (package (inherit jsonschema)
2626 (native-inputs
2627 `(("python2-mock" ,python2-mock)
2628 ,@(package-native-inputs jsonschema)))
2629 (propagated-inputs
2630 `(("python2-functools32" ,python2-functools32))))))
2631
2632(define-public python-kitchen
2633 (package
2634 (name "python-kitchen")
2635 (version "1.2.4")
2636 (source
2637 (origin
2638 (method url-fetch)
2639 (uri (pypi-uri "kitchen" version))
2640 (sha256
2641 (base32
2642 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2643 (build-system python-build-system)
2644 (propagated-inputs
2645 `(("python-chardet" ,python-chardet)))
2646 (home-page "https://github.com/fedora-infra/kitchen")
2647 (synopsis "Python API for snippets")
2648 (description "@code{kitchen} module provides a python API for all sorts of
2649little useful snippets of code that everybody ends up writing for their projects
2650but never seem big enough to build an independent release. Use kitchen and stop
2651cutting and pasting that code over and over.")
2652 (license (list license:lgpl2.1+
2653 ;; subprocess.py, test_subprocess.py,
2654 ;; kitchen/pycompat25/defaultdict.py:
2655 license:psfl))))
2656
2657(define-public python2-kitchen
2658 (package-with-python2 python-kitchen))
2659
2660(define-public python-unidecode
2661 (package
2662 (name "python-unidecode")
2663 (version "0.04.20")
2664 (source (origin
2665 (method url-fetch)
2666 (uri (pypi-uri "Unidecode" version))
2667 (sha256
2668 (base32
2669 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
2670 (build-system python-build-system)
2671 (home-page "https://pypi.python.org/pypi/Unidecode")
2672 (synopsis "ASCII transliterations of Unicode text")
2673 (description
2674 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2675useful when integrating with legacy code that doesn't support Unicode, or for
2676ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2677machine identifiers from human-readable Unicode strings that should still be
2678somewhat intelligeble.")
2679 (license license:gpl2+)))
2680
2681(define-public python2-unidecode
2682 (package-with-python2 python-unidecode))
2683
2684(define-public python-pyjwt
2685 (package
2686 (name "python-pyjwt")
2687 (version "1.4.0")
2688 (source
2689 (origin
2690 (method url-fetch)
2691 (uri (pypi-uri "PyJWT" version))
2692 (sha256
2693 (base32
2694 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
2695 (build-system python-build-system)
2696 (native-inputs
2697 `(("python-pytest" ,python-pytest)
2698 ("python-pytest-cov" ,python-pytest-cov)
2699 ("python-pytest-runner" ,python-pytest-runner)))
2700 (home-page "https://github.com/progrium/pyjwt")
2701 (synopsis "JSON Web Token implementation in Python")
2702 (description
2703 "PyJWT is a JSON Web Token implementation written in Python.")
2704 (license license:expat)))
2705
2706(define-public python2-pyjwt
2707 (package-with-python2 python-pyjwt))
2708
2709(define-public python-pykka
2710 (package
2711 (name "python-pykka")
2712 (version "1.2.1")
2713 (source
2714 (origin
2715 (method url-fetch)
2716 (uri (pypi-uri "Pykka" version))
2717 (sha256
2718 (base32
2719 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2720 (build-system python-build-system)
2721 (native-inputs
2722 `(("python-mock" ,python-mock)
2723 ("python-nose" ,python-nose)
2724 ("python-gevent" ,python-gevent)
2725 ("python-eventlet" ,python-eventlet)))
2726 (home-page "https://www.pykka.org/")
2727 (synopsis "Pykka is a Python implementation of the actor model")
2728 (description
2729 "Pykka is a Python implementation of the actor model.
2730The actor model introduces some simple rules to control the sharing
2731of state and cooperation between execution units, which makes it
2732easier to build concurrent applications.")
2733 (license license:asl2.0)))
2734
2735(define-public python2-pykka
2736 (package-with-python2 python-pykka))
2737
2738(define-public python-oauthlib
2739 (package
2740 (name "python-oauthlib")
2741 (version "1.0.3")
2742 (source (origin
2743 (method url-fetch)
2744 (uri (pypi-uri "oauthlib" version))
2745 (sha256
2746 (base32
2747 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2748 (build-system python-build-system)
2749 (native-inputs
2750 `(("python-nose" ,python-nose)
2751 ("python-mock" ,python-mock)
2752 ("python-cryptography" ,python-cryptography)
2753 ("python-pyjwt" ,python-pyjwt)
2754 ("python-blinker" ,python-blinker)))
2755 (home-page "https://github.com/idan/oauthlib")
2756 (synopsis "OAuth implementation for Python")
2757 (description
2758 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2759OAuth request-signing logic.")
2760 (license license:bsd-3)
2761 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2762
2763(define-public python2-oauthlib
2764 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2765 (package
2766 (inherit base)
2767 (native-inputs `(("python2-unittest2" ,python2-unittest2)
2768 ,@(package-native-inputs base))))))
2769
2770(define-public python-itsdangerous
2771 (package
2772 (name "python-itsdangerous")
2773 (version "0.24")
2774 (source
2775 (origin
2776 (method url-fetch)
2777 (uri (string-append
2778 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2779 version ".tar.gz"))
2780 (sha256
2781 (base32
2782 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2783 (build-system python-build-system)
2784 (home-page "https://github.com/mitsuhiko/itsdangerous")
2785 (synopsis "Python library for passing data to/from untrusted environments")
2786 (description
2787 "Itsdangerous provides various helpers to pass trusted data to untrusted
2788environments and back.")
2789 (license license:bsd-3)))
2790
2791(define-public python2-itsdangerous
2792 (package-with-python2 python-itsdangerous))
2793
2794(define-public python-pyyaml
2795 (package
2796 (name "python-pyyaml")
2797 (version "3.12")
2798 (source
2799 (origin
2800 (method url-fetch)
2801 (uri (pypi-uri "PyYAML" version))
2802 (sha256
2803 (base32
2804 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
2805 (build-system python-build-system)
2806 (inputs
2807 `(("libyaml" ,libyaml)))
2808 (home-page "http://pyyaml.org/wiki/PyYAML")
2809 (synopsis "YAML parser and emitter for Python")
2810 (description
2811 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2812complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2813API, and sensible error messages. PyYAML supports standard YAML tags and
2814provides Python-specific tags that allow to represent an arbitrary Python
2815object.")
2816 (license license:expat)))
2817
2818(define-public python2-pyyaml
2819 (package-with-python2 python-pyyaml))
2820
2821(define-public python-virtualenv
2822 (package
2823 (name "python-virtualenv")
2824 (version "15.0.3")
2825 (source
2826 (origin
2827 (method url-fetch)
2828 (uri (pypi-uri "virtualenv" version))
2829 (sha256
2830 (base32
2831 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
2832 (build-system python-build-system)
2833 (arguments
2834 `(#:phases
2835 (modify-phases %standard-phases
2836 (replace 'check
2837 (lambda _
2838 ;; Disable failing test. See upstream bug report
2839 ;; https://github.com/pypa/virtualenv/issues/957
2840 (substitute* "tests/test_virtualenv.py"
2841 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2842 (zero? (system* "py.test")))))))
2843 (native-inputs
2844 `(("python-mock" ,python-mock)
2845 ("python-pytest" ,python-pytest)))
2846 (home-page "https://virtualenv.pypa.io/")
2847 (synopsis "Virtual Python environment builder")
2848 (description
2849 "Virtualenv is a tool to create isolated Python environments.")
2850 (license license:expat)))
2851
2852(define-public python2-virtualenv
2853 (package-with-python2 python-virtualenv))
2854
2855(define-public python-markupsafe
2856 (package
2857 (name "python-markupsafe")
2858 (version "0.23")
2859 (source
2860 (origin
2861 (method url-fetch)
2862 (uri (string-append
2863 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2864 version ".tar.gz"))
2865 (sha256
2866 (base32
2867 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2868 (build-system python-build-system)
2869 (home-page "https://github.com/mitsuhiko/markupsafe")
2870 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2871 (description
2872 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2873for Python.")
2874 (license license:bsd-3)))
2875
2876(define-public python2-markupsafe
2877 (package-with-python2 python-markupsafe))
2878
2879(define-public python-jinja2
2880 (package
2881 (name "python-jinja2")
2882 (version "2.8")
2883 (source
2884 (origin
2885 (method url-fetch)
2886 (uri (pypi-uri "Jinja2" version))
2887 (sha256
2888 (base32
2889 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
2890 (build-system python-build-system)
2891 (propagated-inputs
2892 `(("python-markupsafe" ,python-markupsafe)))
2893 (home-page "http://jinja.pocoo.org/")
2894 (synopsis "Python template engine")
2895 (description
2896 "Jinja2 is a small but fast and easy to use stand-alone template engine
2897written in pure Python.")
2898 (license license:bsd-3)))
2899
2900(define-public python2-jinja2
2901 (package-with-python2 python-jinja2))
2902
2903(define-public python-pystache
2904 (package
2905 (name "python-pystache")
2906 (version "0.5.4")
2907 (source (origin
2908 (method url-fetch)
2909 (uri (pypi-uri "pystache" version))
2910 (sha256
2911 (base32
2912 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2913 (build-system python-build-system)
2914 (arguments
2915 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
2916 (home-page "http://defunkt.io/pystache/")
2917 (synopsis "Python logic-less template engine")
2918 (description
2919 "Pystache is a Python implementation of the framework agnostic,
2920logic-free templating system Mustache.")
2921 (license license:expat)
2922 (properties `((python2-variant . ,(delay python2-pystache))))))
2923
2924(define-public python2-pystache
2925 (package (inherit (package-with-python2
2926 (strip-python2-variant python-pystache)))
2927 (arguments
2928 `(#:python ,python-2
2929 #:phases
2930 (modify-phases %standard-phases
2931 (replace 'check
2932 (lambda _
2933 (zero? (system* "python" "test_pystache.py")))))))))
2934
2935(define-public python-joblib
2936 (package
2937 (name "python-joblib")
2938 (version "0.10.3")
2939 (source (origin
2940 (method url-fetch)
2941 (uri (pypi-uri "joblib" version))
2942 (sha256
2943 (base32
2944 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2945 (modules '((guix build utils)))
2946 (snippet
2947 '(begin
2948 ;; Remove pre-compiled .pyc files from source.
2949 (for-each delete-file-recursively
2950 (find-files "." "__pycache__" #:directories? #t))
2951 (for-each delete-file (find-files "." "\\.pyc$"))
2952 #t))))
2953 (build-system python-build-system)
2954 (arguments
2955 `(#:phases
2956 (modify-phases %standard-phases
2957 (add-before 'check 'disable-failing-tests
2958 (lambda _
2959 ;; This numpydoc tests fails for unknown reasons
2960 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2961 ;; This numpydoc test depends on matplotlib, which is not a
2962 ;; required input.
2963 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2964 ;; These tests fail to execute sys.executable
2965 (substitute* "joblib/test/test_parallel.py"
2966 (("import nose" line)
2967 (string-append "from nose.plugins.skip import SkipTest\n" line))
2968 (("def test_nested_parallel_warnings" line)
2969 (string-append "@SkipTest\n" line))
2970 (("def test_parallel_with_interactively_defined_functions" line)
2971 (string-append "@SkipTest\n" line)))
2972 #t)))))
2973 ;; Provide nose to enable tests command
2974 (native-inputs
2975 `(("python-nose" ,python-nose)
2976 ("python-sphinx" ,python-sphinx)
2977 ("python-docutils" ,python-docutils)
2978 ("python-numpydoc" ,python-numpydoc)))
2979 (home-page "http://pythonhosted.org/joblib/")
2980 (synopsis "Using Python functions as pipeline jobs")
2981 (description
2982 "Joblib is a set of tools to provide lightweight pipelining in Python.
2983In particular, joblib offers: transparent disk-caching of the output values
2984and lazy re-evaluation (memoize pattern), easy simple parallel computing
2985logging and tracing of the execution.")
2986 (license license:bsd-3)))
2987
2988(define-public python2-joblib
2989 (package-with-python2 python-joblib))
2990
2991(define-public python-docutils
2992 (package
2993 (name "python-docutils")
2994 (version "0.13.1")
2995 (source
2996 (origin
2997 (method url-fetch)
2998 (uri (pypi-uri "docutils" version))
2999 (sha256
3000 (base32
3001 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3002 (build-system python-build-system)
3003 (arguments
3004 '(#:tests? #f)) ; no setup.py test command
3005 (home-page "http://docutils.sourceforge.net/")
3006 (synopsis "Python Documentation Utilities")
3007 (description
3008 "Docutils is a modular system for processing documentation into useful
3009formats, such as HTML, XML, and LaTeX. For input Docutils supports
3010reStructuredText.")
3011 ;; Most of the source code is public domain, but some source files are
3012 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3013 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3014
3015(define-public python2-docutils
3016 (package-with-python2 python-docutils))
3017
3018(define-public python-pygments
3019 (package
3020 (name "python-pygments")
3021 (version "2.1.3")
3022 (source
3023 (origin
3024 (method url-fetch)
3025 (uri (pypi-uri "Pygments" version))
3026 (sha256
3027 (base32
3028 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
3029 (build-system python-build-system)
3030 (arguments
3031 ;; FIXME: Tests require sphinx, which depends on this.
3032 '(#:tests? #f))
3033 (home-page "http://pygments.org/")
3034 (synopsis "Syntax highlighting")
3035 (description
3036 "Pygments is a syntax highlighting package written in Python.")
3037 (license license:bsd-2)))
3038
3039(define-public python2-pygments
3040 (package-with-python2 python-pygments))
3041
3042(define-public python-sphinx
3043 (package
3044 (name "python-sphinx")
3045 (version "1.5.1")
3046 (source
3047 (origin
3048 (method url-fetch)
3049 (uri (pypi-uri "Sphinx" version))
3050 (sha256
3051 (base32
3052 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
3053 (build-system python-build-system)
3054 (arguments
3055 `(#:phases
3056 (modify-phases %standard-phases
3057 (replace 'check
3058 (lambda _
3059 ;; Requires Internet access.
3060 (delete-file "tests/test_build_linkcheck.py")
3061 (zero? (system* "make" "test")))))))
3062 (propagated-inputs
3063 `(("python-imagesize" ,python-imagesize)
3064 ("python-sphinx-alabaster-theme"
3065 ,python-sphinx-alabaster-theme)
3066 ("python-babel" ,python-babel)
3067 ("python-snowballstemmer" ,python-snowballstemmer)
3068 ("python-docutils" ,python-docutils)
3069 ("python-jinja2" ,python-jinja2)
3070 ("python-pygments" ,python-pygments)
3071 ("python-requests" ,python-requests)
3072 ("python-six" ,python-six)))
3073 (native-inputs
3074 `(("graphviz" ,graphviz)
3075 ("python-html5lib" ,python-html5lib)
3076 ("python-mock" ,python-mock)
3077 ("python-nose" ,python-nose)))
3078 (home-page "http://sphinx-doc.org/")
3079 (synopsis "Python documentation generator")
3080 (description "Sphinx is a tool that makes it easy to create documentation
3081for Python projects or other documents consisting of multiple reStructuredText
3082sources.")
3083 (license license:bsd-3)
3084 (properties `((python2-variant . ,(delay python2-sphinx))))))
3085
3086(define-public python-sphinx-1.5.3
3087 (package
3088 (inherit python-sphinx)
3089 (name "python-sphinx")
3090 (version "1.5.3")
3091 (source
3092 (origin
3093 (method url-fetch)
3094 (uri (pypi-uri "Sphinx" version))
3095 (sha256
3096 (base32
3097 "0kw1axswbvaavr8ggyf4qr6hnisnrzlbkkcdada69vk1x9xjassg"))))
3098 (native-inputs
3099 `(("python-pytest" ,python-pytest-3.0)
3100 ,@(package-native-inputs python-sphinx)))))
3101
3102(define-public python2-sphinx
3103 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3104 (package
3105 (inherit base)
3106 (native-inputs `(("python2-mock" ,python2-mock)
3107 ("python2-enum34" ,python2-enum34)
3108 ,@(package-native-inputs base)))
3109 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3110 ,@(package-propagated-inputs base))))))
3111
3112(define-public python-sphinx-rtd-theme
3113 (package
3114 (name "python-sphinx-rtd-theme")
3115 (version "0.1.6")
3116 (source
3117 (origin
3118 (method url-fetch)
3119 (uri (string-append "https://pypi.python.org/packages/source/s/"
3120 "sphinx_rtd_theme/sphinx_rtd_theme-"
3121 version ".tar.gz"))
3122 (sha256
3123 (base32
3124 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
3125 (build-system python-build-system)
3126 (arguments '(#:tests? #f)) ; No tests.
3127 (propagated-inputs
3128 `(("python-sphinx" ,python-sphinx)))
3129 (home-page "https://github.com/snide/sphinx_rtd_theme/")
3130 (synopsis "ReadTheDocs.org theme for Sphinx")
3131 (description "A theme for Sphinx used by ReadTheDocs.org.")
3132 (license license:expat)))
3133
3134(define-public python2-sphinx-rtd-theme
3135 (package-with-python2 python-sphinx-rtd-theme))
3136
3137(define-public python-rst.linker
3138 (package
3139 (name "python-rst.linker")
3140 (version "1.7")
3141 (source
3142 (origin
3143 (method url-fetch)
3144 (uri (pypi-uri "rst.linker" version))
3145 (sha256
3146 (base32
3147 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
3148 (build-system python-build-system)
3149 (propagated-inputs
3150 `(("python-dateutil" ,python-dateutil)
3151 ("python-six" ,python-six)))
3152 (native-inputs
3153 `(("python-setuptools-scm" ,python-setuptools-scm)))
3154 ;; Test would require path.py, which would introduce a cyclic dependence.
3155 (arguments `(#:tests? #f))
3156 ;; Note: As of version 1.7 the documentation is not worth building.
3157 (home-page "https://github.com/jaraco/rst.linker")
3158 (synopsis "Sphinx plugin to add links and timestamps")
3159 (description "rst.linker allows to automatically replace text by a
3160reStructuredText external reference or timestamps. It's primary purpose is to
3161augment the changelog, but it can be used for other documents, too.")
3162 (license license:expat)))
3163
3164(define-public python2-rst.linker
3165 (package-with-python2 python-rst.linker))
3166
3167(define-public python-feedgenerator
3168 (package
3169 (name "python-feedgenerator")
3170 (version "1.9")
3171 (source
3172 (origin
3173 (method url-fetch)
3174 (uri (pypi-uri "feedgenerator" version))
3175 (sha256
3176 (base32
3177 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
3178 (modules '((guix build utils)))
3179 (snippet
3180 '(begin
3181 ;; Remove pre-compiled .pyc files from source.
3182 (for-each delete-file-recursively
3183 (find-files "." "__pycache__" #:directories? #t))
3184 (for-each delete-file (find-files "." "\\.pyc$"))
3185 #t))))
3186 (build-system python-build-system)
3187 (propagated-inputs
3188 `(("python-pytz" ,python-pytz)
3189 ("python-six" ,python-six)))
3190 (home-page "https://github.com/getpelican/feedgenerator")
3191 (synopsis
3192 "Standalone version of Django's Atom/RSS feed generator")
3193 (description
3194 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3195which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3196 (license license:bsd-3)))
3197
3198(define-public python2-feedgenerator
3199 (package-with-python2 python-feedgenerator))
3200
3201(define-public python-blinker
3202 (package
3203 (name "python-blinker")
3204 (version "1.4")
3205 (source
3206 (origin
3207 (method url-fetch)
3208 (uri (pypi-uri "blinker" version))
3209 (sha256
3210 (base32
3211 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
3212 (build-system python-build-system)
3213 (home-page "http://pythonhosted.org/blinker/")
3214 (synopsis "Fast, simple object-to-object and broadcast signaling")
3215 (description
3216 "Blinker provides a fast dispatching system that allows any number of
3217interested parties to subscribe to events, or \"signals\".")
3218 (license license:expat)))
3219
3220(define-public python2-blinker
3221 (package-with-python2 python-blinker))
3222
3223(define-public pelican
3224 (package
3225 (name "pelican")
3226 (version "3.6.3")
3227 (source
3228 (origin
3229 (method url-fetch)
3230 (uri (pypi-uri "pelican" version))
3231 (sha256
3232 (base32
3233 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
3234 (build-system python-build-system)
3235 (propagated-inputs
3236 `(("python-feedgenerator" ,python-feedgenerator)
3237 ("python-jinja2" ,python-jinja2)
3238 ("python-pygments" ,python-pygments)
3239 ("python-docutils" ,python-docutils)
3240 ("python-pytz" ,python-pytz)
3241 ("python-blinker" ,python-blinker)
3242 ("python-unidecode" ,python-unidecode)
3243 ("python-six" ,python-six)
3244 ("python-dateutil" ,python-dateutil)))
3245 (home-page "http://getpelican.com/")
3246 (arguments
3247 `(;; XXX Requires a lot more packages to do unit tests :P
3248 #:tests? #f
3249 #:phases (modify-phases %standard-phases
3250 (add-before
3251 'install 'adjust-requires
3252 ;; Since feedgenerator is installed from git, it doesn't
3253 ;; conform to the version requirements.
3254 ;;
3255 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3256 ;; version requirement so setuptools doesn't get confused.
3257 (lambda _
3258 (substitute* "setup.py"
3259 (("['\"]feedgenerator.*?['\"]")
3260 "'feedgenerator'")))))))
3261 (synopsis "Python-based static site publishing system")
3262 (description
3263 "Pelican is a tool to generate a static blog from reStructuredText,
3264Markdown input files, and more. Pelican uses Jinja2 for templating
3265and is very extensible.")
3266 (license license:agpl3+)))
3267
3268(define-public python-scikit-learn
3269 (package
3270 (name "python-scikit-learn")
3271 (version "0.18.1")
3272 (source
3273 (origin
3274 (method url-fetch)
3275 (uri (string-append
3276 "https://github.com/scikit-learn/scikit-learn/archive/"
3277 version ".tar.gz"))
3278 (file-name (string-append name "-" version ".tar.gz"))
3279 (sha256
3280 (base32
3281 "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
3282 (build-system python-build-system)
3283 (arguments
3284 `(#:phases
3285 (modify-phases %standard-phases
3286 (delete 'check)
3287 (add-after 'install 'check
3288 ;; Running tests from the source directory requires
3289 ;; an "inplace" build with paths relative to CWD.
3290 ;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
3291 ;; Use the installed version instead.
3292 (lambda* (#:key inputs outputs #:allow-other-keys)
3293 (add-installed-pythonpath inputs outputs)
3294 ;; some tests require access to "$HOME"
3295 (setenv "HOME" "/tmp")
3296 ;; Step out of the source directory just to be sure.
3297 (chdir "..")
3298 (zero? (system* "nosetests" "-v" "sklearn")))))))
3299 (inputs
3300 `(("openblas" ,openblas)))
3301 (native-inputs
3302 `(("python-nose" ,python-nose)
3303 ("python-cython" ,python-cython)))
3304 (propagated-inputs
3305 `(("python-numpy" ,python-numpy)
3306 ("python-scipy" ,python-scipy)))
3307 (home-page "http://scikit-learn.org/")
3308 (synopsis "Machine Learning in Python")
3309 (description
3310 "Scikit-learn provides simple and efficient tools for data
3311mining and data analysis.")
3312 (license license:bsd-3)))
3313
3314(define-public python2-scikit-learn
3315 (package-with-python2 python-scikit-learn))
3316
3317(define-public python-scikit-image
3318 (package
3319 (name "python-scikit-image")
3320 (version "0.11.3")
3321 (source
3322 (origin
3323 (method url-fetch)
3324 (uri (string-append
3325 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3326 version ".tar.gz"))
3327 (sha256
3328 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3329 (build-system python-build-system)
3330 (arguments
3331 ;; TODO: Some tests require running X11 server. Disable them?
3332 '(#:tests? #f))
3333 ;; See DEPENDS.txt for the list of build and run time requiremnts
3334 (propagated-inputs
3335 `(("python-matplotlib" ,python-matplotlib)
3336 ("python-networkx" ,python-networkx)
3337 ("python-scipy" ,python-scipy)
3338 ("python-pillow" ,python-pillow)))
3339 (native-inputs
3340 `(("python-numpy" ,python-numpy)
3341 ("python-cython" ,python-cython)
3342 ("python-six" ,python-six)))
3343 (home-page "http://scikit-image.org/")
3344 (synopsis "Image processing in Python")
3345 (description
3346 "Scikit-image is a collection of algorithms for image processing.")
3347 (license license:bsd-3)))
3348
3349(define-public python2-scikit-image
3350 (package-with-python2 python-scikit-image))
3351
3352(define-public python-redis
3353 (package
3354 (name "python-redis")
3355 (version "2.10.5")
3356 (source
3357 (origin
3358 (method url-fetch)
3359 (uri (pypi-uri "redis" version))
3360 (sha256
3361 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
3362 (build-system python-build-system)
3363 ;; Tests require a running Redis server
3364 (arguments '(#:tests? #f))
3365 ;; As long as we are not running test, we do not need this input :-)
3366 ;;(native-inputs
3367 ;; `(("python-pytest" ,python-pytest)))
3368 (home-page "https://github.com/andymccurdy/redis-py")
3369 (synopsis "Redis Python client")
3370 (description
3371 "This package provides a Python interface to the Redis key-value store.")
3372 (license license:expat)))
3373
3374(define-public python2-redis
3375 (package-with-python2 python-redis))
3376
3377(define-public python-rq
3378 (package
3379 (name "python-rq")
3380 (version "0.7.1")
3381 (source
3382 (origin
3383 (method url-fetch)
3384 (uri (pypi-uri "rq" version))
3385 (sha256
3386 (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
3387 (build-system python-build-system)
3388 (propagated-inputs
3389 `(("python-click" ,python-click)
3390 ("python-redis" ,python-redis)))
3391 (home-page "http://python-rq.org/")
3392 (synopsis "Simple job queues for Python")
3393 (description
3394 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3395processing them in the background with workers. It is backed by Redis and it
3396is designed to have a low barrier to entry.")
3397 (license license:bsd-2)))
3398
3399(define-public python2-rq
3400 (package-with-python2 python-rq))
3401
3402(define-public python-cython
3403 (package
3404 (name "python-cython")
3405 (version "0.25.2")
3406 (source
3407 (origin
3408 (method url-fetch)
3409 (uri (pypi-uri "Cython" version))
3410 (patches (search-patches "python-cython-fix-tests-32bit.patch"))
3411 (sha256
3412 (base32
3413 "01h3lrf6d98j07iakifi81qjszh6faa37ibx7ylva1vsqbwx2hgi"))))
3414 (build-system python-build-system)
3415 ;; we need the full python package and not just the python-wrapper
3416 ;; because we need libpython3.3m.so
3417 (inputs
3418 `(("python" ,python)))
3419 (arguments
3420 `(#:phases
3421 (modify-phases %standard-phases
3422 (add-before 'check 'set-HOME
3423 ;; some tests require access to "$HOME/.cython"
3424 (lambda _ (setenv "HOME" "/tmp")))
3425 (replace 'check
3426 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
3427 (home-page "http://cython.org/")
3428 (synopsis "C extensions for Python")
3429 (description "Cython is an optimising static compiler for both the Python
3430programming language and the extended Cython programming language. It makes
3431writing C extensions for Python as easy as Python itself.")
3432 (license license:asl2.0)
3433 (properties `((python2-variant . ,(delay python2-cython))))))
3434
3435(define-public python2-cython
3436 (package (inherit (package-with-python2
3437 (strip-python2-variant python-cython)))
3438 (name "python2-cython")
3439 (inputs
3440 `(("python-2" ,python-2))))) ; this is not automatically changed
3441
3442;; The RPython toolchain currently does not support Python 3.
3443(define-public python2-rpython
3444 (package
3445 (name "python2-rpython")
3446 (version "0.1.4")
3447 (source
3448 (origin
3449 (method url-fetch)
3450 (uri (pypi-uri "rpython" version))
3451 (sha256
3452 (base32
3453 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3454 (build-system python-build-system)
3455 (arguments `(#:python ,python-2))
3456 (native-inputs
3457 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
3458 (home-page "https://rpython.readthedocs.org")
3459 (synopsis "Framework for implementing interpreters and virtual machines")
3460 (description "RPython is a translation and support framework for
3461producing implementations of dynamic languages, emphasizing a clean separation
3462between language specification and implementation aspects.")
3463 (license license:expat)))
3464
3465(define-public python-numpy
3466 (package
3467 (name "python-numpy")
3468 (version "1.12.0")
3469 (source
3470 (origin
3471 (method url-fetch)
3472 (uri (string-append
3473 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3474 (file-name (string-append name "-" version ".tar.gz"))
3475 (sha256
3476 (base32
3477 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
3478 (build-system python-build-system)
3479 (inputs
3480 `(("openblas" ,openblas)
3481 ("lapack" ,lapack)))
3482 (native-inputs
3483 `(("python-cython" ,python-cython)
3484 ("python-nose" ,python-nose)
3485 ("gfortran" ,gfortran)))
3486 (arguments
3487 `(#:phases
3488 (modify-phases %standard-phases
3489 (add-before 'build 'set-environment-variables
3490 (lambda* (#:key inputs #:allow-other-keys)
3491 (call-with-output-file "site.cfg"
3492 (lambda (port)
3493 (format port
3494 "[openblas]
3495libraries = openblas
3496library_dirs = ~a/lib
3497include_dirs = ~a/include
3498
3499# backslash-n to make emacs happy
3500\n[lapack]
3501lapack_libs = lapack
3502library_dirs = ~a/lib
3503include_dirs = ~a/include
3504"
3505 (assoc-ref inputs "openblas")
3506 (assoc-ref inputs "openblas")
3507 (assoc-ref inputs "lapack")
3508 (assoc-ref inputs "lapack"))))
3509 ;; Use "gcc" executable, not "cc".
3510 (substitute* "numpy/distutils/system_info.py"
3511 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3512 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3513 #t))
3514 ;; Tests can only be run after the library has been installed and not
3515 ;; within the source directory.
3516 (delete 'check)
3517 (add-after 'install 'check
3518 (lambda* (#:key outputs inputs #:allow-other-keys)
3519 ;; Make installed package available for running the tests
3520 (add-installed-pythonpath inputs outputs)
3521 (with-directory-excursion "/tmp"
3522 (zero? (system* "python" "-c"
3523 "import numpy; numpy.test(verbose=2)"))))))))
3524 (home-page "http://www.numpy.org/")
3525 (synopsis "Fundamental package for scientific computing with Python")
3526 (description "NumPy is the fundamental package for scientific computing
3527with Python. It contains among other things: a powerful N-dimensional array
3528object, sophisticated (broadcasting) functions, tools for integrating C/C++
3529and Fortran code, useful linear algebra, Fourier transform, and random number
3530capabilities.")
3531 (license license:bsd-3)))
3532
3533(define-public python2-numpy
3534 (package-with-python2 python-numpy))
3535
3536(define-public python-munch
3537 (package
3538 (name "python-munch")
3539 (version "2.0.4")
3540 (source
3541 (origin
3542 (method url-fetch)
3543 (uri (pypi-uri "munch" version))
3544 (sha256
3545 (base32
3546 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3547 (build-system python-build-system)
3548 (home-page "https://github.com/Infinidat/munch")
3549 (synopsis "Dot-accessible dictionary")
3550 (description "Munch is a dot-accessible dictionary similar to JavaScript
3551objects.")
3552 (license license:expat)))
3553
3554(define-public python2-munch
3555 (package-with-python2 python-munch))
3556
3557(define-public python2-fastlmm
3558 (package
3559 (name "python2-fastlmm")
3560 (version "0.2.21")
3561 (source
3562 (origin
3563 (method url-fetch)
3564 (uri (pypi-uri "fastlmm" version ".zip"))
3565 (sha256
3566 (base32
3567 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3568 (build-system python-build-system)
3569 (arguments
3570 `(#:python ,python-2)) ; only Python 2.7 is supported
3571 (propagated-inputs
3572 `(("python2-numpy" ,python2-numpy)
3573 ("python2-scipy" ,python2-scipy)
3574 ("python2-matplotlib" ,python2-matplotlib)
3575 ("python2-pandas" ,python2-pandas)
3576 ("python2-scikit-learn" ,python2-scikit-learn)
3577 ("python2-pysnptools" ,python2-pysnptools)))
3578 (native-inputs
3579 `(("unzip" ,unzip)
3580 ("python2-cython" ,python2-cython)
3581 ("python2-mock" ,python2-mock)
3582 ("python2-nose" ,python2-nose)))
3583 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3584 (synopsis "Perform genome-wide association studies on large data sets")
3585 (description
3586 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3587Models, is a program for performing both single-SNP and SNP-set genome-wide
3588association studies (GWAS) on extremely large data sets.")
3589 (license license:asl2.0)))
3590
3591(define-public python-numpy-documentation
3592 (package
3593 (name "python-numpy-documentation")
3594 (version (package-version python-numpy))
3595 (source (package-source python-numpy))
3596 (build-system python-build-system)
3597 (native-inputs
3598 `(("python-matplotlib" ,python-matplotlib)
3599 ("python-numpy" ,python-numpy)
3600 ("pkg-config" ,pkg-config)
3601 ("python-sphinx" ,python-sphinx)
3602 ("python-numpydoc" ,python-numpydoc)
3603 ("texlive" ,texlive)
3604 ("texinfo" ,texinfo)
3605 ("perl" ,perl)
3606 ("scipy-sphinx-theme"
3607 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3608 (method git-fetch)
3609 (uri (git-reference
3610 (url "https://github.com/scipy/scipy-sphinx-theme.git")
3611 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
3612 (sha256
3613 (base32
3614 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
3615 ,@(package-native-inputs python-numpy)))
3616 (arguments
3617 `(#:tests? #f ; we're only generating the documentation
3618 #:phases
3619 (modify-phases %standard-phases
3620 (delete 'build)
3621 (replace 'install
3622 (lambda* (#:key inputs outputs #:allow-other-keys)
3623 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3624 (doc (string-append
3625 data "/doc/" ,name "-"
3626 ,(package-version python-numpy)))
3627 (info-reader (string-append data "/info"))
3628 (html (string-append doc "/html"))
3629 (scipy-sphinx-theme "scipy-sphinx-theme")
3630 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3631 (pyver ,(string-append "PYVER=")))
3632 (with-directory-excursion "doc"
3633 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3634 (mkdir-p html)
3635 (system* "make" "html" pyver)
3636 (system* "make" "latex" "PAPER=a4" pyver)
3637 (system* "make" "-C" "build/latex"
3638 "all-pdf" "PAPER=a4" pyver)
3639 ;; FIXME: Generation of the info file fails.
3640 ;; (system* "make" "info" pyver)
3641 ;; (mkdir-p info)
3642 ;; (copy-file "build/texinfo/numpy.info"
3643 ;; (string-append info "/numpy.info"))
3644 (for-each (lambda (file)
3645 (copy-file (string-append "build/latex" file)
3646 (string-append doc file)))
3647 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3648 (with-directory-excursion "build/html"
3649 (for-each (lambda (file)
3650 (let* ((dir (dirname file))
3651 (tgt-dir (string-append html "/" dir)))
3652 (unless (equal? "." dir)
3653 (mkdir-p tgt-dir))
3654 (install-file file html)))
3655 (find-files "." ".*")))))
3656 #t)))))
3657 (home-page (package-home-page python-numpy))
3658 (synopsis "Documentation for the python-numpy package")
3659 (description (package-description python-numpy))
3660 (license (package-license python-numpy))))
3661
3662(define-public python2-numpy-documentation
3663 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
3664 (package
3665 (inherit numpy-documentation)
3666 (native-inputs `(("python2-functools32" ,python2-functools32)
3667 ,@(package-native-inputs numpy-documentation))))))
3668
3669(define-public python-pygit2
3670 (package
3671 (name "python-pygit2")
3672 (version "0.25.0")
3673 (source
3674 (origin
3675 (method url-fetch)
3676 (uri (pypi-uri "pygit2" version))
3677 (sha256
3678 (base32
3679 "0wf5rp0fvrw7j3j18dvwjq6xqlbm611wd55aphrfpps0v1gxh3ny"))
3680 (patches
3681 (search-patches "python-pygit2-disable-network-tests.patch"))))
3682 (build-system python-build-system)
3683 (propagated-inputs
3684 `(("python-six" ,python-six)
3685 ("python-cffi" ,python-cffi)
3686 ("libgit2" ,libgit2)
3687 ("python-tox" ,python-tox)))
3688 (home-page "https://github.com/libgit2/pygit2")
3689 (synopsis "Python bindings for libgit2")
3690 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3691library, libgit2 implements Git plumbing.")
3692 ;; GPL2.0 only, with linking exception.
3693 (license license:gpl2)))
3694
3695(define-public python2-pygit2
3696 (package-with-python2 python-pygit2))
3697
3698(define-public python-pyparsing
3699 (package
3700 (name "python-pyparsing")
3701 (version "2.0.3")
3702 (source
3703 (origin
3704 (method url-fetch)
3705 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3706 "/pyparsing-" version
3707 "/pyparsing-" version ".tar.gz"))
3708 (sha256
3709 (base32
3710 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
3711 (build-system python-build-system)
3712 (outputs '("out" "doc"))
3713 (arguments
3714 `(#:tests? #f ; no test target
3715 #:modules ((guix build python-build-system)
3716 (guix build utils))
3717 #:phases
3718 (alist-cons-after
3719 'install 'install-doc
3720 (lambda* (#:key outputs #:allow-other-keys)
3721 (let* ((doc (string-append (assoc-ref outputs "doc")
3722 "/share/doc/" ,name "-" ,version))
3723 (html-doc (string-append doc "/html"))
3724 (examples (string-append doc "/examples")))
3725 (mkdir-p html-doc)
3726 (mkdir-p examples)
3727 (for-each
3728 (lambda (dir tgt)
3729 (map (lambda (file)
3730 (install-file file tgt))
3731 (find-files dir ".*")))
3732 (list "docs" "htmldoc" "examples")
3733 (list doc html-doc examples))))
3734 %standard-phases)))
3735 (home-page "http://pyparsing.wikispaces.com")
3736 (synopsis "Python parsing class library")
3737 (description
3738 "The pyparsing module is an alternative approach to creating and
3739executing simple grammars, vs. the traditional lex/yacc approach, or the use
3740of regular expressions. The pyparsing module provides a library of classes
3741that client code uses to construct the grammar directly in Python code.")
3742 (license license:expat)))
3743
3744(define-public python2-pyparsing
3745 (package-with-python2 python-pyparsing))
3746
3747(define-public python-numpydoc
3748 (package
3749 (name "python-numpydoc")
3750 (version "0.5")
3751 (source
3752 (origin
3753 (method url-fetch)
3754 (uri (string-append
3755 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3756 version ".tar.gz"))
3757 (sha256
3758 (base32
3759 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3760 (modules '((guix build utils)))
3761 (snippet
3762 '(begin
3763 ;; Drop a test requiring matplotlib, which we cannot add as an
3764 ;; input since it would create a circular dependency: Extend the
3765 ;; test for Python 3, where it is already dropped, to Python 2.
3766 (substitute* "numpydoc/tests/test_plot_directive.py"
3767 (("3") "2"))))))
3768 (build-system python-build-system)
3769 (propagated-inputs
3770 `(("python-sphinx" ,python-sphinx)))
3771 (native-inputs
3772 `(("python-nose" ,python-nose)))
3773 (home-page "https://pypi.python.org/pypi/numpydoc")
3774 (synopsis
3775 "Numpy's Sphinx extensions")
3776 (description
3777 "Sphinx extension to support docstrings in Numpy format.")
3778 (license license:bsd-2)))
3779
3780(define-public python2-numpydoc
3781 (package-with-python2 python-numpydoc))
3782
3783(define-public python-numexpr
3784 (package
3785 (name "python-numexpr")
3786 (version "2.6.1")
3787 (source
3788 (origin
3789 (method url-fetch)
3790 (uri (pypi-uri "numexpr" version))
3791 (sha256
3792 (base32
3793 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
3794 (build-system python-build-system)
3795 (arguments `(#:tests? #f)) ; no tests included
3796 (propagated-inputs
3797 `(("python-numpy" ,python-numpy)))
3798 (home-page "https://github.com/pydata/numexpr")
3799 (synopsis "Fast numerical expression evaluator for NumPy")
3800 (description
3801 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3802expressions that operate on arrays are accelerated and use less memory than
3803doing the same calculation in Python. In addition, its multi-threaded
3804capabilities can make use of all your cores, which may accelerate
3805computations, most specially if they are not memory-bounded (e.g. those using
3806transcendental functions).")
3807 (license license:expat)))
3808
3809(define-public python2-numexpr
3810 (package-with-python2 python-numexpr))
3811
3812(define-public python-cycler
3813 (package
3814 (name "python-cycler")
3815 (version "0.10.0")
3816 (source (origin
3817 (method url-fetch)
3818 (uri (pypi-uri "cycler" version))
3819 (sha256
3820 (base32
3821 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
3822 (build-system python-build-system)
3823 (arguments
3824 ;; XXX: The current version requires 'coveralls' which we don't have.
3825 ;; Enable this for the next release which uses 'python-pytest'.
3826 '(#:tests? #f))
3827 (propagated-inputs
3828 `(("python-six" ,python-six)))
3829 (home-page "http://matplotlib.org/cycler/")
3830 (synopsis "Composable keyword argument iterator")
3831 (description
3832 "When using @code{matplotlib} and plotting more than one line, it is
3833common to want to be able to want to be able to cycle over one or more artist
3834styles; but the plotting logic can quickly become involved.
3835To address this and enable easy cycling over arbitrary @code{kwargs}, the
3836@code{Cycler} class was developed.")
3837 (license license:bsd-3)))
3838
3839(define-public python2-cycler
3840 (package-with-python2 python-cycler))
3841
3842(define-public python-colorspacious
3843 (package
3844 (name "python-colorspacious")
3845 (version "1.1.0")
3846 (source
3847 (origin
3848 (method url-fetch)
3849 (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
3850 version ".tar.gz"))
3851 (file-name (string-append name "-" version))
3852 (sha256
3853 (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
3854 (build-system python-build-system)
3855 (propagated-inputs
3856 `(("python-numpy" ,python-numpy)))
3857 (native-inputs
3858 `(("python-nose" ,python-nose)))
3859 (arguments
3860 `(#:phases
3861 (modify-phases %standard-phases
3862 (replace 'check
3863 (lambda _
3864 (zero? (system* "nosetests" "--all-modules" "-v" "colorspacious")))))))
3865 (home-page "https://github.com/njsmith/colorspacious")
3866 (synopsis "Python library for colorspace conversions")
3867 (description "@code{colorspacious} is a Python library that lets you
3868convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
3869 (license license:expat)))
3870
3871(define-public python2-colorspacious
3872 (package-with-python2 python-colorspacious))
3873
3874(define-public python-matplotlib
3875 (package
3876 (name "python-matplotlib")
3877 (version "2.0.0")
3878 (source
3879 (origin
3880 (method url-fetch)
3881 (uri (string-append
3882 "https://github.com/matplotlib/matplotlib/archive/v" version ".tar.gz"))
3883 (file-name (string-append name "-" version ".tar.gz"))
3884 (sha256
3885 (base32
3886 "0w3k5m5qb3wsd7yhvmg042xddvligklvcq2visk2c5wnph3hhsln"))))
3887 (build-system python-build-system)
3888 (propagated-inputs ; the following packages are all needed at run time
3889 `(("python-cycler" ,python-cycler)
3890 ("python-pyparsing" ,python-pyparsing)
3891 ("python-pygobject" ,python-pygobject)
3892 ("gobject-introspection" ,gobject-introspection)
3893 ("python-tkinter" ,python "tk")
3894 ("python-dateutil" ,python-dateutil)
3895 ("python-numpy" ,python-numpy)
3896 ("python-pillow" ,python-pillow)
3897 ("python-pytz" ,python-pytz)
3898 ("python-six" ,python-six)
3899 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3900 ;; from 'gtk+') provides the required 'typelib' files used by
3901 ;; 'gobject-introspection'. The location of these files is set with the
3902 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3903 ;; is done automatically by a 'native-search-path' procedure. However,
3904 ;; at run-time the user must set this variable as follows:
3905 ;;
3906 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
3907 ("gtk+" ,gtk+)
3908 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3909 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3910 ;; object. For this reason we need to import both libraries.
3911 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3912 ("python-pycairo" ,python-pycairo)
3913 ("python-cairocffi" ,python-cairocffi)))
3914 (inputs
3915 `(("libpng" ,libpng)
3916 ("imagemagick" ,imagemagick)
3917 ("freetype" ,freetype)
3918 ("cairo" ,cairo)
3919 ("glib" ,glib)
3920 ;; FIXME: Add backends when available.
3921 ;("python-wxpython" ,python-wxpython)
3922 ("python-pyqt" ,python-pyqt)
3923 ("tcl" ,tcl)
3924 ("tk" ,tk)))
3925 (native-inputs
3926 `(("pkg-config" ,pkg-config)
3927 ("python-nose" ,python-nose)
3928 ("python-mock" ,python-mock)))
3929 (arguments
3930 `(#:phases
3931 (modify-phases %standard-phases
3932 (add-before 'build 'configure-environment
3933 (lambda* (#:key outputs inputs #:allow-other-keys)
3934 (let ((cairo (assoc-ref inputs "cairo"))
3935 (gtk+ (assoc-ref inputs "gtk+")))
3936 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3937 ;; has not effect.
3938 (setenv "LD_LIBRARY_PATH"
3939 (string-append cairo "/lib:" gtk+ "/lib"))
3940 (setenv "HOME" (getcwd))
3941 (call-with-output-file "setup.cfg"
3942 (lambda (port)
3943 (format port "[directories]~%
3944basedirlist = ~a,~a~%
3945 [rc_options]~%
3946backend = TkAgg~%"
3947 (assoc-ref inputs "tcl")
3948 (assoc-ref inputs "tk")))))
3949 #t)))))
3950 (home-page "http://matplotlib.org")
3951 (synopsis "2D plotting library for Python")
3952 (description
3953 "Matplotlib is a Python 2D plotting library which produces publication
3954quality figures in a variety of hardcopy formats and interactive environments
3955across platforms. Matplotlib can be used in Python scripts, the python and
3956ipython shell, web application servers, and six graphical user interface
3957toolkits.")
3958 (license license:psfl)
3959 (properties `((python2-variant . ,(delay python2-matplotlib))))))
3960
3961(define-public python2-matplotlib
3962 (let ((matplotlib (package-with-python2
3963 (strip-python2-variant python-matplotlib))))
3964 (package (inherit matplotlib)
3965 ;; Make sure to use special packages for Python 2 instead
3966 ;; of those automatically rewritten by package-with-python2.
3967 (propagated-inputs
3968 `(("python2-pycairo" ,python2-pycairo)
3969 ("python2-functools32" ,python2-functools32)
3970 ("python2-pygobject-2" ,python2-pygobject-2)
3971 ("python2-subprocess32" ,python2-subprocess32)
3972 ("python2-tkinter" ,python-2 "tk")
3973 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3974 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
3975
3976(define-public python-matplotlib-documentation
3977 (package
3978 (name "python-matplotlib-documentation")
3979 (version (package-version python-matplotlib))
3980 (source (package-source python-matplotlib))
3981 (build-system python-build-system)
3982 (native-inputs
3983 `(("python-matplotlib" ,python-matplotlib)
3984 ("python-colorspacious" ,python-colorspacious)
3985 ("python-sphinx" ,python-sphinx)
3986 ("python-numpydoc" ,python-numpydoc)
3987 ("python-ipython" ,python-ipython)
3988 ("python-mock" ,python-mock)
3989 ("graphviz" ,graphviz)
3990 ("texlive" ,texlive)
3991 ("texinfo" ,texinfo)
3992 ,@(package-native-inputs python-matplotlib)))
3993 (arguments
3994 `(#:tests? #f ; we're only generating documentation
3995 #:phases
3996 (modify-phases %standard-phases
3997 (replace 'build
3998 (lambda _
3999 (chdir "doc")
4000 ;; Produce pdf in 'A4' format.
4001 (substitute* "conf.py"
4002 (("latex_paper_size = 'letter'") "")
4003 ;; latex_paper_size is deprecated -> set paper size using
4004 ;; latex_elements
4005 (("latex_elements\\['pointsize'\\] = '11pt'" match)
4006 ;; insert at a point where latex_elements{} is defined:
4007 (string-append match "\nlatex_elements['papersize'] = 'a4paper'")))
4008 (zero? (system* "python" "make.py" "html" "latex" "texinfo"))))
4009 (replace 'install
4010 (lambda* (#:key inputs outputs #:allow-other-keys)
4011 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
4012 (doc (string-append data "/doc/python-matplotlib-" ,version))
4013 (info (string-append data "/info"))
4014 (html (string-append doc "/html")))
4015 (mkdir-p html)
4016 (mkdir-p info)
4017 (copy-recursively "build/html" html)
4018 (symlink (string-append html "/_images")
4019 (string-append info "/matplotlib-figures"))
4020 (with-directory-excursion "build/texinfo"
4021 (substitute* "matplotlib.texi"
4022 (("@image\\{([^,]*)" all file)
4023 (string-append "@image{matplotlib-figures/" file)))
4024 (symlink (string-append html "/_images")
4025 "./matplotlib-figures")
4026 (system* "makeinfo" "--no-split"
4027 "-o" "matplotlib.info" "matplotlib.texi"))
4028 (copy-file "build/texinfo/matplotlib.info"
4029 (string-append info "/matplotlib.info"))
4030 (copy-file "build/latex/Matplotlib.pdf"
4031 (string-append doc "/Matplotlib.pdf")))
4032 #t)))))
4033 (home-page (package-home-page python-matplotlib))
4034 (synopsis "Documentation for the python-matplotlib package")
4035 (description (package-description python-matplotlib))
4036 (license (package-license python-matplotlib))))
4037
4038(define-public python2-matplotlib-documentation
4039 (package-with-python2 python-matplotlib-documentation))
4040
4041(define-public python2-pysnptools
4042 (package
4043 (name "python2-pysnptools")
4044 (version "0.3.9")
4045 (source
4046 (origin
4047 (method url-fetch)
4048 (uri (pypi-uri "pysnptools" version ".zip"))
4049 (sha256
4050 (base32
4051 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
4052 (build-system python-build-system)
4053 (arguments
4054 `(#:python ,python-2)) ; only Python 2.7 is supported
4055 (propagated-inputs
4056 `(("python2-numpy" ,python2-numpy)
4057 ("python2-scipy" ,python2-scipy)
4058 ("python2-pandas" ,python2-pandas)))
4059 (native-inputs
4060 `(("python2-cython" ,python2-cython)))
4061 (native-inputs
4062 `(("unzip" ,unzip)))
4063 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
4064 (synopsis "Library for reading and manipulating genetic data")
4065 (description
4066 "PySnpTools is a library for reading and manipulating genetic data. It
4067can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4068those files. It can also efficiently manipulate ranges of integers using set
4069operators such as union, intersection, and difference.")
4070 (license license:asl2.0)))
4071
4072(define-public python-rpy2
4073 (package
4074 (name "python-rpy2")
4075 (version "2.7.6")
4076 (source
4077 (origin
4078 (method url-fetch)
4079 (uri (pypi-uri "rpy2" version))
4080 (sha256
4081 (base32
4082 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
4083 (build-system python-build-system)
4084 (arguments
4085 '(#:phases
4086 (modify-phases %standard-phases
4087 (delete 'check)
4088 (add-after 'install 'check
4089 (lambda* (#:key outputs inputs #:allow-other-keys)
4090 ;; It's easier to run tests after install.
4091 ;; Make installed package available for running the tests
4092 (add-installed-pythonpath inputs outputs)
4093 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
4094 (propagated-inputs
4095 `(("python-six" ,python-six)))
4096 (inputs
4097 `(("readline" ,readline)
4098 ("icu4c" ,icu4c)
4099 ("pcre" ,pcre)
4100 ("r-minimal" ,r-minimal)
4101 ("r-survival" ,r-survival)))
4102 (native-inputs
4103 `(("zlib" ,zlib)))
4104 (home-page "http://rpy.sourceforge.net/")
4105 (synopsis "Python interface to the R language")
4106 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
4107low-level interface to R from Python, a proposed high-level interface,
4108including wrappers to graphical libraries, as well as R-like structures and
4109functions.")
4110 (license license:gpl3+)))
4111
4112(define-public python2-rpy2
4113 (let ((rpy2 (package-with-python2 python-rpy2)))
4114 (package (inherit rpy2)
4115 (propagated-inputs
4116 `(("python2-singledispatch" ,python2-singledispatch)
4117 ,@(package-propagated-inputs rpy2))))))
4118
4119(define-public python-scipy
4120 (package
4121 (name "python-scipy")
4122 (version "0.18.1")
4123 (source
4124 (origin
4125 (method url-fetch)
4126 (uri (string-append "https://github.com/scipy/scipy/archive/v"
4127 version ".tar.gz"))
4128 (file-name (string-append name "-" version ".tar.gz"))
4129 (sha256
4130 (base32
4131 "17slsrfawjp7if6qrlx03zhgp05350ginxx8ddpw9zqx43x905sn"))))
4132 (build-system python-build-system)
4133 (propagated-inputs
4134 `(("python-numpy" ,python-numpy)
4135 ("python-matplotlib" ,python-matplotlib)
4136 ("python-pyparsing" ,python-pyparsing)))
4137 (inputs
4138 `(("lapack" ,lapack)
4139 ("openblas" ,openblas)))
4140 (native-inputs
4141 `(("python-cython" ,python-cython)
4142 ("python-nose" ,python-nose)
4143 ("python-sphinx" ,python-sphinx)
4144 ("python-numpydoc" ,python-numpydoc)
4145 ("gfortran" ,gfortran)
4146 ("perl" ,perl)))
4147 (outputs '("out" "doc"))
4148 (arguments
4149 `(#:phases
4150 (modify-phases %standard-phases
4151 (add-before 'build 'configure-openblas
4152 (lambda* (#:key inputs #:allow-other-keys)
4153 (call-with-output-file "site.cfg"
4154 (lambda (port)
4155 (format port
4156 "[blas]
4157libraries = openblas
4158library_dirs = ~a/lib
4159include_dirs = ~a/include
4160
4161# backslash-n to make emacs happy
4162\n[atlas]
4163library_dirs = ~a/lib
4164atlas_libs = openblas
4165"
4166 (assoc-ref inputs "openblas")
4167 (assoc-ref inputs "openblas")
4168 (assoc-ref inputs "openblas"))))
4169 #t))
4170 (add-after 'install 'install-doc
4171 (lambda* (#:key inputs outputs #:allow-other-keys)
4172 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4173 (doc (string-append data "/doc/" ,name "-" ,version))
4174 (html (string-append doc "/html"))
4175 (pyver ,(string-append "PYVER=")))
4176 ;; Make installed package available for building the
4177 ;; documentation
4178 (add-installed-pythonpath inputs outputs)
4179 (with-directory-excursion "doc"
4180 ;; Fix generation of images for mathematical expressions.
4181 (substitute* (find-files "source" "conf\\.py")
4182 (("pngmath_use_preview = True")
4183 "pngmath_use_preview = False"))
4184 (mkdir-p html)
4185 (system* "make" "html" pyver)
4186 (with-directory-excursion "build/html"
4187 (for-each (lambda (file)
4188 (let* ((dir (dirname file))
4189 (tgt-dir (string-append html "/" dir)))
4190 (install-file file html)))
4191 (find-files "." ".*")))))
4192 #t))
4193 (add-after 'unpack 'fix-tests
4194 (lambda _
4195 (substitute* "scipy/integrate/tests/test_quadpack.py"
4196 (("libm.so") "libm.so.6"))
4197 #t))
4198 ;; Tests can only be run after the library has been installed and not
4199 ;; within the source directory.
4200 (delete 'check)
4201 (add-after 'install 'check
4202 (lambda* (#:key inputs outputs #:allow-other-keys)
4203 (add-installed-pythonpath inputs outputs)
4204 (with-directory-excursion "/tmp"
4205 (zero? (system* "python" "-c"
4206 "import scipy; scipy.test('full')")))
4207 #t)))))
4208 (home-page "http://www.scipy.org/")
4209 (synopsis "The Scipy library provides efficient numerical routines")
4210 (description "The SciPy library is one of the core packages that make up
4211the SciPy stack. It provides many user-friendly and efficient numerical
4212routines such as routines for numerical integration and optimization.")
4213 (properties `((python2-variant . ,(delay python2-scipy))))
4214 (license license:bsd-3)))
4215
4216(define-public python2-scipy
4217 (package-with-python2
4218 (strip-python2-variant python-scipy)))
4219
4220(define-public python-sockjs-tornado
4221 (package
4222 (name "python-sockjs-tornado")
4223 (version "1.0.3")
4224 (source
4225 (origin
4226 (method url-fetch)
4227 (uri (pypi-uri "sockjs-tornado" version))
4228 (sha256
4229 (base32
4230 "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
4231 (build-system python-build-system)
4232 (arguments
4233 `(;; There are no tests, and running the test phase requires missing
4234 ;; dependencies
4235 #:tests? #f))
4236 (propagated-inputs
4237 `(("python-tornado" ,python-tornado)))
4238 (home-page "http://github.com/mrjoes/sockjs-tornado/")
4239 (synopsis
4240 "SockJS python server implementation on top of Tornado framework")
4241 (description
4242 "SockJS-tornado provides the server side counterpart to a SockJS client
4243library, through the Tornado framework.
4244
4245SockJS provides a low latency, full duplex, cross-domain communication channel
4246between a web browser and web server.")
4247 (license license:expat)))
4248
4249(define-public python2-sockjs-tornado
4250 (package-with-python2 python-sockjs-tornado))
4251
4252(define-public python-socksipy-branch
4253 (package
4254 (name "python-socksipy-branch")
4255 (version "1.01")
4256 (source
4257 (origin
4258 (method url-fetch)
4259 (uri (pypi-uri "SocksiPy-branch" version))
4260 (sha256
4261 (base32
4262 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4263 (build-system python-build-system)
4264 (arguments
4265 `(#:tests? #f)) ; There are no tests
4266 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4267 (synopsis "Python SOCKS module")
4268 (description
4269 "SocksiPy - A Python SOCKS client module. It provides a
4270socket-like interface that supports connections to any TCP
4271service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4272The original version was developed by Dan Haim, this is a
4273branch created by Mario Vilas to address some open issues,
4274as the original project seems to have been abandoned circa 2007.")
4275 (license license:bsd-3)))
4276
4277(define-public python2-socksipy-branch
4278 (package-with-python2 python-socksipy-branch))
4279
4280(define-public python-sqlalchemy
4281 (package
4282 (name "python-sqlalchemy")
4283 (version "1.0.12")
4284 (source
4285 (origin
4286 (method url-fetch)
4287 (uri (string-append "https://pypi.python.org/packages/source/S/"
4288 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
4289 (sha256
4290 (base32
4291 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
4292 (build-system python-build-system)
4293 (native-inputs
4294 `(("python-cython" ,python-cython) ;for c extensions
4295 ("python-pytest" ,python-pytest)
4296 ("python-mock" ,python-mock))) ;for tests
4297 (arguments
4298 `(#:phases (alist-replace
4299 'check
4300 (lambda _ (zero? (system* "py.test")))
4301 %standard-phases)))
4302 (home-page "http://www.sqlalchemy.org")
4303 (synopsis "Database abstraction library")
4304 (description
4305 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4306gives application developers the full power and flexibility of SQL. It
4307provides a full suite of well known enterprise-level persistence patterns,
4308designed for efficient and high-performing database access, adapted into a
4309simple and Pythonic domain language.")
4310 (license license:x11)))
4311
4312(define-public python2-sqlalchemy
4313 (package-with-python2 python-sqlalchemy))
4314
4315(define-public python-pycodestyle
4316 (package
4317 (name "python-pycodestyle")
4318 (version "2.0.0")
4319 (source
4320 (origin
4321 (method url-fetch)
4322 (uri (pypi-uri "pycodestyle" version))
4323 (sha256
4324 (base32
4325 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
4326 (build-system python-build-system)
4327 (home-page "https://pycodestyle.readthedocs.io/")
4328 (synopsis "Python style guide checker")
4329 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4330Python code against some of the style conventions in
4331@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
4332 (license license:expat)))
4333
4334(define-public python2-pycodestyle
4335 (package-with-python2 python-pycodestyle))
4336
4337(define-public python-orderedmultidict
4338 (package
4339 (name "python-orderedmultidict")
4340 (version "0.7.11")
4341 (source
4342 (origin
4343 (method url-fetch)
4344 (uri (pypi-uri "orderedmultidict" version))
4345 (sha256
4346 (base32
4347 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
4348 (build-system python-build-system)
4349 (arguments
4350 `(#:phases
4351 (modify-phases %standard-phases
4352 (add-after 'unpack 'fix-tests
4353 (lambda _
4354 ;; The package uses nosetest for running the tests.
4355 ;; Adding this initfile allows to run the test suite
4356 ;; without requiring nosetest.
4357 (zero? (system* "touch" "tests/__init__.py")))))))
4358 (propagated-inputs
4359 `(("python-six" ,python-six)))
4360 (native-inputs
4361 `(("python-pycodestyle" ,python-pycodestyle)))
4362 (home-page "https://github.com/gruns/orderedmultidict")
4363 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4364 (description "This package contains a library for ordered multivalue
4365dictionaries. A multivalue dictionary is a dictionary that can store
4366multiple values for the same key. An ordered multivalue dictionary is a
4367multivalue dictionary that retains the order of insertions and deletions.")
4368 (license license:unlicense)))
4369
4370(define-public python2-orderedmultidict
4371 (package-with-python2 python-orderedmultidict))
4372
4373(define-public python-furl
4374 (package
4375 (name "python-furl")
4376 (version "0.5.6")
4377 (source
4378 (origin
4379 (method url-fetch)
4380 (uri (pypi-uri "furl" version))
4381 (sha256
4382 (base32
4383 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4384 (build-system python-build-system)
4385 (propagated-inputs
4386 `(("python-six" ,python-six)
4387 ("python-orderedmultidict" ,python-orderedmultidict)))
4388 (native-inputs
4389 `(("python-pycodestyle" ,python-pycodestyle)))
4390 (home-page "https://github.com/gruns/furl")
4391 (synopsis "URL manipulation in Python")
4392 (description "Furl provides an easy-to-use alternative to the
4393@code{urllib} and @code{urlparse} modules for manipulating URLs.")
4394 (license license:unlicense)))
4395
4396(define-public python2-furl
4397 (package-with-python2 python-furl))
4398
4399(define-public python-flask-babel
4400 (package
4401 (name "python-flask-babel")
4402 (version "0.11.1")
4403 (source
4404 (origin
4405 (method url-fetch)
4406 (uri (pypi-uri "Flask-Babel" version))
4407 (sha256
4408 (base32
4409 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4410 (build-system python-build-system)
4411 (propagated-inputs
4412 `(("python-flask" ,python-flask)
4413 ("python-babel" ,python-babel)
4414 ("python-jinja2" ,python-jinja2)
4415 ("python-pytz" ,python-pytz)))
4416 (home-page "https://github.com/python-babel/flask-babel")
4417 (synopsis "Add i18n/l10n support to Flask applications")
4418 (description "This package implements internationalization and localization
4419support for Flask. This is based on the Python babel module as well as pytz -
4420both of which are installed automatically if you install this library.")
4421 (license license:bsd-3)))
4422
4423(define-public python2-flask-babel
4424 (package-with-python2 python-flask-babel))
4425
4426(define-public python-sqlalchemy-utils
4427 (package
4428 (name "python-sqlalchemy-utils")
4429 (version "0.32.13")
4430 (source
4431 (origin
4432 (method url-fetch)
4433 (uri (pypi-uri "SQLAlchemy-Utils" version))
4434 (sha256
4435 (base32
4436 "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
4437 (build-system python-build-system)
4438 (arguments
4439 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
4440 ;; #:phases
4441 ;; (modify-phases %standard-phases
4442 ;; (replace 'check
4443 ;; (lambda _
4444 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
4445 (propagated-inputs
4446 `(("python-six" ,python-six)
4447 ("python-sqlalchemy" ,python-sqlalchemy)))
4448 (native-inputs
4449 `(("python-dateutil" ,python-dateutil)
4450 ("python-flexmock" ,python-flexmock)
4451 ("python-psycopg2" ,python-psycopg2)
4452 ("python-pytest" ,python-pytest)
4453 ("python-pytz" ,python-pytz)))
4454 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4455 (synopsis "Various utility functions for SQLAlchemy")
4456 (description
4457 "SQLAlchemy-utils provides various utility functions and custom data types
4458for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4459
4460You might also want to install the following optional dependencies:
4461@enumerate
4462@item @code{python-passlib}
4463@item @code{python-babel}
4464@item @code{python-cryptography}
4465@item @code{python-pytz}
4466@item @code{python-psycopg2}
4467@item @code{python-furl}
4468@item @code{python-flask-babel}
4469@end enumerate
4470")
4471 (license license:bsd-3)))
4472
4473(define-public python2-sqlalchemy-utils
4474 (package-with-python2 python-sqlalchemy-utils))
4475
4476(define-public python-alembic
4477 (package
4478 (name "python-alembic")
4479 (version "0.8.10")
4480 (source
4481 (origin
4482 (method url-fetch)
4483 (uri (pypi-uri "alembic" version))
4484 (sha256
4485 (base32
4486 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
4487 (build-system python-build-system)
4488 (native-inputs
4489 `(("python-mock" ,python-mock)
4490 ("python-pytest-cov" ,python-pytest-cov)))
4491 (propagated-inputs
4492 `(("python-sqlalchemy" ,python-sqlalchemy)
4493 ("python-mako" ,python-mako)
4494 ("python-editor" ,python-editor)))
4495 (home-page "http://bitbucket.org/zzzeek/alembic")
4496 (synopsis
4497 "Database migration tool for SQLAlchemy")
4498 (description
4499 "Alembic is a lightweight database migration tool for usage with the
4500SQLAlchemy Database Toolkit for Python.")
4501 (license license:expat)))
4502
4503(define-public python2-alembic
4504 (package-with-python2 python-alembic))
4505
4506(define-public python-autopep8
4507 (package
4508 (name "python-autopep8")
4509 (version "1.2.4")
4510 (source
4511 (origin
4512 (method url-fetch)
4513 (uri (pypi-uri "autopep8" version))
4514 (sha256
4515 (base32
4516 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4517 (build-system python-build-system)
4518 (propagated-inputs
4519 `(("python-pep8" ,python-pep8)))
4520 (home-page "https://github.com/hhatto/autopep8")
4521 (synopsis "Format Python code according to the PEP 8 style guide")
4522 (description
4523 "@code{autopep8} automatically formats Python code to conform to
4524the PEP 8 style guide. It uses the pycodestyle utility to determine
4525what parts of the code needs to be formatted. @code{autopep8} is
4526capable of fixing most of the formatting issues that can be reported
4527by pycodestyle.")
4528 (license (license:non-copyleft
4529 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4530
4531(define-public python2-autopep8
4532 (package-with-python2 python-autopep8))
4533
4534(define-public python-distutils-extra
4535 (package
4536 (name "python-distutils-extra")
4537 (version "2.38")
4538 (source
4539 (origin
4540 (method url-fetch)
4541 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4542 version "/+download/python-distutils-extra-"
4543 version ".tar.gz"))
4544 (sha256
4545 (base32
4546 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4547 (build-system python-build-system)
4548 (home-page "https://launchpad.net/python-distutils-extra/")
4549 (synopsis "Enhancements to Python's distutils")
4550 (description
4551 "The python-distutils-extra module enables you to easily integrate
4552gettext support, themed icons, and scrollkeeper-based documentation into
4553Python's distutils.")
4554 (license license:gpl2)))
4555
4556(define-public python2-distutils-extra
4557 (package-with-python2 python-distutils-extra))
4558
4559(define-public python2-elib.intl
4560 (package
4561 (name "python2-elib.intl")
4562 (version "0.0.3")
4563 (source
4564 (origin
4565 ;; This project doesn't tag releases or publish tarballs, so we take
4566 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4567 (method git-fetch)
4568 (uri (git-reference
4569 (url "https://github.com/dieterv/elib.intl.git")
4570 (commit "d09997cfef")))
4571 (sha256
4572 (base32
4573 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4574 (build-system python-build-system)
4575 (arguments
4576 ;; incompatible with Python 3 (exception syntax)
4577 `(#:python ,python-2
4578 #:tests? #f))
4579 (home-page "https://github.com/dieterv/elib.intl")
4580 (synopsis "Enhanced internationalization for Python")
4581 (description
4582 "The elib.intl module provides enhanced internationalization (I18N)
4583services for your Python modules and applications.")
4584 (license license:lgpl3+)))
4585
4586(define-public python-pillow
4587 (package
4588 (name "python-pillow")
4589 (version "3.3.3")
4590 (source
4591 (origin
4592 (method url-fetch)
4593 (uri (pypi-uri "Pillow" version))
4594 (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
4595 (sha256
4596 (base32
4597 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
4598 (build-system python-build-system)
4599 (native-inputs
4600 `(("python-nose" ,python-nose)))
4601 (inputs
4602 `(("freetype" ,freetype)
4603 ("lcms" ,lcms)
4604 ("zlib" ,zlib)
4605 ("libjpeg" ,libjpeg)
4606 ("openjpeg" ,openjpeg)
4607 ("libtiff" ,libtiff)
4608 ("libwebp" ,libwebp)))
4609 (arguments
4610 `(#:phases (modify-phases %standard-phases
4611 (add-after
4612 'install 'check-installed
4613 (lambda* (#:key outputs inputs #:allow-other-keys)
4614 (begin
4615 (setenv "HOME" (getcwd))
4616 ;; Make installed package available for running the
4617 ;; tests
4618 (add-installed-pythonpath inputs outputs)
4619 (and (zero? (system* "python" "selftest.py"
4620 "--installed"))
4621 (zero? (system* "python" "test-installed.py"))))))
4622 (delete 'check))))
4623 (home-page "https://pypi.python.org/pypi/Pillow")
4624 (synopsis "Fork of the Python Imaging Library")
4625 (description
4626 "The Python Imaging Library adds image processing capabilities to your
4627Python interpreter. This library provides extensive file format support, an
4628efficient internal representation, and fairly powerful image processing
4629capabilities. The core image library is designed for fast access to data
4630stored in a few basic pixel formats. It should provide a solid foundation for
4631a general image processing tool.")
4632 (license (license:x11-style
4633 "http://www.pythonware.com/products/pil/license.htm"
4634 "The PIL Software License"))))
4635
4636(define-public python2-pillow
4637 (package-with-python2 python-pillow))
4638
4639(define-public python-pycparser
4640 (package
4641 (name "python-pycparser")
4642 (version "2.17")
4643 (source
4644 (origin
4645 (method url-fetch)
4646 (uri (pypi-uri "pycparser" version))
4647 (sha256
4648 (base32
4649 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
4650 (outputs '("out" "doc"))
4651 (build-system python-build-system)
4652 (native-inputs
4653 `(("pkg-config" ,pkg-config)))
4654 (arguments
4655 `(#:phases
4656 (modify-phases %standard-phases
4657 (replace 'check
4658 (lambda _
4659 (with-directory-excursion "tests"
4660 (zero? (system* "python" "all_tests.py")))))
4661 (add-after 'install 'install-doc
4662 (lambda* (#:key outputs #:allow-other-keys)
4663 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4664 (doc (string-append data "/doc/" ,name "-" ,version))
4665 (examples (string-append doc "/examples")))
4666 (mkdir-p examples)
4667 (for-each (lambda (file)
4668 (copy-file (string-append "." file)
4669 (string-append doc file)))
4670 '("/README.rst" "/CHANGES" "/LICENSE"))
4671 (copy-recursively "examples" examples)))))))
4672 (home-page "https://github.com/eliben/pycparser")
4673 (synopsis "C parser in Python")
4674 (description
4675 "Pycparser is a complete parser of the C language, written in pure Python
4676using the PLY parsing library. It parses C code into an AST and can serve as
4677a front-end for C compilers or analysis tools.")
4678 (license license:bsd-3)))
4679
4680(define-public python2-pycparser
4681 (package-with-python2 python-pycparser))
4682
4683(define-public python-cffi
4684 (package
4685 (name "python-cffi")
4686 (version "1.4.2")
4687 (source
4688 (origin
4689 (method url-fetch)
4690 (uri (pypi-uri "cffi" version))
4691 (sha256
4692 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
4693 (build-system python-build-system)
4694 (outputs '("out" "doc"))
4695 (inputs
4696 `(("libffi" ,libffi)))
4697 (propagated-inputs ; required at run-time
4698 `(("python-pycparser" ,python-pycparser)))
4699 (native-inputs
4700 `(("pkg-config" ,pkg-config)
4701 ("python-sphinx" ,python-sphinx)
4702 ("python-pytest" ,python-pytest)))
4703 (arguments
4704 `(#:phases
4705 (alist-cons-after
4706 'install 'install-doc
4707 (lambda* (#:key outputs #:allow-other-keys)
4708 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4709 (doc (string-append data "/doc/" ,name "-" ,version))
4710 (html (string-append doc "/html")))
4711 (with-directory-excursion "doc"
4712 (system* "make" "html")
4713 (mkdir-p html)
4714 (copy-recursively "build/html" html))
4715 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4716 %standard-phases)))
4717 (home-page "http://cffi.readthedocs.org")
4718 (synopsis "Foreign function interface for Python")
4719 (description
4720 "Foreign Function Interface for Python calling C code.")
4721 (license license:expat)))
4722
4723(define-public python2-cffi
4724 (package-with-python2 python-cffi))
4725
4726(define-public python-xcffib
4727 (package
4728 (name "python-xcffib")
4729 (version "0.1.9")
4730 (source
4731 (origin
4732 (method url-fetch)
4733 (uri (string-append "https://pypi.python.org/packages/source/x/"
4734 "xcffib/xcffib-" version ".tar.gz"))
4735 (sha256
4736 (base32
4737 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4738 (build-system python-build-system)
4739 (inputs
4740 `(("libxcb" ,libxcb)))
4741 (propagated-inputs
4742 `(("python-cffi" ,python-cffi) ; used at run time
4743 ("python-six" ,python-six)))
4744 (arguments
4745 `(;; FIXME: Tests cannot load libxcb.so.1
4746 #:tests? #f
4747 #:phases
4748 (modify-phases %standard-phases
4749 (add-after 'install 'install-doc
4750 (lambda* (#:key outputs #:allow-other-keys)
4751 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4752 "/doc/" ,name "-" ,version)))
4753 (mkdir-p doc)
4754 (copy-file "README.md"
4755 (string-append doc "/README.md"))
4756 #t))))))
4757 (home-page "https://github.com/tych0/xcffib")
4758 (synopsis "XCB Python bindings")
4759 (description
4760 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4761support for Python 3 and PyPy. It is based on cffi.")
4762 (license license:expat)))
4763
4764(define-public python2-xcffib
4765 (package-with-python2 python-xcffib))
4766
4767(define-public python-cairocffi
4768 (package
4769 (name "python-cairocffi")
4770 (version "0.6")
4771 (source
4772 (origin
4773 (method url-fetch)
4774 ;; The archive on pypi is missing the 'utils' directory!
4775 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4776 version ".tar.gz"))
4777 (file-name (string-append name "-" version ".tar.gz"))
4778 (sha256
4779 (base32
4780 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4781 (build-system python-build-system)
4782 (outputs '("out" "doc"))
4783 (inputs
4784 `(("gdk-pixbuf" ,gdk-pixbuf)
4785 ("cairo" ,cairo)))
4786 (native-inputs
4787 `(("pkg-config" ,pkg-config)
4788 ("python-sphinx" ,python-sphinx)
4789 ("python-docutils" ,python-docutils)))
4790 (propagated-inputs
4791 `(("python-xcffib" ,python-xcffib))) ; used at run time
4792 (arguments
4793 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
4794 #:tests? #f
4795 #:phases
4796 (modify-phases %standard-phases
4797 (add-after 'install 'install-doc
4798 (lambda* (#:key inputs outputs #:allow-other-keys)
4799 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4800 (doc (string-append data "/doc/" ,name "-" ,version))
4801 (html (string-append doc "/html")))
4802 (setenv "LD_LIBRARY_PATH"
4803 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4804 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4805 (setenv "LANG" "en_US.UTF-8")
4806 (mkdir-p html)
4807 (for-each (lambda (file)
4808 (copy-file (string-append "." file)
4809 (string-append doc file)))
4810 '("/README.rst" "/CHANGES" "/LICENSE"))
4811 (system* "python" "setup.py" "build_sphinx")
4812 (copy-recursively "docs/_build/html" html)
4813 #t))))))
4814 (home-page "https://github.com/SimonSapin/cairocffi")
4815 (synopsis "Python bindings and object-oriented API for Cairo")
4816 (description
4817 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4818Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4819graphics library with support for multiple backends including image buffers,
4820PNG, PostScript, PDF, and SVG file output.")
4821 (license license:bsd-3)))
4822
4823(define-public python2-cairocffi
4824 (package-with-python2 python-cairocffi))
4825
4826(define-public python-decorator
4827 (package
4828 (name "python-decorator")
4829 (version "4.0.10")
4830 (source
4831 (origin
4832 (method url-fetch)
4833 (uri (pypi-uri "decorator" version))
4834 (sha256
4835 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
4836 (build-system python-build-system)
4837 (arguments '(#:tests? #f)) ; no test target
4838 (home-page "https://pypi.python.org/pypi/decorator/")
4839 (synopsis "Python module to simplify usage of decorators")
4840 (description
4841 "The aim of the decorator module is to simplify the usage of decorators
4842for the average programmer, and to popularize decorators usage giving examples
4843of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4844etc. The core of this module is a decorator factory.")
4845 (license license:expat)))
4846
4847(define-public python2-decorator
4848 (package-with-python2 python-decorator))
4849
4850(define-public python-drmaa
4851 (package
4852 (name "python-drmaa")
4853 (version "0.7.7")
4854 (source
4855 (origin
4856 (method url-fetch)
4857 (uri (string-append
4858 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4859 version ".tar.gz"))
4860 (sha256
4861 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
4862 (build-system python-build-system)
4863 ;; The test suite requires libdrmaa which is provided by the cluster
4864 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4865 ;; should be set to the path of the libdrmaa library.
4866 (arguments '(#:tests? #f))
4867 (native-inputs
4868 `(("python-nose" ,python-nose)))
4869 (home-page "https://pypi.python.org/pypi/drmaa")
4870 (synopsis "Python bindings for the DRMAA library")
4871 (description
4872 "A Python package for Distributed Resource Management (DRM) job
4873submission and control. This package is an implementation of the DRMAA 1.0
4874Python language binding specification.")
4875 (license license:bsd-3)))
4876
4877(define-public python2-drmaa
4878 (package-with-python2 python-drmaa))
4879
4880(define-public python-gridmap
4881 (package
4882 (name "python-gridmap")
4883 (version "0.13.0")
4884 (source
4885 (origin
4886 (method url-fetch)
4887 (uri (string-append
4888 "https://github.com/pygridtools/gridmap/archive/v"
4889 version ".tar.gz"))
4890 (file-name (string-append name "-" version ".tar.gz"))
4891 (sha256
4892 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4893 (build-system python-build-system)
4894 (arguments
4895 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
4896 (propagated-inputs
4897 `(("python-psutil" ,python-psutil)
4898 ("python-drmaa" ,python-drmaa)
4899 ("python-pyzmq" ,python-pyzmq)))
4900 (home-page "https://github.com/pygridtools/gridmap")
4901 (synopsis "Create jobs on a cluster directly from Python")
4902 (description
4903 "Gridmap is a Python package to allow you to easily create jobs on the
4904cluster directly from Python. You can directly map Python functions onto the
4905cluster without needing to write any wrapper code yourself.")
4906 (license license:gpl3+)))
4907
4908(define-public python2-gridmap
4909 (package-with-python2 python-gridmap))
4910
4911(define-public python-pexpect
4912 (package
4913 (name "python-pexpect")
4914 (version "4.2.1")
4915 (source
4916 (origin
4917 (method url-fetch)
4918 (uri (pypi-uri "pexpect" version))
4919 (sha256
4920 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
4921 (build-system python-build-system)
4922 (arguments
4923 `(#:phases
4924 (modify-phases %standard-phases
4925 (add-before 'check 'prepare-tests
4926 (lambda _
4927 (substitute* (find-files "tests")
4928 (("/bin/ls") (which "ls"))
4929 (("/bin/echo") (which "echo"))
4930 (("/bin/which") (which "which"))
4931 ;; Many tests try to use the /bin directory which
4932 ;; is not present in the build environment.
4933 ;; Use one that's non-empty and unlikely to change.
4934 (("/bin'") "/dev'"))
4935 ;; XXX: Socket connection test gets "Connection reset by peer".
4936 ;; Why does it not work? Delete for now.
4937 (delete-file "tests/test_socket.py")
4938 #t))
4939 (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
4940 (native-inputs
4941 `(("python-nose" ,python-nose)
4942 ("python-pytest" ,python-pytest-3.0)
4943 ("man-db" ,man-db)
4944 ("which" ,which)))
4945 (propagated-inputs
4946 `(("python-ptyprocess" ,python-ptyprocess)))
4947 (home-page "http://pexpect.readthedocs.org/")
4948 (synopsis "Controlling interactive console applications")
4949 (description
4950 "Pexpect is a pure Python module for spawning child applications;
4951controlling them; and responding to expected patterns in their output.
4952Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4953child application and control it as if a human were typing commands.")
4954 (license license:isc)))
4955
4956(define-public python2-pexpect
4957 (package-with-python2 python-pexpect))
4958
4959(define-public python-setuptools-scm
4960 (package
4961 (name "python-setuptools-scm")
4962 (version "1.15.0")
4963 (source (origin
4964 (method url-fetch)
4965 (uri (pypi-uri "setuptools_scm" version))
4966 (sha256
4967 (base32
4968 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
4969 (build-system python-build-system)
4970 (home-page "https://github.com/pypa/setuptools_scm/")
4971 (synopsis "Manage Python package versions in SCM metadata")
4972 (description
4973 "Setuptools_scm handles managing your Python package versions in
4974@dfn{software configuration management} (SCM) metadata instead of declaring
4975them as the version argument or in a SCM managed file.")
4976 (license license:expat)))
4977
4978(define-public python2-setuptools-scm
4979 (package-with-python2 python-setuptools-scm))
4980
4981(define-public python-pathpy
4982 (package
4983 (name "python-pathpy")
4984 (version "8.1.1")
4985 (source
4986 (origin
4987 (method url-fetch)
4988 (uri (string-append "https://pypi.python.org/packages/source/p/"
4989 "path.py/path.py-" version ".tar.gz"))
4990 (sha256
4991 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
4992 (outputs '("out" "doc"))
4993 (build-system python-build-system)
4994 (propagated-inputs
4995 `(("python-appdirs" ,python-appdirs)))
4996 (native-inputs
4997 `(("python-setuptools-scm" ,python-setuptools-scm)
4998 ("python-sphinx" ,python-sphinx)
4999 ("python-rst.linker" ,python-rst.linker)
5000 ("python-pytest" ,python-pytest)
5001 ("python-pytest-runner" ,python-pytest-runner)))
5002 (arguments
5003 `(#:phases
5004 (modify-phases %standard-phases
5005 (add-after 'build 'build-doc
5006 (lambda _
5007 (setenv "LANG" "en_US.UTF-8")
5008 (zero? (system* "python" "setup.py" "build_sphinx"))))
5009 (add-after 'install 'install-doc
5010 (lambda* (#:key outputs #:allow-other-keys)
5011 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5012 (doc (string-append data "/doc/" ,name "-" ,version))
5013 (html (string-append doc "/html")))
5014 (mkdir-p html)
5015 (for-each (lambda (file)
5016 (copy-file file (string-append doc "/" file)))
5017 '("README.rst" "CHANGES.rst"))
5018 (copy-recursively "build/sphinx/html" html)))))))
5019 (home-page "https://github.com/jaraco/path.py")
5020 (synopsis "Python module wrapper for built-in os.path")
5021 (description
5022 "@code{path.py} implements path objects as first-class entities, allowing
5023common operations on files to be invoked on those path objects directly.")
5024 (license license:expat)))
5025
5026(define-public python2-pathpy
5027 (package-with-python2 python-pathpy))
5028
5029(define-public python-pickleshare
5030 (package
5031 (name "python-pickleshare")
5032 (version "0.5")
5033 (source
5034 (origin
5035 (method url-fetch)
5036 (uri (string-append "https://pypi.python.org/packages/source/p/"
5037 "pickleshare/pickleshare-" version ".tar.gz"))
5038 (sha256
5039 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
5040 (build-system python-build-system)
5041 (propagated-inputs
5042 `(("python-pathpy" ,python-pathpy)))
5043 (home-page "https://github.com/vivainio/pickleshare")
5044 (synopsis "Tiny key value database with concurrency support")
5045 (description
5046 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
5047Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
5048shelve, many processes can access the database simultaneously. Changing a
5049value in database is immediately visible to other processes accessing the same
5050database. Concurrency is possible because the values are stored in separate
5051files. Hence the “database” is a directory where all files are governed by
5052PickleShare.")
5053 (license license:expat)))
5054
5055(define-public python2-pickleshare
5056 (package-with-python2 python-pickleshare))
5057
5058(define-public python-simplegeneric
5059 (package
5060 (name "python-simplegeneric")
5061 (version "0.8.1")
5062 (source
5063 (origin
5064 (method url-fetch)
5065 (uri (string-append "https://pypi.python.org/packages/source/s/"
5066 "simplegeneric/simplegeneric-" version ".zip"))
5067 (sha256
5068 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5069 (build-system python-build-system)
5070 (native-inputs
5071 `(("unzip" ,unzip)))
5072 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5073 (synopsis "Python module for simple generic functions")
5074 (description
5075 "The simplegeneric module lets you define simple single-dispatch generic
5076functions, akin to Python’s built-in generic functions like @code{len()},
5077@code{iter()} and so on. However, instead of using specially-named methods,
5078these generic functions use simple lookup tables, akin to those used by
5079e.g. @code{pickle.dump()} and other generic functions found in the Python
5080standard library.")
5081 (license license:zpl2.1)))
5082
5083(define-public python2-simplegeneric
5084 (package-with-python2 python-simplegeneric))
5085
5086(define-public python-ipython-genutils
5087 ;; TODO: This package is retired, check if can be removed, see description.
5088 (package
5089 (name "python-ipython-genutils")
5090 (version "0.1.0")
5091 (source
5092 (origin
5093 (method url-fetch)
5094 (uri (string-append "https://pypi.python.org/packages/source/i/"
5095 "ipython_genutils/ipython_genutils-"
5096 version ".tar.gz"))
5097 (sha256
5098 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5099 (build-system python-build-system)
5100 (arguments `(#:tests? #f)) ; no tests
5101 (home-page "http://ipython.org")
5102 (synopsis "Vestigial utilities from IPython")
5103 (description
5104 "This package provides retired utilities from IPython. No packages
5105outside IPython/Jupyter should depend on it.
5106
5107This package shouldn't exist. It contains some common utilities shared by
5108Jupyter and IPython projects during The Big Split. As soon as possible, those
5109packages will remove their dependency on this, and this package will go
5110away.")
5111 (license license:bsd-3)))
5112
5113(define-public python2-ipython-genutils
5114 (package-with-python2 python-ipython-genutils))
5115
5116(define-public python-traitlets
5117 (package
5118 (name "python-traitlets")
5119 (version "4.2.0")
5120 (source
5121 (origin
5122 (method url-fetch)
5123 (uri (pypi-uri "traitlets" version))
5124 (sha256
5125 (base32
5126 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
5127 (build-system python-build-system)
5128 (arguments
5129 `(#:phases
5130 (modify-phases %standard-phases
5131 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5132 (propagated-inputs
5133 `(("python-ipython-genutils" ,python-ipython-genutils)
5134 ("python-decorator" ,python-decorator)))
5135 (native-inputs
5136 `(("python-mock" ,python-mock)
5137 ("python-nose" ,python-nose)))
5138 (home-page "http://ipython.org")
5139 (synopsis "Configuration system for Python applications")
5140 (description
5141 "Traitlets is a framework that lets Python classes have attributes with
5142type checking, dynamically calculated default values, and ‘on change’
5143callbacks. The package also includes a mechanism to use traitlets for
5144configuration, loading values from files or from command line arguments. This
5145is a distinct layer on top of traitlets, so you can use traitlets in your code
5146without using the configuration machinery.")
5147 (license license:bsd-3)))
5148
5149(define-public python2-traitlets
5150 (package-with-python2 python-traitlets))
5151
5152(define-public python-jupyter-core
5153 (package
5154 (name "python-jupyter-core")
5155 (version "4.2.1")
5156 (source
5157 (origin
5158 (method url-fetch)
5159 (uri (string-append (pypi-uri "jupyter_core" version)))
5160 (sha256
5161 (base32
5162 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
5163 (build-system python-build-system)
5164 ;; FIXME: not sure how to run the tests
5165 (arguments `(#:tests? #f))
5166 (propagated-inputs
5167 `(("python-traitlets" ,python-traitlets)))
5168 (home-page "http://jupyter.org/")
5169 (synopsis "Jupyter base package")
5170 (description
5171 "Jupyter core is the base package on which Jupyter projects rely.")
5172 (license license:bsd-3)))
5173
5174(define-public python2-jupyter-core
5175 (package-with-python2 python-jupyter-core))
5176
5177(define-public python-jupyter-client
5178 (package
5179 (name "python-jupyter-client")
5180 (version "4.4.0")
5181 (source
5182 (origin
5183 (method url-fetch)
5184 (uri (pypi-uri "jupyter_client" version))
5185 (sha256
5186 (base32
5187 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
5188 (build-system python-build-system)
5189 ;; Tests fail because of missing native python kernel which I assume is
5190 ;; provided by the ipython package, which we cannot use because it would
5191 ;; cause a dependency cycle.
5192 (arguments `(#:tests? #f))
5193 (propagated-inputs
5194 `(("python-pyzmq" ,python-pyzmq)
5195 ("python-traitlets" ,python-traitlets)
5196 ("python-jupyter-core" ,python-jupyter-core)))
5197 (home-page "http://jupyter.org/")
5198 (synopsis "Jupyter protocol implementation and client libraries")
5199 (description
5200 "The @code{jupyter_client} package contains the reference implementation
5201of the Jupyter protocol. It also provides client and kernel management APIs
5202for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5203installing @code{kernelspec}s for use with Jupyter frontends.")
5204 (license license:bsd-3)))
5205
5206(define-public python2-jupyter-client
5207 (package-with-python2 python-jupyter-client))
5208
5209(define-public python-ipykernel
5210 (package
5211 (name "python-ipykernel")
5212 (version "4.5.2")
5213 (source
5214 (origin
5215 (method url-fetch)
5216 (uri (pypi-uri "ipykernel" version))
5217 (sha256
5218 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
5219 (build-system python-build-system)
5220 ;; The tests load a submodule of IPython. However, IPython itself depends
5221 ;; on ipykernel.
5222 (arguments `(#:tests? #f))
5223 (propagated-inputs
5224 ;; imported at runtime during connect
5225 `(("python-jupyter-client" ,python-jupyter-client)))
5226 (home-page "http://ipython.org")
5227 (synopsis "IPython Kernel for Jupyter")
5228 (description
5229 "This package provides the IPython kernel for Jupyter.")
5230 (license license:bsd-3)))
5231
5232(define-public python2-ipykernel
5233 (package-with-python2 python-ipykernel))
5234
5235(define-public python-testpath
5236 (package
5237 (name "python-testpath")
5238 (version "0.2")
5239 (source
5240 (origin
5241 (method url-fetch)
5242 (uri (string-append "https://github.com/jupyter/testpath/archive/"
5243 version ".tar.gz"))
5244 (file-name (string-append name "-" version ".tar.gz"))
5245 (sha256
5246 (base32
5247 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
5248 (build-system python-build-system)
5249 (arguments
5250 `(#:tests? #f ; this package does not even have a setup.py
5251 #:modules ((guix build python-build-system)
5252 (guix build utils)
5253 (srfi srfi-1))
5254 #:imported-modules (,@%python-build-system-modules
5255 (srfi srfi-1))
5256 #:phases
5257 (modify-phases %standard-phases
5258 (delete 'install)
5259 (replace 'build
5260 (lambda* (#:key inputs outputs #:allow-other-keys)
5261 (let* ((version (last
5262 (string-split (assoc-ref inputs "python") #\-)))
5263 (x.y (string-join (take (string-split version #\.) 2)
5264 "."))
5265 (dir (string-append
5266 (assoc-ref outputs "out")
5267 "/lib/python" x.y "/site-packages/testpath")))
5268 (mkdir-p dir)
5269 (copy-recursively "testpath" dir))
5270 #t)))))
5271 (home-page "https://github.com/takluyver/testpath")
5272 (synopsis "Test utilities for code working with files and commands")
5273 (description
5274 "Testpath is a collection of utilities for Python code working with files
5275and commands. It contains functions to check things on the filesystem, and
5276tools for mocking system commands and recording calls to those.")
5277 (license license:expat)))
5278
5279(define-public python2-testpath
5280 (package-with-python2 python-testpath))
5281
5282(define-public python-ipython
5283 (package
5284 (name "python-ipython")
5285 (version "5.2.2")
5286 (source
5287 (origin
5288 (method url-fetch)
5289 (uri (pypi-uri "ipython" version ".tar.gz"))
5290 (sha256
5291 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
5292 (build-system python-build-system)
5293 (outputs '("out" "doc"))
5294 (propagated-inputs
5295 `(("python-pyzmq" ,python-pyzmq)
5296 ("python-prompt-toolkit" ,python-prompt-toolkit)
5297 ("python-terminado" ,python-terminado)
5298 ("python-matplotlib" ,python-matplotlib)
5299 ("python-numpy" ,python-numpy)
5300 ("python-numpydoc" ,python-numpydoc)
5301 ("python-jinja2" ,python-jinja2)
5302 ("python-mistune" ,python-mistune)
5303 ("python-pexpect" ,python-pexpect)
5304 ("python-pickleshare" ,python-pickleshare)
5305 ("python-simplegeneric" ,python-simplegeneric)
5306 ("python-jsonschema" ,python-jsonschema)
5307 ("python-traitlets" ,python-traitlets)
5308 ("python-ipykernel" ,python-ipykernel)
5309 ("python-nbformat" ,python-nbformat)
5310 ("python-pygments" ,python-pygments)))
5311 (inputs
5312 `(("readline" ,readline)
5313 ("which" ,which)))
5314 (native-inputs
5315 `(("graphviz" ,graphviz)
5316 ("pkg-config" ,pkg-config)
5317 ("python-requests" ,python-requests) ;; for tests
5318 ("python-testpath" ,python-testpath)
5319 ("python-nose" ,python-nose)
5320 ("python-sphinx" ,python-sphinx)
5321 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
5322 ("texlive" ,texlive)
5323 ("texinfo" ,texinfo)))
5324 (arguments
5325 `(#:phases
5326 (modify-phases %standard-phases
5327 (add-after
5328 'install 'install-doc
5329 (lambda* (#:key inputs outputs #:allow-other-keys)
5330 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5331 (doc (string-append data "/doc/" ,name "-" ,version))
5332 (html (string-append doc "/html"))
5333 (man1 (string-append data "/man/man1"))
5334 (info (string-append data "/info"))
5335 (examples (string-append doc "/examples"))
5336 (python-arg (string-append "PYTHON=" (which "python"))))
5337 (setenv "LANG" "en_US.utf8")
5338 ;; Make installed package available for running the tests
5339 (add-installed-pythonpath inputs outputs)
5340 (with-directory-excursion "docs"
5341 ;; FIXME: pdf fails to build
5342 ;;(system* "make" "pdf" "PAPER=a4")
5343 (system* "make" python-arg "html")
5344 (system* "make" python-arg "info"))
5345 (copy-recursively "docs/man" man1)
5346 (copy-recursively "examples" examples)
5347 (copy-recursively "docs/build/html" html)
5348 ;; (copy-file "docs/build/latex/ipython.pdf"
5349 ;; (string-append doc "/ipython.pdf"))
5350 (mkdir-p info)
5351 (copy-file "docs/build/texinfo/ipython.info"
5352 (string-append info "/ipython.info"))
5353 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5354 ;; Tests can only be run after the library has been installed and not
5355 ;; within the source directory.
5356 (delete 'check)
5357 (add-after
5358 'install 'check
5359 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5360 (if tests?
5361 (with-directory-excursion "/tmp"
5362 ;; Make installed package available for running the tests
5363 (add-installed-pythonpath inputs outputs)
5364 (setenv "HOME" "/tmp/") ;; required by a test
5365 (zero? (system* (string-append (assoc-ref outputs "out")
5366 "/bin/iptest"))))
5367 #t)))
5368 (add-before
5369 'install 'fix-tests
5370 (lambda* (#:key inputs #:allow-other-keys)
5371 (substitute* "./IPython/utils/_process_posix.py"
5372 (("/usr/bin/env', 'which") (which "which")))
5373 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5374 (("#!/usr/bin/env python")
5375 (string-append "#!" (which "python"))))
5376 ;; Disable 1 failing test
5377 (substitute* "./IPython/core/tests/test_magic.py"
5378 (("def test_dirops\\(\\):" all)
5379 (string-append "@dec.skipif(True)\n" all))))))))
5380 (home-page "http://ipython.org")
5381 (synopsis "IPython is a tool for interactive computing in Python")
5382 (description
5383 "IPython provides a rich architecture for interactive computing with:
5384Powerful interactive shells, a browser-based notebook, support for interactive
5385data visualization, embeddable interpreters and tools for parallel
5386computing.")
5387 (license license:bsd-3)
5388 (properties `((python2-variant . ,(delay python2-ipython))))))
5389
5390(define-public python2-ipython
5391 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
5392 (package
5393 (inherit ipython)
5394 ;; FIXME: add pyreadline once available.
5395 (propagated-inputs
5396 `(("python2-backports-shutil-get-terminal-size"
5397 ,python2-backports-shutil-get-terminal-size)
5398 ("python2-pathlib2" ,python2-pathlib2)
5399 ,@(package-propagated-inputs ipython)))
5400 (native-inputs
5401 `(("python2-mock" ,python2-mock)
5402 ,@(package-native-inputs ipython))))))
5403
5404(define-public python-isodate
5405 (package
5406 (name "python-isodate")
5407 (version "0.5.4")
5408 (source
5409 (origin
5410 (method url-fetch)
5411 (uri (pypi-uri "isodate" version))
5412 (sha256
5413 (base32
5414 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
5415 (build-system python-build-system)
5416 (home-page
5417 "http://cheeseshop.python.org/pypi/isodate")
5418 (synopsis
5419 "Python date parser and formatter")
5420 (description
5421 "Python-isodate is a python module for parsing and formatting
5422ISO 8601 dates, time and duration.")
5423 (license license:bsd-3)))
5424
5425(define-public python2-isodate
5426 (package-with-python2 python-isodate))
5427
5428(define-public python-html5lib
5429 (package
5430 (name "python-html5lib")
5431 (version "1.0b10")
5432 (source
5433 (origin
5434 (method url-fetch)
5435 (uri (pypi-uri "html5lib" version))
5436 (sha256
5437 (base32
5438 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
5439 (build-system python-build-system)
5440 (propagated-inputs
5441 `(("python-six" ,python-six)
5442 ("python-webencodings" ,python-webencodings)))
5443 (arguments
5444 `(#:test-target "check"))
5445 (home-page
5446 "https://github.com/html5lib/html5lib-python")
5447 (synopsis
5448 "Python HTML parser based on the WHATWG HTML specifcation")
5449 (description
5450 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5451and written in Python.")
5452 (license license:expat)))
5453
5454(define-public python2-html5lib
5455 (package-with-python2 python-html5lib))
5456
5457;; Needed for python-bleach, a dependency of python-notebook
5458(define-public python-html5lib-0.9
5459 (package
5460 (inherit python-html5lib)
5461 (version "0.999")
5462 (source
5463 (origin
5464 (method url-fetch)
5465 (uri (pypi-uri "html5lib" version))
5466 (sha256
5467 (base32
5468 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5469
5470(define-public python2-html5lib-0.9
5471 (package-with-python2 python-html5lib-0.9))
5472
5473(define-public python-webencodings
5474 (package
5475 (name "python-webencodings")
5476 (version "0.5")
5477 (source (origin
5478 (method url-fetch)
5479 (uri (pypi-uri "webencodings" version))
5480 (sha256
5481 (base32
5482 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5483 (build-system python-build-system)
5484 (arguments
5485 '(#:phases
5486 (modify-phases %standard-phases
5487 (replace 'check
5488 (lambda _
5489 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5490 (native-inputs
5491 `(("python-pytest" ,python-pytest)))
5492 (home-page "https://github.com/SimonSapin/python-webencodings")
5493 (synopsis "Character encoding aliases for legacy web content")
5494 (description
5495 "In order to be compatible with legacy web content when interpreting
5496something like @code{Content-Type: text/html; charset=latin1}, tools need
5497to use a particular set of aliases for encoding labels as well as some
5498overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
5499the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
5500or @code{UTF-16} BOM takes precedence over any other encoding declaration.
5501The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
5502defines all such details so that implementations do not have to
5503reverse-engineer each other.
5504
5505This module implements the Encoding standard and has encoding labels and
5506BOM detection, but the actual implementation for encoders and decoders
5507is Python’s.")
5508 (license license:bsd-3)))
5509
5510(define-public python2-webencodings
5511 (package-with-python2 python-webencodings))
5512
5513(define-public python-urwid
5514 (package
5515 (name "python-urwid")
5516 (version "1.3.1")
5517 (source
5518 (origin
5519 (method url-fetch)
5520 (uri (pypi-uri "urwid" version))
5521 (sha256
5522 (base32
5523 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
5524 (build-system python-build-system)
5525 (arguments
5526 `(#:phases
5527 (modify-phases %standard-phases
5528 ;; Disable failing test. Bug filed upstream:
5529 ;; https://github.com/wardi/urwid/issues/164
5530 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
5531 (add-after 'unpack 'disable-failing-test
5532 (lambda _
5533 (substitute* "urwid/tests/test_event_loops.py"
5534 (("test_remove_watch_file")
5535 "disable_remove_watch_file")))))))
5536 (home-page "http://urwid.org")
5537 (synopsis "Console user interface library for Python")
5538 (description
5539 "Urwid is a curses-based UI/widget library for Python. It includes many
5540features useful for text console applications.")
5541 (license license:lgpl2.1+)))
5542
5543(define-public python2-urwid
5544 (let ((python2-urwid (package-with-python2 python-urwid)))
5545 (package
5546 (inherit python2-urwid)
5547 (arguments
5548 (append
5549 '(#:phases
5550 (modify-phases %standard-phases
5551 ;; Disable the vterm tests because of non-deterministic failures
5552 ;; with Python 2. See https://github.com/urwid/urwid/issues/230.
5553 (add-after 'unpack 'delete-test_vterm.py
5554 (delete-file "urwid/tests/test_vterm.py"))))
5555 (package-arguments python-urwid))))))
5556
5557(define-public python-openid
5558 (package
5559 (name "python-openid")
5560 (version "3.0.10")
5561 (source
5562 (origin
5563 (method url-fetch)
5564 (uri (pypi-uri "python3-openid" version))
5565 (sha256
5566 (base32
5567 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
5568 (build-system python-build-system)
5569 (arguments
5570 `(#:phases
5571 (modify-phases %standard-phases
5572 (replace 'check
5573 (lambda _
5574 (zero? (system* "./admin/runtests")))))))
5575 (properties `((python2-variant . ,(delay python2-openid))))
5576 (propagated-inputs
5577 `(("python-defusedxml" ,python-defusedxml)))
5578 (native-inputs
5579 `(("python-psycopg2" ,python-psycopg2)
5580 ("python-django" ,python-django)))
5581 (home-page "https://github.com/necaris/python3-openid")
5582 (synopsis "OpenID support for servers and consumers")
5583 (description "This library provides OpenID authentication for Python, both
5584for clients and servers.")
5585 (license license:asl2.0)))
5586
5587(define-public python2-openid
5588 (package
5589 (name "python2-openid")
5590 (version "2.2.5")
5591 (source
5592 (origin
5593 (method url-fetch)
5594 (uri (pypi-uri "python-openid" version))
5595 (sha256
5596 (base32
5597 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
5598 (build-system python-build-system)
5599 (arguments
5600 ;; Python 3 support is in `python3-openid`, a separate package.
5601 `(#:python ,python-2))
5602 (home-page "https://github.com/openid/python-openid")
5603 (synopsis "OpenID support for servers and consumers")
5604 (description "This library provides OpenID authentication for Python, both
5605for clients and servers.")
5606 (license license:asl2.0)))
5607
5608(define-public python-urwidtrees
5609 (package
5610 (name "python-urwidtrees")
5611 (version "1.0.2")
5612 (source
5613 (origin
5614 (method url-fetch)
5615 ;; package author intends on distributing via github rather than pypi:
5616 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5617 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5618 version ".tar.gz"))
5619 (file-name (string-append name "-" version ".tar.gz"))
5620 (sha256
5621 (base32
5622 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
5623 (build-system python-build-system)
5624 (arguments
5625 '(#:tests? #f)) ; no tests
5626 (propagated-inputs `(("python-urwid" ,python-urwid)))
5627 (home-page "https://github.com/pazz/urwidtrees")
5628 (synopsis "Tree widgets for urwid")
5629 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5630toolkit. Use it to build trees of widgets.")
5631 (license license:gpl3+)))
5632
5633(define-public python2-urwidtrees
5634 (package-with-python2 python-urwidtrees))
5635
5636(define-public python-dbus
5637 (package
5638 (name "python-dbus")
5639 (version "1.2.0")
5640 (source
5641 (origin
5642 (method url-fetch)
5643 (uri (string-append
5644 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
5645 version ".tar.gz"))
5646 (sha256
5647 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5648 (build-system gnu-build-system)
5649 (arguments
5650 '(#:phases
5651 (modify-phases %standard-phases
5652 (add-before
5653 'check 'pre-check
5654 (lambda _
5655 ;; XXX: For the missing '/etc/machine-id'.
5656 (substitute* "test/run-test.sh"
5657 (("DBUS_FATAL_WARNINGS=1")
5658 "DBUS_FATAL_WARNINGS=0"))
5659 #t)))))
5660 (native-inputs
5661 `(("pkg-config" ,pkg-config)))
5662 (inputs
5663 `(("python" ,python)
5664 ("dbus-glib" ,dbus-glib)))
5665 (synopsis "Python bindings for D-bus")
5666 (description "python-dbus provides bindings for libdbus, the reference
5667implementation of D-Bus.")
5668 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
5669 (license license:expat)))
5670
5671(define-public python2-dbus
5672 (package (inherit python-dbus)
5673 (name "python2-dbus")
5674 (inputs `(("python" ,python-2)
5675 ,@(alist-delete "python"
5676 (package-inputs python-dbus)
5677 equal?)))
5678 ;; FIXME: on Python 2, the test_utf8 fails with:
5679 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5680 (arguments `(#:tests? #f))))
5681
5682(define-public python-apsw
5683 (package
5684 (name "python-apsw")
5685 (version "3.9.2-r1")
5686 (source
5687 (origin
5688 (method url-fetch)
5689 (uri (pypi-uri "apsw" version))
5690 (sha256
5691 (base32
5692 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
5693 (build-system python-build-system)
5694 (inputs
5695 `(("sqlite" ,sqlite)))
5696 (arguments
5697 `(#:phases
5698 (modify-phases %standard-phases
5699 (delete 'check)
5700 (add-after 'install 'check
5701 (lambda* (#:key inputs outputs #:allow-other-keys)
5702 (add-installed-pythonpath inputs outputs)
5703 (zero? (system* "python" "setup.py" "test")))))))
5704 (home-page "https://github.com/rogerbinns/apsw/")
5705 (synopsis "Another Python SQLite Wrapper")
5706 (description "APSW is a Python wrapper for the SQLite
5707embedded relational database engine. In contrast to other wrappers such as
5708pysqlite it focuses on being a minimal layer over SQLite attempting just to
5709translate the complete SQLite API into Python.")
5710 (license license:zlib)))
5711
5712(define-public python2-apsw
5713 (package-with-python2 python-apsw))
5714
5715(define-public python-lxml
5716 (package
5717 (name "python-lxml")
5718 (version "3.6.0")
5719 (source
5720 (origin
5721 (method url-fetch)
5722 (uri (pypi-uri "lxml" version))
5723 (sha256
5724 (base32
5725 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
5726 (build-system python-build-system)
5727 (inputs
5728 `(("libxml2" ,libxml2)
5729 ("libxslt" ,libxslt)))
5730 (home-page "http://lxml.de/")
5731 (synopsis
5732 "Python XML processing library")
5733 (description
5734 "The lxml XML toolkit is a Pythonic binding for the C libraries
5735libxml2 and libxslt.")
5736 (license license:bsd-3))) ; and a few more, see LICENSES.txt
5737
5738(define-public python2-lxml
5739 (package-with-python2 python-lxml))
5740
5741;; beautifulsoup4 has a totally different namespace than 3.x,
5742;; and pypi seems to put it under its own name, so I guess we should too
5743(define-public python-beautifulsoup4
5744 (package
5745 (name "python-beautifulsoup4")
5746 (version "4.5.3")
5747 (source
5748 (origin
5749 (method url-fetch)
5750 (uri (pypi-uri "beautifulsoup4" version))
5751 (sha256
5752 (base32
5753 "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"))))
5754 (build-system python-build-system)
5755 (arguments
5756 `(#:phases
5757 (modify-phases %standard-phases
5758 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5759 ;; must use this conversion script when building with Python 3. The
5760 ;; conversion script also runs the tests.
5761 ;; For more information, see the file 'convert-py3k' in the source
5762 ;; distribution.
5763 (replace 'check
5764 (lambda _ (zero? (system* "./convert-py3k")))))))
5765 (home-page
5766 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5767 (synopsis
5768 "Python screen-scraping library")
5769 (description
5770 "Beautiful Soup is a Python library designed for rapidly setting up
5771screen-scraping projects. It offers Pythonic idioms for navigating,
5772searching, and modifying a parse tree, providing a toolkit for
5773dissecting a document and extracting what you need. It automatically
5774converts incoming documents to Unicode and outgoing documents to UTF-8.")
5775 (license license:expat)
5776 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
5777
5778(define-public python2-beautifulsoup4
5779 (package
5780 (inherit (package-with-python2
5781 (strip-python2-variant python-beautifulsoup4)))
5782 (arguments `(#:python ,python-2))))
5783
5784(define-public python-cssutils
5785 (package
5786 (name "python-cssutils")
5787 (version "1.0.1")
5788 (source
5789 (origin
5790 (method url-fetch)
5791 (uri (pypi-uri "cssutils" version))
5792 (sha256
5793 (base32
5794 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
5795 (build-system python-build-system)
5796 (native-inputs
5797 `(("unzip" ,unzip))) ; for unpacking the source
5798 (arguments
5799 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
5800 (home-page "http://cthedot.de/cssutils/")
5801 (synopsis
5802 "CSS Cascading Style Sheets library for Python")
5803 (description
5804 "Cssutils is a Python package for parsing and building CSS
5805Cascading Style Sheets. Currently it provides a DOM only and no rendering
5806options.")
5807 (license license:lgpl3+)))
5808
5809(define-public python2-cssutils
5810 (package-with-python2 python-cssutils))
5811
5812(define-public python-cssselect
5813 (package
5814 (name "python-cssselect")
5815 (version "0.9.2")
5816 (source
5817 (origin
5818 (method url-fetch)
5819 (uri (pypi-uri "cssselect" version))
5820 (sha256
5821 (base32
5822 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
5823 (build-system python-build-system)
5824 (arguments
5825 ;; tests fail with message
5826 ;; AttributeError: 'module' object has no attribute 'tests'
5827 `(#:tests? #f))
5828 (home-page
5829 "https://pythonhosted.org/cssselect/")
5830 (synopsis
5831 "CSS3 selector parser and translator to XPath 1.0")
5832 (description
5833 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5834them to XPath 1.0 expressions. Such expressions can be used in lxml or
5835another XPath engine to find the matching elements in an XML or HTML document.")
5836 (license license:bsd-3)))
5837
5838(define-public python2-cssselect
5839 (package-with-python2 python-cssselect))
5840
5841(define-public python-openid-cla
5842 (package
5843 (name "python-openid-cla")
5844 (version "1.2")
5845 (source
5846 (origin
5847 (method url-fetch)
5848 (uri (pypi-uri "python-openid-cla" version))
5849 (sha256
5850 (base32
5851 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
5852 (build-system python-build-system)
5853 (arguments '(#:tests? #f)) ; No tests.
5854 (home-page "https://github.com/puiterwijk/python-openid-cla/")
5855 (synopsis "Implementation of the OpenID CLA extension for python-openid")
5856 (description "@code{openid-cla} is an implementation of the OpenID
5857contributor license agreement extension for python-openid.")
5858 (license license:bsd-3)))
5859
5860(define-public python2-openid-cla
5861 (package-with-python2 python-openid-cla))
5862
5863(define-public python-openid-teams
5864 (package
5865 (name "python-openid-teams")
5866 (version "1.1")
5867 (source
5868 (origin
5869 (method url-fetch)
5870 (uri (pypi-uri "python-openid-teams" version))
5871 (sha256
5872 (base32
5873 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
5874 (build-system python-build-system)
5875 (arguments '(#:tests? #f)) ; No tests.
5876 (home-page "https://github.com/puiterwijk/python-openid-teams/")
5877 (synopsis "Implementation of the OpenID teams extension for python-openid")
5878 (description
5879 "@code{openid-teams} is an implementation of the OpenID
5880teams extension for python-openid.")
5881 (license license:bsd-3)))
5882
5883(define-public python2-openid-teams
5884 (package-with-python2 python-openid-teams))
5885
5886(define-public python-netifaces
5887 (package
5888 (name "python-netifaces")
5889 (version "0.10.4")
5890 (source
5891 (origin
5892 (method url-fetch)
5893 (uri (string-append
5894 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5895 version
5896 ".tar.gz"))
5897 (sha256
5898 (base32
5899 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5900 (build-system python-build-system)
5901 (home-page
5902 "https://bitbucket.org/al45tair/netifaces")
5903 (synopsis
5904 "Python module for portable network interface information")
5905 (description
5906 "Netifaces is a Python module providing information on network
5907interfaces in an easy and portable manner.")
5908 (license license:expat)))
5909
5910(define-public python2-netifaces
5911 (package-with-python2 python-netifaces))
5912
5913(define-public python-networkx
5914 (package
5915 (name "python-networkx")
5916 (version "1.11")
5917 (source
5918 (origin
5919 (method url-fetch)
5920 (uri (pypi-uri "networkx" version))
5921 (sha256
5922 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
5923 (build-system python-build-system)
5924 ;; python-decorator is needed at runtime
5925 (propagated-inputs
5926 `(("python-decorator" ,python-decorator)))
5927 (native-inputs
5928 `(("python-nose" ,python-nose)))
5929 (home-page "http://networkx.github.io/")
5930 (synopsis "Python module for creating and manipulating graphs and networks")
5931 (description
5932 "NetworkX is a Python package for the creation, manipulation, and study
5933of the structure, dynamics, and functions of complex networks.")
5934 (license license:bsd-3)))
5935
5936(define-public python2-networkx
5937 (package-with-python2 python-networkx))
5938
5939(define-public snakemake
5940 (package
5941 (name "snakemake")
5942 (version "3.11.2")
5943 (source
5944 (origin
5945 (method url-fetch)
5946 (uri (pypi-uri "snakemake" version))
5947 (sha256
5948 (base32 "0qcp7y9csvanyzh08jppryhd5di8r1z7p0d4wkfg5591pj3bb8zp"))))
5949 (build-system python-build-system)
5950 (arguments
5951 ;; TODO: Package missing test dependencies.
5952 '(#:tests? #f))
5953 (propagated-inputs
5954 `(("python-wrapt" ,python-wrapt)
5955 ("python-requests" ,python-requests)))
5956 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
5957 (synopsis "Python-based execution environment for make-like workflows")
5958 (description
5959 "Snakemake aims to reduce the complexity of creating workflows by
5960providing a clean and modern domain specific specification language (DSL) in
5961Python style, together with a fast and comfortable execution environment.")
5962 (license license:expat)))
5963
5964(define-public python-seaborn
5965 (package
5966 (name "python-seaborn")
5967 (version "0.7.1")
5968 (source
5969 (origin
5970 (method url-fetch)
5971 (uri (pypi-uri "seaborn" version))
5972 (sha256
5973 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
5974 (build-system python-build-system)
5975 (arguments
5976 '(#:tests? #f)) ; Tests requires a running X11 server.
5977 (propagated-inputs
5978 `(("python-pandas" ,python-pandas)
5979 ("python-matplotlib" ,python-matplotlib)
5980 ("python-scipy" ,python-scipy)))
5981 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5982 (synopsis "Statistical data visualization")
5983 (description
5984 "Seaborn is a library for making attractive and informative statistical
5985graphics in Python. It is built on top of matplotlib and tightly integrated
5986with the PyData stack, including support for numpy and pandas data structures
5987and statistical routines from scipy and statsmodels.")
5988 (license license:bsd-3)
5989 (properties `((python2-variant . ,(delay python2-seaborn))))))
5990
5991(define-public python2-seaborn
5992 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5993 (package
5994 (inherit base)
5995 (propagated-inputs `(("python2-pytz" ,python2-pytz)
5996 ,@(package-propagated-inputs base))))))
5997
5998(define-public python-mpmath
5999 (package
6000 (name "python-mpmath")
6001 (version "0.19")
6002 (source (origin
6003 (method url-fetch)
6004 (uri (string-append "http://mpmath.org/files/mpmath-"
6005 version ".tar.gz"))
6006 (sha256
6007 (base32
6008 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
6009 (build-system python-build-system)
6010 (arguments
6011 '(#:phases
6012 (modify-phases %standard-phases
6013 (replace 'check
6014 (lambda _
6015 (zero?
6016 (system* "python" "mpmath/tests/runtests.py" "-local")))))))
6017 (home-page "http://mpmath.org")
6018 (synopsis "Arbitrary-precision floating-point arithmetic in python")
6019 (description
6020 "@code{mpmath} can be used as an arbitrary-precision substitute for
6021Python's float/complex types and math/cmath modules, but also does much
6022more advanced mathematics.")
6023 (license license:bsd-3)))
6024
6025(define-public python2-mpmath
6026 (package-with-python2 python-mpmath))
6027
6028(define-public python-sympy
6029 (package
6030 (name "python-sympy")
6031 (version "1.0")
6032 (source
6033 (origin
6034 (method url-fetch)
6035 (uri (string-append
6036 "https://github.com/sympy/sympy/releases/download/sympy-"
6037 version "/sympy-" version ".tar.gz"))
6038 (sha256
6039 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
6040 (build-system python-build-system)
6041 (propagated-inputs
6042 `(("python-mpmath" ,python-mpmath)))
6043 (home-page "http://www.sympy.org/")
6044 (synopsis "Python library for symbolic mathematics")
6045 (description
6046 "SymPy is a Python library for symbolic mathematics. It aims to become a
6047full-featured computer algebra system (CAS) while keeping the code as simple
6048as possible in order to be comprehensible and easily extensible.")
6049 (license license:bsd-3)))
6050
6051(define-public python2-sympy
6052 (package-with-python2 python-sympy))
6053
6054(define-public python-q
6055 (package
6056 (name "python-q")
6057 (version "2.6")
6058 (source
6059 (origin
6060 (method url-fetch)
6061 (uri (pypi-uri "q" version))
6062 (sha256
6063 (base32
6064 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
6065 (build-system python-build-system)
6066 (home-page "https://github.com/zestyping/q")
6067 (synopsis "Quick-and-dirty debugging output for tired programmers")
6068 (description
6069 "q is a Python module for \"print\" style of debugging Python code. It
6070provides convenient short API for print out of values, tracebacks, and
6071falling into the Python interpreter.")
6072 (license license:asl2.0)))
6073
6074(define-public python2-q
6075 (package-with-python2 python-q))
6076
6077(define-public python-testlib
6078 (package
6079 (name "python-testlib")
6080 (version "0.6.5")
6081 (source
6082 (origin
6083 (method url-fetch)
6084 (uri (string-append
6085 "https://pypi.python.org/packages/source/t/testlib/testlib-"
6086 version ".zip"))
6087 (sha256
6088 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
6089 (build-system python-build-system)
6090 (native-inputs
6091 `(("unzip" ,unzip))) ; for unpacking the source
6092 (synopsis "Python micro test suite harness")
6093 (description "A micro unittest suite harness for Python.")
6094 (home-page "https://github.com/trentm/testlib")
6095 (license license:expat)))
6096
6097(define-public python2-testlib
6098 (package-with-python2 python-testlib))
6099
6100(define-public python2-xlib
6101 (package
6102 (name "python2-xlib")
6103 (version "0.14")
6104 (source (origin
6105 (method url-fetch)
6106 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6107 "/" version "/"
6108 "python-xlib-" version ".tar.gz"))
6109 (sha256
6110 (base32
6111 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6112 (build-system python-build-system)
6113 (arguments
6114 `(#:python ,python-2 ;Python 2 only
6115 #:tests? #f)) ;no tests
6116 (home-page "http://python-xlib.sourceforge.net/")
6117 (synopsis "Python X11 client library")
6118 (description
6119 "The Python X Library is intended to be a fully functional X client
6120library for Python programs. It is useful to implement low-level X clients.
6121It is written entirely in Python.")
6122 (license license:gpl2+)))
6123
6124(define-public python-singledispatch
6125 (package
6126 (name "python-singledispatch")
6127 (version "3.4.0.3")
6128 (source
6129 (origin
6130 (method url-fetch)
6131 (uri (pypi-uri "singledispatch" version))
6132 (sha256
6133 (base32
6134 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6135 (build-system python-build-system)
6136 (native-inputs
6137 `(("python-six" ,python-six))) ; required for conversion, not at run-time
6138 (home-page
6139 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6140 (synopsis "Backport of singledispatch feature from Python 3.4")
6141 (description
6142 "This library brings functools.singledispatch from Python 3.4 to Python
61432.6-3.3.")
6144 (license license:expat)))
6145
6146(define-public python2-singledispatch
6147 (package-with-python2 python-singledispatch))
6148
6149(define-public python-tornado
6150 (package
6151 (name "python-tornado")
6152 (version "4.5.1")
6153 (source
6154 (origin
6155 (method url-fetch)
6156 (uri (pypi-uri "tornado" version))
6157 (sha256
6158 (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
6159 (build-system python-build-system)
6160 (arguments
6161 '(;; FIXME: Two tests error out with:
6162 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
6163 ;; #:phases
6164 ;; (modify-phases %standard-phases
6165 ;; (replace 'check
6166 ;; (lambda _
6167 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
6168 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
6169 ;; (zero? (system* "python" "-m" "tornado.test")))))
6170 #:tests? #f))
6171 (native-inputs
6172 `(("python-certifi" ,python-certifi)))
6173 (propagated-inputs
6174 `(("python-backports-abc" ,python-backports-abc)))
6175 (home-page "http://www.tornadoweb.org/")
6176 (synopsis "Python web framework and asynchronous networking library")
6177 (description
6178 "Tornado is a Python web framework and asynchronous networking library,
6179originally developed at FriendFeed. By using non-blocking network I/O,
6180Tornado can scale to tens of thousands of open connections, making it ideal
6181for long polling, WebSockets, and other applications that require a long-lived
6182connection to each user.")
6183 (license license:asl2.0)
6184 (properties `((python2-variant . ,(delay python2-tornado))))))
6185
6186(define-public python2-tornado
6187 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
6188 (package (inherit tornado)
6189 (propagated-inputs
6190 `(("python2-backport-ssl-match-hostname"
6191 ,python2-backport-ssl-match-hostname)
6192 ("python2-singledispatch" ,python2-singledispatch)
6193 ,@(package-propagated-inputs tornado))))))
6194
6195;; the python- version can be removed with python-3.5
6196(define-public python-backports-abc
6197 (package
6198 (name "python-backports-abc")
6199 (version "0.5")
6200 (source
6201 (origin
6202 (method url-fetch)
6203 (uri (pypi-uri "backports_abc" version))
6204 (sha256
6205 (base32
6206 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6207 (build-system python-build-system)
6208 (home-page "https://github.com/cython/backports_abc")
6209 (synopsis "Backport of additions to the 'collections.abc' module")
6210 (description
6211 "Python-backports-abc provides a backport of additions to the
6212'collections.abc' module in Python-3.5.")
6213 (license license:psfl)))
6214
6215(define-public python2-backports-abc
6216 (package-with-python2 python-backports-abc))
6217
6218(define-public python2-backports-shutil-get-terminal-size
6219 (package
6220 (name "python2-backports-shutil-get-terminal-size")
6221 (version "1.0.0")
6222 (source
6223 (origin
6224 (method url-fetch)
6225 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6226 (sha256
6227 (base32
6228 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6229 (build-system python-build-system)
6230 (arguments
6231 `(#:python ,python-2
6232 #:phases
6233 (modify-phases %standard-phases
6234 (replace 'check
6235 (lambda _
6236 (zero? (system* "py.test" "-v")))))))
6237 (native-inputs
6238 `(("python2-pytest" ,python2-pytest)))
6239 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6240 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6241 (description
6242 "This package provides a backport of the @code{get_terminal_size
6243function} from Python 3.3's @code{shutil}.
6244Unlike the original version it is written in pure Python rather than C,
6245so it might be a tiny bit slower.")
6246 (license license:expat)))
6247
6248(define-public python-waf
6249 (package
6250 (name "python-waf")
6251 (version "1.9.8")
6252 (source (origin
6253 (method url-fetch)
6254 (uri (string-append "https://waf.io/"
6255 "waf-" version ".tar.bz2"))
6256 (sha256
6257 (base32
6258 "0wl4cnmp06lfxqjxaan58bqxn27smhydz0sg5prrfbl3bsw4gv6q"))))
6259 (build-system python-build-system)
6260 (arguments
6261 '(#:phases
6262 (modify-phases %standard-phases
6263 (replace 'build
6264 (lambda _
6265 (zero? (system* "python" "waf-light" "configure" "build"))))
6266 (replace 'check
6267 (lambda _
6268 (zero? (system* "python" "waf" "--version"))))
6269 (replace 'install
6270 (lambda _
6271 (copy-file "waf" %output))))))
6272 (home-page "https://waf.io/")
6273 (synopsis "Python-based build system")
6274 (description
6275 "Waf is a Python-based framework for configuring, compiling and installing
6276applications.")
6277 (license license:bsd-3)))
6278
6279(define-public python2-waf
6280 (package-with-python2 python-waf))
6281
6282(define-public python-pyzmq
6283 (package
6284 (name "python-pyzmq")
6285 (version "15.1.0")
6286 (source
6287 (origin
6288 (method url-fetch)
6289 (uri (pypi-uri "pyzmq" version))
6290 (sha256
6291 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
6292 (build-system python-build-system)
6293 (arguments
6294 `(#:configure-flags
6295 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6296 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6297 ;; --inplace' for 'python setup.py test' to work.
6298 #:tests? #f))
6299 (inputs
6300 `(("zeromq" ,zeromq)))
6301 (native-inputs
6302 `(("pkg-config" ,pkg-config)
6303 ("python-nose" ,python-nose)))
6304 (home-page "https://github.com/zeromq/pyzmq")
6305 (synopsis "Python bindings for 0MQ")
6306 (description
6307 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
6308 (license license:bsd-4)))
6309
6310(define-public python2-pyzmq
6311 (package-with-python2 python-pyzmq))
6312
6313(define-public python-pep8
6314 (package
6315 (name "python-pep8")
6316 (version "1.7.0")
6317 (source
6318 (origin
6319 (method url-fetch)
6320 (uri (pypi-uri "pep8" version))
6321 (sha256
6322 (base32
6323 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
6324 (build-system python-build-system)
6325 (home-page "http://pep8.readthedocs.org/")
6326 (synopsis "Python style guide checker")
6327 (description
6328 "This tools checks Python code against some of the style conventions in
6329PEP 8.")
6330 (license license:expat)))
6331
6332(define-public python2-pep8
6333 (package-with-python2 python-pep8))
6334
6335(define-public python-pyflakes
6336 (package
6337 (name "python-pyflakes")
6338 (version "1.0.0")
6339 (source
6340 (origin
6341 (method url-fetch)
6342 (uri (pypi-uri "pyflakes" version))
6343 (sha256
6344 (base32
6345 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
6346 (build-system python-build-system)
6347 (home-page
6348 "https://github.com/pyflakes/pyflakes")
6349 (synopsis "Passive checker of Python programs")
6350 (description
6351 "Pyflakes statically checks Python source code for common errors.")
6352 (license license:expat)))
6353
6354(define-public python2-pyflakes
6355 (package-with-python2 python-pyflakes))
6356
6357(define-public python-mccabe
6358 (package
6359 (name "python-mccabe")
6360 (version "0.4.0")
6361 (source
6362 (origin
6363 (method url-fetch)
6364 (uri (pypi-uri "mccabe" version))
6365 (sha256
6366 (base32
6367 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
6368 (build-system python-build-system)
6369 (native-inputs
6370 `(("python-pytest" ,python-pytest)
6371 ("python-pytest-runner" ,python-pytest-runner)))
6372 (home-page "https://github.com/flintwork/mccabe")
6373 (synopsis "McCabe checker, plugin for flake8")
6374 (description
6375 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
6376complexity of Python source code.")
6377 (license license:expat)))
6378
6379(define-public python2-mccabe
6380 (package-with-python2 python-mccabe))
6381
6382(define-public python-mccabe-0.2.1
6383 (package (inherit python-mccabe)
6384 (version "0.2.1")
6385 (source
6386 (origin
6387 (method url-fetch)
6388 (uri (pypi-uri "mccabe" version))
6389 (sha256
6390 (base32
6391 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
6392
6393(define-public python2-mccabe-0.2.1
6394 (package-with-python2 python-mccabe-0.2.1))
6395
6396;; Flake8 2.4.1 requires an older version of pep8.
6397;; This should be removed ASAP.
6398(define-public python-pep8-1.5.7
6399 (package (inherit python-pep8)
6400 (version "1.5.7")
6401 (source
6402 (origin
6403 (method url-fetch)
6404 (uri (string-append
6405 "https://pypi.python.org/packages/source/p/pep8/pep8-"
6406 version
6407 ".tar.gz"))
6408 (sha256
6409 (base32
6410 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
6411 (arguments
6412 ;; XXX Tests not compatible with Python 3.5.
6413 '(#:tests? #f))))
6414
6415(define-public python2-pep8-1.5.7
6416 (package-with-python2 python-pep8-1.5.7))
6417
6418;; Flake8 2.4.1 requires an older version of pyflakes.
6419;; This should be removed ASAP.
6420(define-public python-pyflakes-0.8.1
6421 (package (inherit python-pyflakes)
6422 (version "0.8.1")
6423 (source
6424 (origin
6425 (method url-fetch)
6426 (uri (string-append
6427 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
6428 version
6429 ".tar.gz"))
6430 (sha256
6431 (base32
6432 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
6433 (arguments
6434 ;; XXX Tests not compatible with Python 3.5.
6435 '(#:tests? #f))))
6436
6437(define-public python2-pyflakes-0.8.1
6438 (package-with-python2 python-pyflakes-0.8.1))
6439
6440(define-public python-flake8
6441 (package
6442 (name "python-flake8")
6443 (version "2.5.4")
6444 (source
6445 (origin
6446 (method url-fetch)
6447 (uri (pypi-uri "flake8" version))
6448 (sha256
6449 (base32
6450 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
6451 (modules '((guix build utils)))
6452 (snippet
6453 '(begin
6454 ;; Remove pre-compiled .pyc files from source.
6455 (for-each delete-file-recursively
6456 (find-files "." "__pycache__" #:directories? #t))
6457 (for-each delete-file (find-files "." "\\.pyc$"))
6458 #t))))
6459 (build-system python-build-system)
6460 (propagated-inputs
6461 `(("python-pep8" ,python-pep8)
6462 ("python-pyflakes" ,python-pyflakes)
6463 ("python-mccabe" ,python-mccabe)))
6464 (native-inputs
6465 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
6466 ("python-nose" ,python-nose)))
6467 (home-page "https://gitlab.com/pycqa/flake8")
6468 (synopsis
6469 "The modular source code checker: pep8, pyflakes and co")
6470 (description
6471 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
6472 (license license:expat)))
6473
6474(define-public python2-flake8
6475 (package-with-python2 python-flake8))
6476
6477;; This will only be needed by the python-hacking package and will not be
6478;; necessary once python-hacking > 0.10.2 is released.
6479(define-public python-flake8-2.2.4
6480 (package (inherit python-flake8)
6481 (propagated-inputs
6482 `(("python-pep8" ,python-pep8-1.5.7)
6483 ("python-pyflakes" ,python-pyflakes-0.8.1)
6484 ("python-mccabe" ,python-mccabe-0.2.1)))
6485 (native-inputs
6486 `(("python-mock" ,python-mock)
6487 ("python-nose" ,python-nose)))
6488 (version "2.2.4")
6489 (source
6490 (origin
6491 (method url-fetch)
6492 (uri (pypi-uri "flake8" version))
6493 (sha256
6494 (base32
6495 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
6496 (modules '((guix build utils)))
6497 (snippet
6498 '(begin
6499 ;; Remove pre-compiled .pyc files from source.
6500 (for-each delete-file-recursively
6501 (find-files "." "__pycache__" #:directories? #t))
6502 (for-each delete-file (find-files "." "\\.pyc$"))
6503 #t))))
6504 (arguments
6505 ;; XXX Fails with Python 3.5.
6506 '(#:tests? #f))))
6507
6508(define-public python2-flake8-2.2.4
6509 (package-with-python2 python-flake8-2.2.4))
6510
6511(define-public python-flake8-polyfill
6512 (package
6513 (name "python-flake8-polyfill")
6514 (version "1.0.1")
6515 (source
6516 (origin
6517 (method url-fetch)
6518 (uri (pypi-uri "flake8-polyfill" version))
6519 (sha256
6520 (base32
6521 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
6522 (build-system python-build-system)
6523 (arguments
6524 '(#:phases
6525 (modify-phases %standard-phases
6526 (replace 'check
6527 (lambda _
6528 (setenv "PYTHONPATH"
6529 (string-append (getcwd) "/build/lib:"
6530 (getenv "PYTHONPATH")))
6531 (zero? (system* "py.test" "-v")))))))
6532 (native-inputs
6533 `(("python-flake8" ,python-flake8)
6534 ("python-mock" ,python-mock)
6535 ("python-pycodestyle" ,python-pycodestyle)
6536 ("python-pytest" ,python-pytest)))
6537 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
6538 (synopsis "Polyfill package for Flake8 plugins")
6539 (description
6540 "This package that provides some compatibility helpers for Flake8
6541plugins that intend to support Flake8 2.x and 3.x simultaneously.")
6542 (license license:expat)))
6543
6544(define-public python2-flake8-polyfill
6545 (package-with-python2 python-flake8-polyfill))
6546
6547(define-public python-mistune
6548 (package
6549 (name "python-mistune")
6550 (version "0.7.3")
6551 (source
6552 (origin
6553 (method url-fetch)
6554 (uri (pypi-uri "mistune" version))
6555 (sha256
6556 (base32
6557 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
6558 (build-system python-build-system)
6559 (native-inputs
6560 `(("python-nose" ,python-nose)
6561 ("python-cython" ,python-cython)))
6562 (home-page "https://github.com/lepture/mistune")
6563 (synopsis "Markdown parser in pure Python")
6564 (description "This package provides a fast markdown parser in pure
6565Python.")
6566 (license license:bsd-3)))
6567
6568(define-public python2-mistune
6569 (package-with-python2 python-mistune))
6570
6571(define-public python-markdown
6572 (package
6573 (name "python-markdown")
6574 (version "2.6.8")
6575 (source
6576 (origin
6577 (method url-fetch)
6578 (uri (pypi-uri "Markdown" version))
6579 (sha256
6580 (base32
6581 "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a"))))
6582 (build-system python-build-system)
6583 (arguments
6584 `(#:phases
6585 (modify-phases %standard-phases
6586 (replace 'check
6587 (lambda _
6588 (zero? (system* "python" "run-tests.py")))))))
6589 (native-inputs
6590 `(("python-nose" ,python-nose)
6591 ("python-pyyaml" ,python-pyyaml)))
6592 (home-page "https://pythonhosted.org/Markdown/")
6593 (synopsis "Python implementation of Markdown")
6594 (description
6595 "This package provides a Python implementation of John Gruber's
6596Markdown. The library features international input, various Markdown
6597extensions, and several HTML output formats. A command line wrapper
6598markdown_py is also provided to convert Markdown files to HTML.")
6599 (license license:bsd-3)))
6600
6601(define-public python2-markdown
6602 (package-with-python2 python-markdown))
6603
6604(define-public python-ptyprocess
6605 (package
6606 (name "python-ptyprocess")
6607 (version "0.5.1")
6608 (source
6609 (origin
6610 (method url-fetch)
6611 (uri (string-append
6612 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
6613 version ".tar.gz"))
6614 (sha256
6615 (base32
6616 "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
6617 (build-system python-build-system)
6618 (native-inputs
6619 `(("python-nose" ,python-nose)))
6620 (arguments
6621 `(#:phases
6622 (modify-phases %standard-phases
6623 (replace 'check
6624 (lambda _
6625 (zero? (system* "nosetests")))))))
6626 (home-page "https://github.com/pexpect/ptyprocess")
6627 (synopsis "Run a subprocess in a pseudo terminal")
6628 (description
6629 "This package provides a Python library used to launch a subprocess in a
6630pseudo terminal (pty), and interact with both the process and its pty.")
6631 (license license:isc)))
6632
6633(define-public python2-ptyprocess
6634 (package-with-python2 python-ptyprocess))
6635
6636(define-public python-cram
6637 (package
6638 (name "python-cram")
6639 (version "0.7")
6640 (home-page "https://bitheap.org/cram/")
6641 (source (origin
6642 (method url-fetch)
6643 (uri (list (string-append home-page "cram-"
6644 version ".tar.gz")
6645 (pypi-uri "cram" version)))
6646 (sha256
6647 (base32
6648 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
6649 (arguments
6650 '(#:phases
6651 (modify-phases %standard-phases
6652 (add-after 'unpack 'patch-source
6653 (lambda _
6654 (substitute* (find-files "cram" ".*\\.py$")
6655 ;; Replace default shell path.
6656 (("/bin/sh") (which "sh")))
6657 (substitute* (find-files "tests" ".*\\.t$")
6658 (("md5") "md5sum")
6659 (("/bin/bash") (which "bash"))
6660 (("/bin/sh") (which "sh")))
6661 (substitute* "cram/_test.py"
6662 ;; This hack works around a bug triggered by substituting
6663 ;; the /bin/sh paths. "tests/usage.t" compares the output of
6664 ;; "cram -h", which breaks the output at 80 characters. This
6665 ;; causes the line showing the default shell to break into two
6666 ;; lines, but the test expects a single line...
6667 (("env\\['COLUMNS'\\] = '80'")
6668 "env['COLUMNS'] = '160'"))
6669 #t))
6670 (delete 'check)
6671 (add-after 'install 'check
6672 ;; The test phase uses the built library and executable.
6673 ;; It's easier to run it after install since the build
6674 ;; directory contains version-specific PATH.
6675 (lambda* (#:key inputs outputs #:allow-other-keys)
6676 (add-installed-pythonpath inputs outputs)
6677 (setenv "PATH" (string-append (getenv "PATH") ":"
6678 (assoc-ref outputs "out") "/bin"))
6679 (zero? (system* "make" "test")))))))
6680 (build-system python-build-system)
6681 (native-inputs
6682 `(("python-coverage" ,python-coverage)
6683 ("which" ,which)))
6684 (synopsis "Simple testing framework for command line applications")
6685 (description
6686 "Cram is a functional testing framework for command line applications.
6687Cram tests look like snippets of interactive shell sessions. Cram runs each
6688command and compares the command output in the test with the command’s actual
6689output.")
6690 (license license:gpl2+)))
6691
6692(define-public python2-cram
6693 (package-with-python2 python-cram))
6694
6695(define-public python-terminado
6696 (package
6697 (name "python-terminado")
6698 (version "0.6")
6699 (source
6700 (origin
6701 (method url-fetch)
6702 (uri (pypi-uri "terminado" version))
6703 (sha256
6704 (base32
6705 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
6706 (build-system python-build-system)
6707 (propagated-inputs
6708 `(("python-tornado" ,python-tornado)
6709 ("python-ptyprocess" ,python-ptyprocess)))
6710 (native-inputs
6711 `(("python-nose" ,python-nose)))
6712 (arguments
6713 `(#:phases
6714 (modify-phases %standard-phases
6715 (replace 'check
6716 (lambda _
6717 (zero? (system* "nosetests")))))))
6718 (home-page "https://github.com/takluyver/terminado")
6719 (synopsis "Terminals served to term.js using Tornado websockets")
6720 (description "This package provides a Tornado websocket backend for the
6721term.js Javascript terminal emulator library.")
6722 (license license:bsd-2)
6723 (properties `((python2-variant . ,(delay python2-terminado))))))
6724
6725(define-public python2-terminado
6726 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
6727 (package (inherit terminado)
6728 (propagated-inputs
6729 `(("python2-backport-ssl-match-hostname"
6730 ,python2-backport-ssl-match-hostname)
6731 ,@(package-propagated-inputs terminado))))))
6732
6733(define-public python-straight-plugin
6734 (package
6735 (name "python-straight-plugin")
6736 (version "1.4.1")
6737 (source
6738 (origin
6739 (method url-fetch)
6740 (uri (pypi-uri "straight.plugin" version))
6741 (sha256
6742 (base32
6743 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6744 (build-system python-build-system)
6745 (home-page "https://github.com/ironfroggy/straight.plugin")
6746 (synopsis "Simple namespaced plugin facility")
6747 (description "Straight Plugin provides a type of plugin you can create from
6748almost any existing Python modules, and an easy way for outside developers to
6749add functionality and customization to your projects with their own plugins.")
6750 (license license:expat)))
6751
6752(define-public python2-straight-plugin
6753 (package-with-python2 python-straight-plugin))
6754
6755(define-public python-fonttools
6756 (package
6757 (name "python-fonttools")
6758 (version "2.5")
6759 (source (origin
6760 (method url-fetch)
6761 (uri (string-append
6762 "https://pypi.python.org/packages/source/F/FontTools/"
6763 "fonttools-" version ".tar.gz"))
6764 (sha256
6765 (base32
6766 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
6767 (build-system python-build-system)
6768 (arguments
6769 '(#:test-target "check"
6770 #:phases
6771 (modify-phases %standard-phases
6772 (add-after 'unpack 'patch-setuppy
6773 ;; Remove the undocumented "extra_path" argument, which adds an
6774 ;; intervening directories between site-packages and the package
6775 ;; directory.
6776 (lambda _
6777 (substitute* "setup.py"
6778 (("^[ \t]*extra_path *= *'FontTools',") ""))
6779 #t)))))
6780 (home-page "https://github.com/behdad/fonttools")
6781 (synopsis "Tools to manipulate font files")
6782 (description
6783 "FontTools/TTX is a library to manipulate font files from Python. It
6784supports reading and writing of TrueType/OpenType fonts, reading and writing
6785of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6786also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6787from an XML-based format.")
6788 (license (license:non-copyleft
6789 "file://LICENSE.txt"
6790 "See LICENSE.txt in the distribution."))))
6791
6792(define-public python2-fonttools
6793 (package-with-python2 python-fonttools))
6794
6795(define-public python-ly
6796 (package
6797 (name "python-ly")
6798 (version "0.9.4")
6799 (source
6800 (origin
6801 (method url-fetch)
6802 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6803 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6804 "/python-ly-" version ".tar.gz"))
6805 (sha256
6806 (base32
6807 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
6808 (build-system python-build-system)
6809 (arguments
6810 ;; FIXME: Some tests need network access.
6811 '(#:tests? #f))
6812 (synopsis "Tool and library for manipulating LilyPond files")
6813 (description "This package provides a Python library to parse, manipulate
6814or create documents in LilyPond format. A command line program ly is also
6815provided that can be used to do various manipulations with LilyPond files.")
6816 (home-page "https://pypi.python.org/pypi/python-ly")
6817 (license license:gpl2+)))
6818
6819(define-public python-appdirs
6820 (package
6821 (name "python-appdirs")
6822 (version "1.4.3")
6823 (source
6824 (origin
6825 (method url-fetch)
6826 (uri (pypi-uri "appdirs" version))
6827 (sha256
6828 (base32
6829 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
6830 (build-system python-build-system)
6831 (home-page "https://github.com/ActiveState/appdirs")
6832 (synopsis
6833 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6834 (description
6835 "This module provides a portable way of finding out where user data
6836should be stored on various operating systems.")
6837 (license license:expat)))
6838
6839(define-public python2-appdirs
6840 (package-with-python2 python-appdirs))
6841
6842(define-public python-llfuse
6843 (package
6844 (name "python-llfuse")
6845 (version "1.2")
6846 (source (origin
6847 (method url-fetch)
6848 (uri (string-append
6849 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6850 "llfuse-" version ".tar.bz2"))
6851 (sha256
6852 (base32
6853 "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4"))))
6854 (build-system python-build-system)
6855 (inputs
6856 `(("fuse" ,fuse)
6857 ("attr" ,attr)))
6858 (native-inputs
6859 `(("pkg-config" ,pkg-config)))
6860 (synopsis "Python bindings for FUSE")
6861 (description
6862 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6863 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
6864 (license license:lgpl2.0+)
6865 (properties `((python2-variant . ,(delay python2-llfuse))))))
6866
6867(define-public python2-llfuse
6868 (package (inherit (package-with-python2
6869 (strip-python2-variant python-llfuse)))
6870 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6871
6872;; For attic-0.16
6873(define-public python-llfuse-0.41
6874 (package (inherit python-llfuse)
6875 (version "0.41.1")
6876 (source (origin
6877 (method url-fetch)
6878 (uri (string-append
6879 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6880 "llfuse-" version ".tar.bz2"))
6881 (sha256
6882 (base32
6883 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
6884 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6885 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
6886 (license (list license:expat license:lgpl2.0+))))
6887
6888(define-public python-msgpack
6889 (package
6890 (name "python-msgpack")
6891 (version "0.4.8")
6892 (source (origin
6893 (method url-fetch)
6894 (uri (pypi-uri "msgpack-python" version))
6895 (sha256
6896 (base32
6897 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
6898 (build-system python-build-system)
6899 (synopsis "MessagePack (de)serializer")
6900 (description "MessagePack is a fast, compact binary serialization format,
6901suitable for similar data to JSON. This package provides CPython bindings for
6902reading and writing MessagePack data.")
6903 (home-page "https://pypi.python.org/pypi/msgpack-python/")
6904 (license license:asl2.0)))
6905
6906(define-public python2-msgpack
6907 (package-with-python2 python-msgpack))
6908
6909(define-public python-netaddr
6910 (package
6911 (name "python-netaddr")
6912 (version "0.7.18")
6913 (source
6914 (origin
6915 (method url-fetch)
6916 (uri (string-append
6917 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6918 version
6919 ".tar.gz"))
6920 (sha256
6921 (base32
6922 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6923 (build-system python-build-system)
6924 (arguments `(#:tests? #f)) ;; No tests.
6925 (home-page "https://github.com/drkjam/netaddr/")
6926 (synopsis "Pythonic manipulation of network addresses")
6927 (description
6928 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6929and MAC network addresses.")
6930 (license license:bsd-3)))
6931
6932(define-public python2-netaddr
6933 (package-with-python2 python-netaddr))
6934
6935(define-public python-wrapt
6936 (package
6937 (name "python-wrapt")
6938 (version "1.10.8")
6939 (source
6940 (origin
6941 (method url-fetch)
6942 (uri (pypi-uri "wrapt" version))
6943 (sha256
6944 (base32
6945 "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af"))))
6946 (build-system python-build-system)
6947 (arguments
6948 ;; Tests are not included in the tarball, they are only available in the
6949 ;; git repository.
6950 `(#:tests? #f))
6951 (home-page "https://github.com/GrahamDumpleton/wrapt")
6952 (synopsis "Module for decorators, wrappers and monkey patching")
6953 (description
6954 "The aim of the wrapt module is to provide a transparent object proxy for
6955 Python, which can be used as the basis for the construction of function
6956 wrappers and decorator functions.")
6957 (license license:bsd-2)))
6958
6959(define-public python2-wrapt
6960 (package-with-python2 python-wrapt))
6961
6962(define-public python-iso8601
6963 (package
6964 (name "python-iso8601")
6965 (version "0.1.11")
6966 (source
6967 (origin
6968 (method url-fetch)
6969 (uri (pypi-uri "iso8601" version))
6970 (sha256
6971 (base32
6972 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
6973 (build-system python-build-system)
6974 (native-inputs
6975 `(("python-pytest" ,python-pytest)))
6976 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6977 (synopsis "Module to parse ISO 8601 dates")
6978 (description
6979 "This module parses the most common forms of ISO 8601 date strings (e.g.
6980@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6981 (license license:expat)))
6982
6983(define-public python2-iso8601
6984 (package-with-python2 python-iso8601))
6985
6986(define-public python-monotonic
6987 (package
6988 (name "python-monotonic")
6989 (version "0.3")
6990 (source
6991 (origin
6992 (method url-fetch)
6993 (uri (string-append
6994 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6995 version
6996 ".tar.gz"))
6997 (sha256
6998 (base32
6999 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
7000 (build-system python-build-system)
7001 (home-page "https://github.com/atdt/monotonic")
7002 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
7003 (description
7004 "This module provides a monotonic() function which returns the value (in
7005fractional seconds) of a clock which never goes backwards.")
7006 (license license:asl2.0)))
7007
7008(define-public python2-monotonic
7009 (package-with-python2 python-monotonic))
7010
7011(define-public python-webob
7012 (package
7013 (name "python-webob")
7014 (version "1.5.1")
7015 (source
7016 (origin
7017 (method url-fetch)
7018 (uri (pypi-uri "WebOb" version))
7019 (sha256
7020 (base32
7021 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
7022 (build-system python-build-system)
7023 (native-inputs
7024 `(("python-nose" ,python-nose)))
7025 (home-page "http://webob.org/")
7026 (synopsis "WSGI request and response object")
7027 (description
7028 "WebOb provides wrappers around the WSGI request environment, and an
7029object to help create WSGI responses.")
7030 (license license:expat)))
7031
7032(define-public python2-webob
7033 (package-with-python2 python-webob))
7034
7035(define-public python-xlrd
7036 (package
7037 (name "python-xlrd")
7038 (version "1.0.0")
7039 (source (origin
7040 (method url-fetch)
7041 (uri (pypi-uri "xlrd" version))
7042 (sha256
7043 (base32
7044 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
7045 (build-system python-build-system)
7046 (arguments
7047 `(#:phases
7048 (modify-phases %standard-phases
7049 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
7050 ;; run tests instead for now.
7051 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
7052 (native-inputs `(("python-nose" ,python-nose)))
7053 (home-page "http://www.python-excel.org/")
7054 (synopsis "Library for extracting data from Excel files")
7055 (description "This packages provides a library to extract data from
7056spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
7057@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
7058Unicode-aware. It is not intended as an end-user tool.")
7059 (license license:bsd-3)))
7060
7061(define-public python2-xlrd
7062 (package-with-python2 python-xlrd))
7063
7064(define-public python-prettytable
7065 (package
7066 (name "python-prettytable")
7067 (version "0.7.2")
7068 (source
7069 (origin
7070 (method url-fetch)
7071 (uri (string-append
7072 "https://pypi.python.org/packages/source/P/PrettyTable/"
7073 "prettytable-" version ".tar.bz2"))
7074 (sha256
7075 (base32
7076 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7077 (build-system python-build-system)
7078 (home-page "http://code.google.com/p/prettytable/")
7079 (synopsis "Display tabular data in an ASCII table format")
7080 (description
7081 "A library designed to represent tabular data in visually appealing ASCII
7082tables. PrettyTable allows for selection of which columns are to be printed,
7083independent alignment of columns (left or right justified or centred) and
7084printing of sub-tables by specifying a row range.")
7085 (license license:bsd-3)))
7086
7087(define-public python2-prettytable
7088 (package-with-python2 python-prettytable))
7089
7090(define-public python-tables
7091 (package
7092 (name "python-tables")
7093 (version "3.2.2")
7094 (source
7095 (origin
7096 (method url-fetch)
7097 (uri (pypi-uri "tables" version))
7098 (sha256
7099 (base32
7100 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
7101 (modules '((guix build utils)))
7102 (snippet
7103 '(begin
7104 ;; Remove pre-compiled .pyc files from source.
7105 (for-each delete-file-recursively
7106 (find-files "." "__pycache__" #:directories? #t))
7107 (for-each delete-file (find-files "." "\\.pyc$"))
7108 #t))))
7109 (build-system python-build-system)
7110 (arguments
7111 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7112 ;; or "check", so we must override the build and check phases.
7113 #:phases
7114 (modify-phases %standard-phases
7115 (add-after 'unpack 'use-gcc
7116 (lambda _
7117 (substitute* "setup.py"
7118 (("compiler = new_compiler\\(\\)" line)
7119 (string-append line
7120 "\ncompiler.set_executables(compiler='gcc',"
7121 "compiler_so='gcc',"
7122 "linker_exe='gcc',"
7123 "linker_so='gcc -shared')")))
7124 #t))
7125 (replace 'build
7126 (lambda* (#:key inputs #:allow-other-keys)
7127 (zero? (system* "python" "setup.py" "build"
7128 (string-append "--hdf5="
7129 (assoc-ref inputs "hdf5"))))))
7130 (replace 'check
7131 (lambda* (#:key inputs #:allow-other-keys)
7132 (zero? (system* "python" "setup.py" "check"
7133 (string-append "--hdf5="
7134 (assoc-ref inputs "hdf5")))))))))
7135 (propagated-inputs
7136 `(("python-numexpr" ,python-numexpr)
7137 ("python-numpy" ,python-numpy)))
7138 (native-inputs
7139 `(("python-cython" ,python-cython)
7140 ("pkg-config" ,pkg-config)))
7141 (inputs
7142 `(("hdf5" ,hdf5)
7143 ("bzip2" ,bzip2)
7144 ("zlib" ,zlib)))
7145 (home-page "http://www.pytables.org/")
7146 (synopsis "Hierarchical datasets for Python")
7147 (description "PyTables is a package for managing hierarchical datasets and
7148designed to efficiently cope with extremely large amounts of data.")
7149 (license license:bsd-3)))
7150
7151(define-public python2-tables
7152 (package-with-python2 python-tables))
7153
7154(define-public python-pyasn1
7155 (package
7156 (name "python-pyasn1")
7157 (version "0.1.9")
7158 (source
7159 (origin
7160 (method url-fetch)
7161 (uri (pypi-uri "pyasn1" version))
7162 (sha256
7163 (base32
7164 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7165 (build-system python-build-system)
7166 (home-page "http://pyasn1.sourceforge.net/")
7167 (synopsis "ASN.1 types and codecs")
7168 (description
7169 "This is an implementation of ASN.1 types and codecs in Python. It is
7170suitable for a wide range of protocols based on the ASN.1 specification.")
7171 (license license:bsd-2)))
7172
7173(define-public python2-pyasn1
7174 (package-with-python2 python-pyasn1))
7175
7176(define-public python-pyasn1-modules
7177 (package
7178 (name "python-pyasn1-modules")
7179 (version "0.0.8")
7180 (source
7181 (origin
7182 (method url-fetch)
7183 (uri (pypi-uri "pyasn1-modules" version))
7184 (sha256
7185 (base32
7186 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
7187 (build-system python-build-system)
7188 (propagated-inputs
7189 `(("python-pyasn1" ,python-pyasn1)))
7190 (home-page "https://sourceforge.net/projects/pyasn1/")
7191 (synopsis "ASN.1 codec implementations")
7192 (description
7193 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7194implementations of ASN.1-based codecs and protocols.")
7195 (license license:bsd-3)))
7196
7197(define-public python2-pyasn1-modules
7198 (package-with-python2 python-pyasn1-modules))
7199
7200(define-public python-ipaddress
7201 (package
7202 (name "python-ipaddress")
7203 (version "1.0.18")
7204 (source (origin
7205 (method url-fetch)
7206 (uri (pypi-uri "ipaddress" version))
7207 (sha256
7208 (base32
7209 "1q8klj9d84cmxgz66073x1j35cplr3r77vx1znhxiwl5w74391ax"))))
7210 (build-system python-build-system)
7211 (home-page "https://github.com/phihag/ipaddress")
7212 (synopsis "IP address manipulation library")
7213 (description
7214 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7215 in Python. This library is used to create, poke at, and manipulate IPv4 and
7216 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7217 module to older versions of Python.")
7218 (license license:psfl)))
7219
7220(define-public python2-ipaddress
7221 (package-with-python2 python-ipaddress))
7222
7223(define-public python2-ipaddr
7224 (package
7225 (name "python2-ipaddr")
7226 (version "2.1.11")
7227 (source
7228 (origin
7229 (method url-fetch)
7230 (uri (pypi-uri "ipaddr" version))
7231 (sha256
7232 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7233 (build-system python-build-system)
7234 (arguments
7235 `(#:python ,python-2 ;version 2 only
7236 #:phases
7237 (modify-phases %standard-phases
7238 (replace 'check
7239 (lambda* _
7240 (zero? (system* "python" "ipaddr_test.py")))))))
7241 (home-page "https://github.com/google/ipaddr-py")
7242 (synopsis "IP address manipulation library")
7243 (description
7244 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7245IPv6 addresses and networks.
7246
7247For new implementations you may prefer to use the standard module
7248@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7249versions of Python.")
7250 (license license:asl2.0)))
7251
7252(define-public python-idna
7253 (package
7254 (name "python-idna")
7255 (version "2.0")
7256 (source
7257 (origin
7258 (method url-fetch)
7259 (uri (string-append "https://pypi.python.org/packages/source/i/"
7260 "idna/idna-" version ".tar.gz"))
7261 (sha256
7262 (base32
7263 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
7264 (build-system python-build-system)
7265 (home-page "https://github.com/kjd/idna")
7266 (synopsis "Internationalized domain names in applications")
7267 (description
7268 "This is a library to support the Internationalised Domain Names in
7269Applications (IDNA) protocol as specified in RFC 5891. This version of the
7270protocol is often referred to as “IDNA2008” and can produce different results
7271from the earlier standard from 2003. The library is also intended to act as a
7272suitable drop-in replacement for the “encodings.idna” module that comes with
7273the Python standard library but currently only supports the older 2003
7274specification.")
7275 (license license:bsd-4)))
7276
7277(define-public python2-idna
7278 (package-with-python2 python-idna))
7279
7280(define-public python-pretend
7281 (package
7282 (name "python-pretend")
7283 (version "1.0.8")
7284 (source
7285 (origin
7286 (method url-fetch)
7287 (uri (string-append "https://pypi.python.org/packages/source/p/"
7288 "pretend/pretend-" version ".tar.gz"))
7289 (sha256
7290 (base32
7291 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
7292 (build-system python-build-system)
7293 (home-page "https://github.com/alex/pretend")
7294 (synopsis "Library for stubbing in Python")
7295 (description
7296 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7297technique for writing tests. You may hear the term mixed up with mocks,
7298fakes, or doubles. Basically, a stub is an object that returns pre-canned
7299responses, rather than doing any computation.")
7300 (license license:bsd-3)))
7301
7302(define-public python2-pretend
7303 (package-with-python2 python-pretend))
7304
7305(define-public python-cryptography-vectors
7306 (package
7307 (name "python-cryptography-vectors")
7308 (version "1.7.1")
7309 (source
7310 (origin
7311 (method url-fetch)
7312 (uri (pypi-uri "cryptography_vectors" version))
7313 (sha256
7314 (base32
7315 "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
7316 (build-system python-build-system)
7317 (home-page "https://github.com/pyca/cryptography")
7318 (synopsis "Test vectors for the cryptography package")
7319 (description
7320 "This package contains test vectors for the cryptography package.")
7321 ;; Distributed under either BSD-3 or ASL2.0
7322 (license (list license:bsd-3 license:asl2.0))))
7323
7324(define-public python2-cryptography-vectors
7325 (package-with-python2 python-cryptography-vectors))
7326
7327(define-public python-cryptography
7328 (package
7329 (name "python-cryptography")
7330 (version "1.7.1")
7331 (source
7332 (origin
7333 (method url-fetch)
7334 (uri (pypi-uri "cryptography" version))
7335 (sha256
7336 (base32
7337 "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
7338 (build-system python-build-system)
7339 (inputs
7340 `(("openssl" ,openssl)))
7341 (propagated-inputs
7342 `(("python-cffi" ,python-cffi)
7343 ("python-six" ,python-six)
7344 ("python-pyasn1" ,python-pyasn1)
7345 ("python-idna" ,python-idna)
7346 ("python-iso8601" ,python-iso8601)))
7347 (native-inputs
7348 `(("python-cryptography-vectors" ,python-cryptography-vectors)
7349 ("python-hypothesis" ,python-hypothesis)
7350 ("python-pretend" ,python-pretend)
7351 ("python-pyasn1" ,python-pyasn1)
7352 ("python-pyasn1-modules" ,python-pyasn1-modules)
7353 ("python-pytz" ,python-pytz)
7354 ("python-pytest" ,python-pytest-3.0)))
7355 (home-page "https://github.com/pyca/cryptography")
7356 (synopsis "Cryptographic recipes and primitives for Python")
7357 (description
7358 "cryptography is a package which provides cryptographic recipes and
7359primitives to Python developers. It aims to be the “cryptographic standard
7360library” for Python. The package includes both high level recipes, and low
7361level interfaces to common cryptographic algorithms such as symmetric ciphers,
7362message digests and key derivation functions.")
7363 ;; Distributed under either BSD-3 or ASL2.0
7364 (license (list license:bsd-3 license:asl2.0))
7365 (properties `((python2-variant . ,(delay python2-cryptography))))))
7366
7367(define-public python2-cryptography
7368 (let ((crypto (package-with-python2
7369 (strip-python2-variant python-cryptography))))
7370 (package (inherit crypto)
7371 (propagated-inputs
7372 `(("python2-ipaddress" ,python2-ipaddress)
7373 ("python2-backport-ssl-match-hostname"
7374 ,python2-backport-ssl-match-hostname)
7375 ("python2-enum34" ,python2-enum34)
7376 ,@(package-propagated-inputs crypto))))))
7377
7378(define-public python-pyopenssl
7379 (package
7380 (name "python-pyopenssl")
7381 (version "17.0.0")
7382 (source
7383 (origin
7384 (method url-fetch)
7385 (uri (pypi-uri "pyOpenSSL" version))
7386 (sha256
7387 (base32
7388 "1pdg1gpmkzj8yasg6cmkhcivxcdp4c12nif88y4qvsxq5ffzxas8"))
7389 (patches
7390 (search-patches "python-pyopenssl-skip-network-test.patch"))))
7391 (build-system python-build-system)
7392 (arguments
7393 '(#:phases
7394 (modify-phases %standard-phases
7395 (delete 'check)
7396 (add-after 'install 'check
7397 (lambda* (#:key inputs outputs #:allow-other-keys)
7398 (add-installed-pythonpath inputs outputs)
7399 (zero? (system* "py.test" "-v")))))))
7400 (propagated-inputs
7401 `(("python-cryptography" ,python-cryptography)
7402 ("python-six" ,python-six)))
7403 (inputs
7404 `(("openssl" ,openssl)))
7405 (native-inputs
7406 `(("python-pytest" ,python-pytest-3.0)))
7407 (home-page "https://github.com/pyca/pyopenssl")
7408 (synopsis "Python wrapper module around the OpenSSL library")
7409 (description
7410 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
7411library.")
7412 (license license:asl2.0)))
7413
7414(define-public python2-pyopenssl
7415 (package-with-python2 python-pyopenssl))
7416
7417(define-public python-pip
7418 (package
7419 (name "python-pip")
7420 (version "9.0.1")
7421 (source
7422 (origin
7423 (method url-fetch)
7424 (uri (pypi-uri "pip" version))
7425 (sha256
7426 (base32
7427 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
7428 (build-system python-build-system)
7429 (arguments
7430 '(#:tests? #f)) ; there are no tests in the pypi archive.
7431 (home-page "https://pip.pypa.io/")
7432 (synopsis "Package manager for Python software")
7433 (description
7434 "Pip is a package manager for Python software, that finds packages on the
7435Python Package Index (PyPI).")
7436 (license license:expat)))
7437
7438(define-public python2-pip
7439 (package-with-python2 python-pip))
7440
7441(define-public python-tlsh
7442 (package
7443 (name "python-tlsh")
7444 (version "3.4.4")
7445 (home-page "https://github.com/trendmicro/tlsh")
7446 (source (origin
7447 (method url-fetch)
7448 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
7449 version ".tar.gz"))
7450 (sha256
7451 (base32
7452 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
7453 (file-name (string-append name "-" version ".tar.gz"))))
7454 (build-system cmake-build-system)
7455 (arguments
7456 '(#:out-of-source? #f
7457 #:phases (modify-phases %standard-phases
7458 (replace
7459 'install
7460 (lambda* (#:key outputs #:allow-other-keys)
7461 ;; Build and install the Python bindings. The underlying
7462 ;; C++ library is apparently not meant to be installed.
7463 (let ((out (assoc-ref outputs "out")))
7464 (with-directory-excursion "py_ext"
7465 (and (system* "python" "setup.py" "build")
7466 (system* "python" "setup.py" "install"
7467 (string-append "--prefix=" out))))))))))
7468 (inputs `(("python" ,python-wrapper))) ;for the bindings
7469 (synopsis "Fuzzy matching library for Python")
7470 (description
7471 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
7472Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
7473value which can be used for similarity comparisons. Similar objects have
7474similar hash values, which allows for the detection of similar objects by
7475comparing their hash values. The byte stream should have a sufficient amount
7476of complexity; for example, a byte stream of identical bytes will not generate
7477a hash value.")
7478 (license license:asl2.0)))
7479
7480(define-public python2-tlsh
7481 (package
7482 (inherit python-tlsh)
7483 (name "python2-tlsh")
7484 (inputs `(("python" ,python-2)))))
7485
7486(define-public python-termcolor
7487 (package
7488 (name "python-termcolor")
7489 (version "1.1.0")
7490 (source
7491 (origin
7492 (method url-fetch)
7493 (uri (pypi-uri "termcolor" version))
7494 (sha256
7495 (base32
7496 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
7497 (build-system python-build-system)
7498 (arguments
7499 ;; There are no tests.
7500 `(#:tests? #f))
7501 (home-page "http://pypi.python.org/pypi/termcolor")
7502 (synopsis "ANSII Color formatting for terminal output")
7503 (description
7504 "This package provides ANSII Color formatting for output in terminals.")
7505 (license license:expat)))
7506
7507(define-public python2-termcolor
7508 (package-with-python2 python-termcolor))
7509
7510(define-public python-libarchive-c
7511 (package
7512 (name "python-libarchive-c")
7513 (version "2.2")
7514 (source (origin
7515 (method url-fetch)
7516 (uri (pypi-uri "libarchive-c" version))
7517 (sha256
7518 (base32
7519 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
7520 (build-system python-build-system)
7521 (arguments
7522 '(#:phases (modify-phases %standard-phases
7523 (add-before
7524 'build 'reference-libarchive
7525 (lambda* (#:key inputs #:allow-other-keys)
7526 ;; Retain the absolute file name of libarchive.so.
7527 (let ((libarchive (assoc-ref inputs "libarchive")))
7528 (substitute* "libarchive/ffi.py"
7529 (("find_library\\('archive'\\)")
7530 (string-append "'" libarchive
7531 "/lib/libarchive.so'")))))))))
7532 (inputs
7533 `(("libarchive" ,libarchive)))
7534 (home-page "https://github.com/Changaco/python-libarchive-c")
7535 (synopsis "Python interface to libarchive")
7536 (description
7537 "This package provides Python bindings to libarchive, a C library to
7538access possibly compressed archives in many different formats. It uses
7539Python's @code{ctypes} foreign function interface (FFI).")
7540 (license license:lgpl2.0+)))
7541
7542(define-public python2-libarchive-c
7543 (package-with-python2 python-libarchive-c))
7544
7545(define-public python-file
7546 (package
7547 (inherit file)
7548 (name "python-file")
7549 (source (origin
7550 (inherit (package-source file))
7551 ;; This patch should not be applied to python2-file.
7552 (patches (search-patches "python-file-double-encoding-bug.patch"))))
7553 (build-system python-build-system)
7554 (arguments
7555 '(#:tests? #f ;no tests
7556 #:configure-flags '("--single-version-externally-managed" "--root=/")
7557 #:phases (modify-phases %standard-phases
7558 (add-before 'build 'change-directory
7559 (lambda _
7560 (chdir "python")
7561 #t))
7562 (add-before 'build 'set-library-file-name
7563 (lambda* (#:key inputs #:allow-other-keys)
7564 (let ((file (assoc-ref inputs "file")))
7565 (substitute* "magic.py"
7566 (("find_library\\('magic'\\)")
7567 (string-append "'" file "/lib/libmagic.so'")))
7568 #t))))))
7569 (inputs `(("file" ,file)))
7570 (self-native-input? #f)
7571 (synopsis "Python bindings to the libmagic file type guesser. Note that
7572this module and the python-magic module both provide a \"magic.py\" file;
7573these two modules, which are different and were developed separately, both
7574serve the same purpose: provide Python bindings for libmagic.")))
7575
7576(define-public python2-file
7577 (package-with-python2 python-file))
7578
7579(define-public python-debian
7580 (package
7581 (name "python-debian")
7582 (version "0.1.28")
7583 (source
7584 (origin
7585 (method url-fetch)
7586 (uri (pypi-uri name version))
7587 (sha256
7588 (base32
7589 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
7590 (build-system python-build-system)
7591 (propagated-inputs
7592 `(("python-six" ,python-six)))
7593 (home-page "http://packages.debian.org/sid/python-debian")
7594 (synopsis "Debian package related modules")
7595 (description
7596 ;; XXX: Use @enumerate instead of @itemize to work around
7597 ;; <http://bugs.gnu.org/21772>.
7598 "This package provides Python modules that abstract many formats of
7599Debian-related files, such as:
7600
7601@enumerate
7602@item Debtags information;
7603@item @file{debian/changelog} files;
7604@item packages files, pdiffs;
7605@item control files of single or multiple RFC822-style paragraphs---e.g.
7606 @file{debian/control}, @file{.changes}, @file{.dsc};
7607@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
7608 contained files and meta-information.
7609@end enumerate\n")
7610
7611 ;; Modules are either GPLv2+ or GPLv3+.
7612 (license license:gpl3+)))
7613
7614(define-public python2-debian
7615 (package-with-python2 python-debian))
7616
7617(define-public python-nbformat
7618 (package
7619 (name "python-nbformat")
7620 (version "4.1.0")
7621 (source
7622 (origin
7623 (method url-fetch)
7624 (uri (pypi-uri "nbformat" version))
7625 (sha256
7626 (base32
7627 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
7628 (build-system python-build-system)
7629 (arguments `(#:tests? #f)) ; no test target
7630 (propagated-inputs
7631 `(("python-ipython-genutils" ,python-ipython-genutils)
7632 ("python-jsonschema" ,python-jsonschema)
7633 ("python-jupyter-core" ,python-jupyter-core)
7634 ("python-traitlets" ,python-traitlets)))
7635 (home-page "http://jupyter.org")
7636 (synopsis "Jupyter Notebook format")
7637 (description "This package provides the reference implementation of the
7638Jupyter Notebook format and Python APIs for working with notebooks.")
7639 (license license:bsd-3)))
7640
7641(define-public python2-nbformat
7642 (package-with-python2 python-nbformat))
7643
7644(define-public python-bleach
7645 (package
7646 (name "python-bleach")
7647 (version "1.4.3")
7648 (source
7649 (origin
7650 (method url-fetch)
7651 (uri (pypi-uri "bleach" version))
7652 (sha256
7653 (base32
7654 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7655 (build-system python-build-system)
7656 (propagated-inputs
7657 `(("python-html5lib" ,python-html5lib-0.9)
7658 ("python-six" ,python-six)))
7659 (native-inputs
7660 `(("python-nose" ,python-nose)))
7661 (home-page "https://github.com/jsocol/bleach")
7662 (synopsis "Whitelist-based HTML-sanitizing tool")
7663 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7664 (license license:asl2.0)))
7665
7666(define-public python2-bleach
7667 (package-with-python2 python-bleach))
7668
7669(define-public python-entrypoints
7670 (package
7671 (name "python-entrypoints")
7672 (version "0.2.2")
7673 (source
7674 (origin
7675 (method url-fetch)
7676 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
7677 version ".tar.gz"))
7678 (file-name (string-append name "-" version ".tar.gz"))
7679 (sha256
7680 (base32
7681 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
7682 (build-system python-build-system)
7683 ;; The package does not come with a setup.py file, so we have to generate
7684 ;; one ourselves.
7685 (arguments
7686 `(#:tests? #f
7687 #:phases
7688 (modify-phases %standard-phases
7689 (add-after 'unpack 'create-setup.py
7690 (lambda _
7691 (call-with-output-file "setup.py"
7692 (lambda (port)
7693 (format port "\
7694from setuptools import setup
7695setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7696" ,version))))))))
7697 (home-page "https://github.com/takluyver/entrypoints")
7698 (synopsis "Discover and load entry points from installed Python packages")
7699 (description "Entry points are a way for Python packages to advertise
7700objects with some common interface. The most common examples are
7701@code{console_scripts} entry points, which define shell commands by
7702identifying a Python function to run. The @code{entrypoints} module contains
7703functions to find and load entry points.")
7704 (license license:expat)))
7705
7706(define-public python2-entrypoints
7707 (package-with-python2 python-entrypoints))
7708
7709(define-public python-nbconvert
7710 (package
7711 (name "python-nbconvert")
7712 (version "5.0.0b1")
7713 (source
7714 (origin
7715 (method url-fetch)
7716 (uri (pypi-uri "nbconvert" version))
7717 (sha256
7718 (base32
7719 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7720 (build-system python-build-system)
7721 (arguments
7722 `(;; The "bdist_egg" target is disabled by default, causing the installation
7723 ;; to fail.
7724 #:configure-flags (list "bdist_egg")
7725 ;; FIXME: 5 failures, 40 errors.
7726 #:tests? #f))
7727 ;; #:phases
7728 ;; (modify-phases %standard-phases
7729 ;; (replace 'check
7730 ;; (lambda _
7731 ;; (zero? (system* "py.test" "-v")))))
7732 (native-inputs
7733 `(("python-pytest" ,python-pytest)))
7734 (propagated-inputs
7735 `(("python-bleach" ,python-bleach)
7736 ("python-entrypoints" ,python-entrypoints)
7737 ("python-jinja2" ,python-jinja2)
7738 ("python-jupyter-core" ,python-jupyter-core)
7739 ("python-mistune" ,python-mistune)
7740 ("python-nbformat" ,python-nbformat)
7741 ("python-pygments" ,python-pygments)
7742 ("python-traitlets" ,python-traitlets)))
7743 (home-page "http://jupyter.org")
7744 (synopsis "Converting Jupyter Notebooks")
7745 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7746notebooks to various other formats via Jinja templates. It allows you to
7747convert an @code{.ipynb} notebook file into various static formats including:
7748
7749@enumerate
7750@item HTML
7751@item LaTeX
7752@item PDF
7753@item Reveal JS
7754@item Markdown (md)
7755@item ReStructured Text (rst)
7756@item executable script
7757@end enumerate\n")
7758 (license license:bsd-3)))
7759
7760(define-public python2-nbconvert
7761 (package-with-python2 python-nbconvert))
7762
7763(define-public python-notebook
7764 (package
7765 (name "python-notebook")
7766 (version "4.2.3")
7767 (source (origin
7768 (method url-fetch)
7769 (uri (pypi-uri "notebook" version))
7770 (sha256
7771 (base32
7772 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7773 (build-system python-build-system)
7774 (arguments
7775 `(#:phases
7776 (modify-phases %standard-phases
7777 (replace 'check
7778 (lambda _
7779 ;; HOME must be set for tests
7780 (setenv "HOME" "/tmp")
7781 (zero? (system* "nosetests")))))))
7782 (propagated-inputs
7783 `(("python-jupyter-core" ,python-jupyter-core)
7784 ("python-nbformat" ,python-nbformat)
7785 ("python-nbconvert" ,python-nbconvert)
7786 ("python-ipython" ,python-ipython)))
7787 (native-inputs
7788 `(("python-nose" ,python-nose)
7789 ("python-sphinx" ,python-sphinx)
7790 ("python-requests" ,python-requests)))
7791 (home-page "http://jupyter.org/")
7792 (synopsis "Web-based notebook environment for interactive computing")
7793 (description
7794 "The Jupyter HTML notebook is a web-based notebook environment for
7795interactive computing.")
7796 (properties `((python2-variant . ,(delay python2-notebook))))
7797 (license license:bsd-3)))
7798
7799(define-public python2-notebook
7800 (let ((base (package-with-python2
7801 (strip-python2-variant python-notebook))))
7802 (package (inherit base)
7803 (native-inputs
7804 `(("python2-mock" ,python2-mock)
7805 ,@(package-native-inputs base)))
7806 (arguments
7807 (substitute-keyword-arguments (package-arguments base)
7808 ((#:phases phases)
7809 `(modify-phases ,phases
7810 (add-before 'check 'disable-test-case
7811 ;; The test requires network access to localhost. Curiously it
7812 ;; fails with Python 2 only. Simply make the test-case return
7813 ;; immediately.
7814 (lambda _
7815 (substitute*
7816 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7817 (("formats = self.nbconvert_api") "return #")))))))))))
7818
7819(define-public python-widgetsnbextension
7820 (package
7821 (name "python-widgetsnbextension")
7822 (version "1.2.6")
7823 (source
7824 (origin
7825 (method url-fetch)
7826 (uri (pypi-uri "widgetsnbextension" version))
7827 (sha256
7828 (base32
7829 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7830 (build-system python-build-system)
7831 (propagated-inputs
7832 `(("python-notebook" ,python-notebook)))
7833 (native-inputs
7834 `(("python-certifi" ,python-certifi)
7835 ("python-nose" ,python-nose)))
7836 (home-page "http://ipython.org")
7837 (synopsis "IPython HTML widgets for Jupyter")
7838 (description "This package provides interactive HTML widgets for Jupyter
7839notebooks.")
7840 (license license:bsd-3)))
7841
7842(define-public python2-widgetsnbextension
7843 (package-with-python2 python-widgetsnbextension))
7844
7845(define-public python-ipywidgets
7846 (package
7847 (name "python-ipywidgets")
7848 (version "5.2.2")
7849 (source
7850 (origin
7851 (method url-fetch)
7852 (uri (pypi-uri "ipywidgets" version))
7853 (sha256
7854 (base32
7855 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7856 (build-system python-build-system)
7857 ;; FIXME: it's not clear how to run the tests.
7858 (arguments `(#:tests? #f))
7859 (propagated-inputs
7860 `(("python-ipykernel" ,python-ipykernel)
7861 ("python-ipython" ,python-ipython)
7862 ("python-traitlets" ,python-traitlets)
7863 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7864 (home-page "http://ipython.org")
7865 (synopsis "IPython HTML widgets for Jupyter")
7866 (description "Ipywidgets are interactive HTML widgets for Jupyter
7867notebooks and the IPython kernel. Notebooks come alive when interactive
7868widgets are used. Users gain control of their data and can visualize changes
7869in the data.")
7870 (license license:bsd-3)))
7871
7872(define-public python2-ipywidgets
7873 (package-with-python2 python-ipywidgets))
7874
7875(define-public python-jupyter-console
7876 (package
7877 (name "python-jupyter-console")
7878 (version "5.0.0")
7879 (source
7880 (origin
7881 (method url-fetch)
7882 (uri (pypi-uri "jupyter_console" version))
7883 (sha256
7884 (base32
7885 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7886 (build-system python-build-system)
7887 ;; FIXME: it's not clear how to run the tests.
7888 (arguments `(#:tests? #f))
7889 (propagated-inputs
7890 `(("python-ipykernel" ,python-ipykernel)
7891 ("python-ipython" ,python-ipython)
7892 ("python-jupyter-client" ,python-jupyter-client)
7893 ("python-prompt-toolkit" ,python-prompt-toolkit)
7894 ("python-pygments" ,python-pygments)))
7895 (home-page "https://jupyter.org")
7896 (synopsis "Jupyter terminal console")
7897 (description "This package provides a terminal-based console frontend for
7898Jupyter kernels. It also allows for console-based interaction with non-Python
7899Jupyter kernels such as IJulia and IRKernel.")
7900 (license license:bsd-3)))
7901
7902(define-public python2-jupyter-console
7903 (package-with-python2 python-jupyter-console))
7904
7905(define-public jupyter
7906 (package
7907 (name "jupyter")
7908 (version "1.0.0")
7909 (source
7910 (origin
7911 (method url-fetch)
7912 (uri (pypi-uri "jupyter" version))
7913 (sha256
7914 (base32
7915 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7916 (build-system python-build-system)
7917 ;; FIXME: it's not clear how to run the tests.
7918 (arguments `(#:tests? #f))
7919 (propagated-inputs
7920 `(("python-ipykernel" ,python-ipykernel)
7921 ("python-ipywidgets" ,python-ipywidgets)
7922 ("python-jupyter-console" ,python-jupyter-console)
7923 ("python-nbconvert" ,python-nbconvert)
7924 ("python-notebook" ,python-notebook)))
7925 (home-page "http://jupyter.org")
7926 (synopsis "Web application for interactive documents")
7927 (description
7928 "The Jupyter Notebook is a web application that allows you to create and
7929share documents that contain live code, equations, visualizations and
7930explanatory text. Uses include: data cleaning and transformation, numerical
7931simulation, statistical modeling, machine learning and much more.")
7932 (license license:bsd-3)))
7933
7934(define-public python-chardet
7935 (package
7936 (name "python-chardet")
7937 (version "2.3.0")
7938 (source
7939 (origin
7940 (method url-fetch)
7941 (uri (string-append
7942 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7943 version
7944 ".tar.gz"))
7945 (sha256
7946 (base32
7947 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7948 (build-system python-build-system)
7949 (home-page "https://github.com/chardet/chardet")
7950 (synopsis "Universal encoding detector for Python 2 and 3")
7951 (description
7952 "This package provides @code{chardet}, a Python module that can
7953automatically detect a wide range of file encodings.")
7954 (license license:lgpl2.1+)))
7955
7956(define-public python2-chardet
7957 (package-with-python2 python-chardet))
7958
7959(define-public python-docopt
7960 (package
7961 (name "python-docopt")
7962 (version "0.6.2")
7963 (source
7964 (origin
7965 (method url-fetch)
7966 ;; The release on PyPI does not include tests.
7967 (uri (string-append
7968 "https://github.com/docopt/docopt/archive/"
7969 version ".tar.gz"))
7970 (file-name (string-append name "-" version ".tar.gz"))
7971 (sha256
7972 (base32
7973 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7974 (build-system python-build-system)
7975 (native-inputs
7976 `(("python-pytest" ,python-pytest)))
7977 (arguments
7978 `(#:phases (alist-replace
7979 'check
7980 (lambda _ (zero? (system* "py.test")))
7981 %standard-phases)))
7982 (home-page "http://docopt.org")
7983 (synopsis "Command-line interface description language for Python")
7984 (description "This library allows the user to define a command-line
7985interface from a program's help message rather than specifying it
7986programatically with command-line parsers like @code{getopt} and
7987@code{argparse}.")
7988 (license license:expat)))
7989
7990(define-public python2-docopt
7991 (package-with-python2 python-docopt))
7992
7993(define-public python-zope-event
7994 (package
7995 (name "python-zope-event")
7996 (version "4.1.0")
7997 (source
7998 (origin
7999 (method url-fetch)
8000 (uri (string-append "https://pypi.python.org/packages/source/z"
8001 "/zope.event/zope.event-" version ".tar.gz"))
8002 (sha256
8003 (base32
8004 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
8005 (build-system python-build-system)
8006 (home-page "http://pypi.python.org/pypi/zope.event")
8007 (synopsis "Event publishing system for Python")
8008 (description "Zope.event provides an event publishing API, intended for
8009use by applications which are unaware of any subscribers to their events. It
8010is a simple event-dispatching system on which more sophisticated event
8011dispatching systems can be built.")
8012 (license license:zpl2.1)))
8013
8014(define-public python2-zope-event
8015 (package-with-python2 python-zope-event))
8016
8017(define-public python-zope-interface
8018 (package
8019 (name "python-zope-interface")
8020 (version "4.1.3")
8021 (source
8022 (origin
8023 (method url-fetch)
8024 (uri (string-append "https://pypi.python.org/packages/source/z"
8025 "/zope.interface/zope.interface-" version ".tar.gz"))
8026 (sha256
8027 (base32
8028 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
8029 (build-system python-build-system)
8030 (native-inputs
8031 `(("python-zope-event" ,python-zope-event)))
8032 (home-page "https://github.com/zopefoundation/zope.interface")
8033 (synopsis "Python implementation of the \"design by contract\"
8034methodology")
8035 (description "Zope.interface provides an implementation of \"object
8036interfaces\" for Python. Interfaces are a mechanism for labeling objects as
8037conforming to a given API or contract.")
8038 (license license:zpl2.1)))
8039
8040(define-public python2-zope-interface
8041 (package-with-python2 python-zope-interface))
8042
8043(define-public python-zope-exceptions
8044 (package
8045 (name "python-zope-exceptions")
8046 (version "4.0.8")
8047 (source
8048 (origin
8049 (method url-fetch)
8050 (uri (string-append "https://pypi.python.org/packages/source/z"
8051 "/zope.exceptions/zope.exceptions-"
8052 version ".tar.gz"))
8053 (sha256
8054 (base32
8055 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
8056 (build-system python-build-system)
8057 (arguments
8058 '(#:tests? #f)) ; circular dependency with zope.testrunner
8059 (propagated-inputs
8060 `(("python-zope-interface" ,python-zope-interface)))
8061 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
8062 (synopsis "Zope exceptions")
8063 (description "Zope.exceptions provides general-purpose exception types
8064that have uses outside of the Zope framework.")
8065 (license license:zpl2.1)))
8066
8067(define-public python2-zope-exceptions
8068 (package-with-python2 python-zope-exceptions))
8069
8070(define-public python-zope-testing
8071 (package
8072 (name "python-zope-testing")
8073 (version "4.5.0")
8074 (source
8075 (origin
8076 (method url-fetch)
8077 (uri (string-append "https://pypi.python.org/packages/source/z"
8078 "/zope.testing/zope.testing-" version ".tar.gz"))
8079 (sha256
8080 (base32
8081 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
8082 (modules '((guix build utils)))
8083 (snippet
8084 '(begin
8085 ;; Remove pre-compiled .pyc files backup files from source.
8086 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
8087 #t))))
8088 (build-system python-build-system)
8089 (native-inputs
8090 `(("python-zope-exceptions" ,python-zope-exceptions)))
8091 (propagated-inputs
8092 `(("python-zope-interface" ,python-zope-interface)))
8093 (home-page "http://pypi.python.org/pypi/zope.testing")
8094 (synopsis "Zope testing helpers")
8095 (description "Zope.testing provides a number of testing utilities for HTML
8096forms, HTTP servers, regular expressions, and more.")
8097 (license license:zpl2.1)))
8098
8099(define-public python2-zope-testing
8100 (package-with-python2 python-zope-testing))
8101
8102(define-public python-zope-testrunner
8103 (package
8104 (name "python-zope-testrunner")
8105 (version "4.4.9")
8106 (source
8107 (origin
8108 (method url-fetch)
8109 (uri (string-append "https://pypi.python.org/packages/source/z"
8110 "/zope.testrunner/zope.testrunner-"
8111 version ".zip"))
8112 (sha256
8113 (base32
8114 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
8115 (build-system python-build-system)
8116 (arguments
8117 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8118 (native-inputs
8119 `(("python-six" ,python-six)
8120 ;("python-zope-interface" ,python-zope-interface)
8121 ("python-zope-exceptions" ,python-zope-exceptions)
8122 ("python-zope-testing" ,python-zope-testing)
8123 ("unzip" ,unzip)))
8124 (propagated-inputs
8125 `(("python-zope-interface" ,python-zope-interface)))
8126 (home-page "http://pypi.python.org/pypi/zope.testrunner")
8127 (synopsis "Zope testrunner script")
8128 (description "Zope.testrunner provides a script for running Python
8129tests.")
8130 (license license:zpl2.1)))
8131
8132(define-public python2-zope-testrunner
8133 (let ((base (package-with-python2 python-zope-testrunner)))
8134 (package
8135 (inherit base)
8136 (native-inputs
8137 (append (package-native-inputs base)
8138 `(("python2-subunit" ,python2-subunit)
8139 ("python2-mimeparse" ,python2-mimeparse)))))))
8140
8141(define-public python-zope-i18nmessageid
8142 (package
8143 (name "python-zope-i18nmessageid")
8144 (version "4.0.3")
8145 (source
8146 (origin
8147 (method url-fetch)
8148 (uri (string-append
8149 "https://pypi.python.org/packages/source/z"
8150 "/zope.i18nmessageid/zope.i18nmessageid-"
8151 version ".tar.gz"))
8152 (sha256
8153 (base32
8154 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
8155 (build-system python-build-system)
8156 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
8157 (synopsis "Message identifiers for internationalization")
8158 (description "Zope.i18nmessageid provides facilities for declaring
8159internationalized messages within program source text.")
8160 (license license:zpl2.1)))
8161
8162(define-public python2-zope-i18nmessageid
8163 (package-with-python2 python-zope-i18nmessageid))
8164
8165(define-public python-zope-schema
8166 (package
8167 (name "python-zope-schema")
8168 (version "4.4.2")
8169 (source
8170 (origin
8171 (method url-fetch)
8172 (uri (string-append "https://pypi.python.org/packages/source/z"
8173 "/zope.schema/zope.schema-" version ".tar.gz"))
8174 (sha256
8175 (base32
8176 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
8177 (build-system python-build-system)
8178 (arguments
8179 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
8180 (propagated-inputs
8181 `(("python-zope-event" ,python-zope-event)
8182 ("python-zope-exceptions", python-zope-exceptions)
8183 ("python-zope-interface" ,python-zope-interface)))
8184 (native-inputs
8185 `(("python-zope-testing" ,python-zope-testing)
8186 ("python-coverage" ,python-coverage)
8187 ("python-nose" ,python-nose)))
8188 (home-page "http://pypi.python.org/pypi/zope.schema")
8189 (synopsis "Zope data schemas")
8190 (description "Zope.scheme provides extensions to zope.interface for
8191defining data schemas.")
8192 (license license:zpl2.1)))
8193
8194(define-public python2-zope-schema
8195 (package-with-python2 python-zope-schema))
8196
8197(define-public python-zope-configuration
8198 (package
8199 (name "python-zope-configuration")
8200 (version "4.0.3")
8201 (source (origin
8202 (method url-fetch)
8203 (uri (string-append "https://pypi.python.org/packages/source/z"
8204 "/zope.configuration/zope.configuration-"
8205 version ".tar.gz"))
8206 (sha256
8207 (base32
8208 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
8209 (build-system python-build-system)
8210 (arguments
8211 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8212 (propagated-inputs
8213 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8214 ("python-zope-schema" ,python-zope-schema)))
8215 (home-page "http://pypi.python.org/pypi/zope.configuration")
8216 (synopsis "Zope Configuration Markup Language")
8217 (description "Zope.configuration implements ZCML, the Zope Configuration
8218Markup Language.")
8219 (license license:zpl2.1)))
8220
8221(define-public python2-zope-configuration
8222 (package-with-python2 python-zope-configuration))
8223
8224(define-public python-zope-proxy
8225 (package
8226 (name "python-zope-proxy")
8227 (version "4.1.6")
8228 (source
8229 (origin
8230 (method url-fetch)
8231 (uri (string-append "https://pypi.python.org/packages/source/z"
8232 "/zope.proxy/zope.proxy-" version ".tar.gz"))
8233 (sha256
8234 (base32
8235 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
8236 (build-system python-build-system)
8237 (arguments
8238 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8239 (propagated-inputs
8240 `(("python-zope-interface" ,python-zope-interface)))
8241 (home-page "http://pypi.python.org/pypi/zope.proxy")
8242 (synopsis "Generic, transparent proxies")
8243 (description "Zope.proxy provides generic, transparent proxies for Python.
8244Proxies are special objects which serve as mostly-transparent wrappers around
8245another object, intervening in the apparent behavior of the wrapped object
8246only when necessary to apply the policy (e.g., access checking, location
8247brokering, etc.) for which the proxy is responsible.")
8248 (license license:zpl2.1)))
8249
8250(define-public python2-zope-proxy
8251 (package-with-python2 python-zope-proxy))
8252
8253(define-public python-zope-location
8254 (package
8255 (name "python-zope-location")
8256 (version "4.0.3")
8257 (source
8258 (origin
8259 (method url-fetch)
8260 (uri (string-append "https://pypi.python.org/packages/source/z"
8261 "/zope.location/zope.location-" version ".tar.gz"))
8262 (sha256
8263 (base32
8264 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
8265 (build-system python-build-system)
8266 (arguments
8267 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
8268 (propagated-inputs
8269 `(("python-zope-proxy" ,python-zope-proxy)
8270 ("python-zope-schema" ,python-zope-schema)))
8271 (home-page "http://pypi.python.org/pypi/zope.location/")
8272 (synopsis "Zope location library")
8273 (description "Zope.location implements the concept of \"locations\" in
8274Zope3, which are are special objects that have a structural location.")
8275 (license license:zpl2.1)))
8276
8277(define-public python2-zope-location
8278 (package-with-python2 python-zope-location))
8279
8280(define-public python-zope-security
8281 (package
8282 (name "python-zope-security")
8283 (version "4.0.3")
8284 (source
8285 (origin
8286 (method url-fetch)
8287 (uri (string-append "https://pypi.python.org/packages/source/z"
8288 "/zope.security/zope.security-" version ".tar.gz"))
8289 (sha256
8290 (base32
8291 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
8292 (build-system python-build-system)
8293 (arguments
8294 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
8295 (propagated-inputs
8296 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8297 ("python-zope-proxy" ,python-zope-proxy)
8298 ("python-zope-schema" ,python-zope-schema)))
8299 (native-inputs
8300 `(("python-six" ,python-six)
8301 ("python-zope-component" ,python-zope-component)
8302 ("python-zope-configuration" ,python-zope-configuration)
8303 ("python-zope-location" ,python-zope-location)
8304 ("python-zope-testrunner" ,python-zope-testrunner)
8305 ("python-zope-testing" ,python-zope-testing)))
8306 (home-page "http://pypi.python.org/pypi/zope.security")
8307 (synopsis "Zope security framework")
8308 (description "Zope.security provides a generic mechanism to implement
8309security policies on Python objects.")
8310 (license license:zpl2.1)))
8311
8312(define-public python2-zope-security
8313 (let ((zope-security (package-with-python2 python-zope-security)))
8314 (package (inherit zope-security)
8315 (propagated-inputs
8316 `(("python2-zope-testrunner" ,python2-zope-testrunner)
8317 ,@(alist-delete
8318 "python-zope-testrunner"
8319 (package-propagated-inputs zope-security)))))))
8320
8321(define-public python-zope-component
8322 (package
8323 (name "python-zope-component")
8324 (version "4.3.0")
8325 (source
8326 (origin
8327 (method url-fetch)
8328 (uri (pypi-uri "zope.component" version))
8329 (sha256
8330 (base32
8331 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
8332 (build-system python-build-system)
8333 (arguments
8334 ;; Skip tests due to circular dependency with python-zope-security.
8335 '(#:tests? #f))
8336 (native-inputs
8337 `(("python-zope-testing" ,python-zope-testing)))
8338 (propagated-inputs
8339 `(("python-zope-event" ,python-zope-event)
8340 ("python-zope-interface" ,python-zope-interface)
8341 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8342 ("python-zope-configuration" ,python-zope-configuration)))
8343 (home-page "https://github.com/zopefoundation/zope.component")
8344 (synopsis "Zope Component Architecture")
8345 (description "Zope.component represents the core of the Zope Component
8346Architecture. Together with the zope.interface package, it provides
8347facilities for defining, registering and looking up components.")
8348 (license license:zpl2.1)))
8349
8350(define-public python2-zope-component
8351 (package-with-python2 python-zope-component))
8352
8353(define-public python-pythondialog
8354 (package
8355 (name "python-pythondialog")
8356 (version "3.4.0")
8357 (source
8358 (origin
8359 (method url-fetch)
8360 (uri (pypi-uri "pythondialog" version))
8361 (sha256
8362 (base32
8363 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
8364 (build-system python-build-system)
8365 (arguments
8366 `(#:phases
8367 (modify-phases %standard-phases
8368 (add-after 'unpack 'patch-path
8369 (lambda* (#:key inputs #:allow-other-keys)
8370 (let* ((dialog (assoc-ref inputs "dialog")))
8371 ;; Since this library really wants to grovel the search path, we
8372 ;; must hardcode dialog's store path into it.
8373 (substitute* "dialog.py"
8374 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8375 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8376 #t))))
8377 #:tests? #f)) ; no test suite
8378 (propagated-inputs
8379 `(("dialog" ,dialog)))
8380 (home-page "http://pythondialog.sourceforge.net/")
8381 (synopsis "Python interface to the UNIX dialog utility")
8382 (description "A Python wrapper for the dialog utility. Its purpose is to
8383provide an easy to use, pythonic and comprehensive Python interface to dialog.
8384This allows one to make simple text-mode user interfaces on Unix-like systems")
8385 (license license:lgpl2.1)
8386 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8387
8388(define-public python2-pythondialog
8389 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8390 (package
8391 (inherit base)
8392 (version (package-version python-pythondialog))
8393 (source (origin
8394 (method url-fetch)
8395 (uri (pypi-uri "python2-pythondialog" version))
8396 (sha256
8397 (base32
8398 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
8399
8400(define-public python-pyrfc3339
8401 (package
8402 (name "python-pyrfc3339")
8403 (version "1.0")
8404 (source
8405 (origin
8406 (method url-fetch)
8407 (uri (pypi-uri "pyRFC3339" version))
8408 (sha256
8409 (base32
8410 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
8411 (build-system python-build-system)
8412 (propagated-inputs
8413 `(("python-pytz" ,python-pytz)))
8414 (native-inputs
8415 `(("python-nose" ,python-nose)))
8416 (home-page "https://github.com/kurtraschke/pyRFC3339")
8417 (synopsis "Python timestamp library")
8418 (description "Python library for generating and parsing RFC 3339-compliant
8419timestamps.")
8420 (license license:expat)))
8421
8422(define-public python2-pyrfc3339
8423 (package-with-python2 python-pyrfc3339))
8424
8425(define-public python-werkzeug
8426 (package
8427 (name "python-werkzeug")
8428 (version "0.11.15")
8429 (source
8430 (origin
8431 (method url-fetch)
8432 (uri (pypi-uri "Werkzeug" version))
8433 (sha256
8434 (base32
8435 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
8436 (build-system python-build-system)
8437 (native-inputs
8438 `(("python-pytest" ,python-pytest)))
8439 (home-page "http://werkzeug.pocoo.org/")
8440 (synopsis "Utilities for WSGI applications")
8441 (description "One of the most advanced WSGI utility modules. It includes a
8442powerful debugger, full-featured request and response objects, HTTP utilities to
8443handle entity tags, cache control headers, HTTP dates, cookie handling, file
8444uploads, a powerful URL routing system and a bunch of community-contributed
8445addon modules.")
8446 (license license:x11)))
8447
8448(define-public python2-werkzeug
8449 (package-with-python2 python-werkzeug))
8450
8451(define-public python-configobj
8452 (package
8453 (name "python-configobj")
8454 (version "5.0.6")
8455 (source (origin
8456 (method url-fetch)
8457 (uri (string-append
8458 "https://pypi.python.org/packages/source/c/configobj/"
8459 "configobj-" version ".tar.gz"))
8460 (sha256
8461 (base32
8462 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
8463 ;; Patch setup.py so it looks for python-setuptools, which is
8464 ;; required to parse the keyword 'install_requires' in setup.py.
8465 (patches (search-patches "python-configobj-setuptools.patch"))))
8466 (build-system python-build-system)
8467 (propagated-inputs
8468 `(("python-six" ,python-six)))
8469 (synopsis "Config file reading, writing and validation")
8470 (description "ConfigObj is a simple but powerful config file reader and
8471writer: an ini file round tripper. Its main feature is that it is very easy to
8472use, with a straightforward programmer’s interface and a simple syntax for
8473config files.")
8474 (home-page "https://github.com/DiffSK/configobj")
8475 (license license:bsd-3)))
8476
8477(define-public python2-configobj
8478 (package-with-python2 python-configobj))
8479
8480(define-public python-configargparse
8481 (package
8482 (name "python-configargparse")
8483 (version "0.10.0")
8484 (source (origin
8485 (method url-fetch)
8486 (uri (string-append
8487 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
8488 "ConfigArgParse-" version ".tar.gz"))
8489 (sha256
8490 (base32
8491 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
8492 (build-system python-build-system)
8493 (arguments
8494 ;; FIXME: Bug in test suite filed upstream:
8495 ;; https://github.com/bw2/ConfigArgParse/issues/32
8496 '(#:tests? #f))
8497 (synopsis "Replacement for argparse")
8498 (description "A drop-in replacement for argparse that allows options to also
8499be set via config files and/or environment variables.")
8500 (home-page "https://github.com/bw2/ConfigArgParse")
8501 (license license:expat)))
8502
8503(define-public python2-configargparse
8504 (package-with-python2 python-configargparse))
8505
8506(define-public python-ndg-httpsclient
8507 (package
8508 (name "python-ndg-httpsclient")
8509 (version "0.4.2")
8510 (source (origin
8511 (method url-fetch)
8512 (uri (pypi-uri "ndg_httpsclient" version))
8513 (sha256
8514 (base32
8515 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
8516 (build-system python-build-system)
8517 (arguments
8518 '(;; The tests appear to require networking.
8519 #:tests? #f))
8520 (propagated-inputs
8521 `(("python-pyopenssl" ,python-pyopenssl)))
8522 (synopsis "HTTPS support for Python's httplib and urllib2")
8523 (description "This is a HTTPS client implementation for httplib and urllib2
8524based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
8525over the default provided with Python and importantly enables full verification
8526of the SSL peer.")
8527 (home-page "https://github.com/cedadev/ndg_httpsclient/")
8528 (license license:bsd-3)))
8529
8530;; python2-openssl requires special care, so package-with-python2 is
8531;; insufficient.
8532(define-public python2-ndg-httpsclient
8533 (package (inherit python-ndg-httpsclient)
8534 (name "python2-ndg-httpsclient")
8535 (arguments `(#:python ,python-2))
8536 (propagated-inputs
8537 `(("python2-pyopenssl" ,python2-pyopenssl)))))
8538
8539(define-public python-contextlib2
8540 (package
8541 (name "python-contextlib2")
8542 (version "0.4.0")
8543 (source
8544 (origin
8545 (method url-fetch)
8546 (uri (pypi-uri "contextlib2" version))
8547 (sha256
8548 (base32
8549 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
8550 (build-system python-build-system)
8551 (arguments
8552 `(#:phases
8553 (modify-phases %standard-phases
8554 (replace 'check
8555 (lambda _ (zero?
8556 (system*
8557 "python" "test_contextlib2.py" "-v")))))))
8558 (home-page "http://contextlib2.readthedocs.org/")
8559 (synopsis "Tools for decorators and context managers")
8560 (description "This module is primarily a backport of the Python
85613.2 contextlib to earlier Python versions. Like contextlib, it
8562provides utilities for common tasks involving decorators and context
8563managers. It also contains additional features that are not part of
8564the standard library.")
8565 (license license:psfl)))
8566
8567(define-public python2-contextlib2
8568 (package-with-python2 python-contextlib2))
8569
8570(define-public python-texttable
8571 (package
8572 (name "python-texttable")
8573 (version "0.8.7")
8574 (source
8575 (origin
8576 (method url-fetch)
8577 (uri (pypi-uri "texttable" version))
8578 (sha256
8579 (base32
8580 "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
8581 (build-system python-build-system)
8582 (arguments '(#:tests? #f)) ; no tests
8583 (home-page "https://github.com/foutaise/texttable/")
8584 (synopsis "Python module for creating simple ASCII tables")
8585 (description "Texttable is a Python module for creating simple ASCII
8586tables.")
8587 (license license:lgpl2.1+)))
8588
8589(define-public python2-texttable
8590 (package-with-python2 python-texttable))
8591
8592(define-public python-websocket-client
8593 (package
8594 (name "python-websocket-client")
8595 (version "0.37.0")
8596 (source
8597 (origin
8598 (method url-fetch)
8599 (uri (pypi-uri "websocket_client" version))
8600 (sha256
8601 (base32
8602 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
8603 (build-system python-build-system)
8604 (propagated-inputs
8605 `(("python-six" ,python-six)))
8606 (home-page "https://github.com/liris/websocket-client")
8607 (synopsis "WebSocket client for Python")
8608 (description "The Websocket-client module provides the low level APIs for
8609WebSocket usage in Python programs.")
8610 (license license:lgpl2.1+)))
8611
8612(define-public python2-websocket-client
8613 (package-with-python2 python-websocket-client))
8614
8615(define-public python-atomicwrites
8616 (package
8617 (name "python-atomicwrites")
8618 (version "1.1.5")
8619 (source (origin
8620 (method url-fetch)
8621 (uri (pypi-uri "atomicwrites" version))
8622 (sha256
8623 (base32
8624 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
8625 (build-system python-build-system)
8626 (synopsis "Atomic file writes in Python")
8627 (description "Library for atomic file writes using platform dependent tools
8628for atomic file system operations.")
8629 (home-page "https://github.com/untitaker/python-atomicwrites")
8630 (license license:expat)))
8631
8632(define-public python2-atomicwrites
8633 (package-with-python2 python-atomicwrites))
8634
8635(define-public python-requests-toolbelt
8636 (package
8637 (name "python-requests-toolbelt")
8638 (version "0.6.2")
8639 (source (origin
8640 (method url-fetch)
8641 (uri (string-append
8642 "https://pypi.python.org/packages/"
8643 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
8644 "requests-toolbelt-" version ".tar.gz"))
8645 (sha256
8646 (base32
8647 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
8648 (build-system python-build-system)
8649 (native-inputs
8650 `(("python-betamax" ,python-betamax)
8651 ("python-mock" ,python-mock)
8652 ("python-pytest" ,python-pytest)))
8653 (propagated-inputs
8654 `(("python-requests" ,python-requests)))
8655 (synopsis "Extensions to python-requests")
8656 (description "This is a toolbelt of useful classes and functions to be used
8657with python-requests.")
8658 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
8659 (license license:asl2.0)))
8660
8661(define-public python-click-threading
8662 (package
8663 (name "python-click-threading")
8664 (version "0.2.0")
8665 (source (origin
8666 (method url-fetch)
8667 (uri (string-append
8668 "https://pypi.python.org/packages/"
8669 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
8670 "click-threading-" version ".tar.gz"))
8671 (sha256
8672 (base32
8673 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
8674 (build-system python-build-system)
8675 (propagated-inputs
8676 `(("python-click" ,python-click)))
8677 (synopsis "Utilities for multithreading in Click")
8678 (description "This package provides utilities for multithreading in Click
8679applications.")
8680 (home-page "https://github.com/click-contrib/click-threading")
8681 (license license:expat)))
8682
8683(define-public python-click-log
8684 (package
8685 (name "python-click-log")
8686 (version "0.1.8")
8687 (source (origin
8688 (method url-fetch)
8689 (uri (pypi-uri "click-log" version))
8690 (sha256
8691 (base32
8692 "14ikfjfgnzf21mjniq9lfk2igzykgzfvwwrk85nw2b9fq44109sp"))))
8693 (build-system python-build-system)
8694 (propagated-inputs
8695 `(("python-click" ,python-click)))
8696 (synopsis "Logging for click applications")
8697 (description "This package provides a Python library for logging Click
8698applications.")
8699 (home-page "https://github.com/click-contrib/click-log")
8700 (license license:expat)))
8701
8702(define-public python-apipkg
8703 (package
8704 (name "python-apipkg")
8705 (version "1.4")
8706 (source (origin
8707 (method url-fetch)
8708 (uri (pypi-uri "apipkg" version))
8709 (sha256
8710 (base32
8711 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8712 (build-system python-build-system)
8713 (native-inputs
8714 `(("python-pytest" ,python-pytest)))
8715 (synopsis "Namespace control and lazy-import mechanism")
8716 (description "With apipkg you can control the exported namespace of a Python
8717package and greatly reduce the number of imports for your users. It is a small
8718pure Python module that works on virtually all Python versions.")
8719 (home-page "https://bitbucket.org/hpk42/apipkg")
8720 (license license:expat)))
8721
8722(define-public python2-apipkg
8723 (package-with-python2 python-apipkg))
8724
8725(define-public python-execnet
8726 (package
8727 (name "python-execnet")
8728 (version "1.4.1")
8729 (source (origin
8730 (method url-fetch)
8731 (uri (pypi-uri "execnet" version))
8732 (sha256
8733 (base32
8734 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8735 (build-system python-build-system)
8736 (arguments
8737 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8738 ;; The two test failures are caused by the lack of an `ssh` executable.
8739 ;; The test suite can be run with pytest after the 'install' phase.
8740 #:tests? #f))
8741 (native-inputs
8742 `(("python-pytest" ,python-pytest)
8743 ("python-setuptools-scm" ,python-setuptools-scm)))
8744 (propagated-inputs
8745 `(("python-apipkg" ,python-apipkg)))
8746 (synopsis "Rapid multi-Python deployment")
8747 (description "Execnet provides a share-nothing model with
8748channel-send/receive communication for distributing execution across many
8749Python interpreters across version, platform and network barriers. It has a
8750minimal and fast API targeting the following uses:
8751@enumerate
8752@item distribute tasks to (many) local or remote CPUs
8753@item write and deploy hybrid multi-process applications
8754@item write scripts to administer multiple environments
8755@end enumerate")
8756 (home-page "http://codespeak.net/execnet/")
8757 (license license:expat)))
8758
8759(define-public python2-execnet
8760 (package-with-python2 python-execnet))
8761
8762(define-public python-trollius-redis
8763 (package
8764 (name "python-trollius-redis")
8765 (version "0.1.4")
8766 (source
8767 (origin
8768 (method url-fetch)
8769 (uri (pypi-uri "trollius_redis" version))
8770 (sha256
8771 (base32
8772 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
8773 (build-system python-build-system)
8774 ;; TODO: Tests require packaging 'hiredis'.
8775 (arguments '(#:tests? #f))
8776 (home-page "https://github.com/benjolitz/trollius-redis")
8777 (synopsis "Port of asyncio-redis to trollius")
8778 (description "@code{trollius-redis} is a Redis client for Python
8779 trollius. It is an asynchronious IO (PEP 3156) implementation of the
8780 Redis protocol.")
8781 (license license:bsd-2)))
8782
8783(define-public python2-trollius-redis
8784 (package-with-python2 python-trollius-redis))
8785
8786;;; The software provided by this package was integrated into pytest 2.8.
8787(define-public python-pytest-cache
8788 (package
8789 (name "python-pytest-cache")
8790 (version "1.0")
8791 (source (origin
8792 (method url-fetch)
8793 (uri (pypi-uri "pytest-cache" version))
8794 (sha256
8795 (base32
8796 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8797 (build-system python-build-system)
8798 (propagated-inputs
8799 `(("python-apipkg" ,python-apipkg)
8800 ("python-execnet" ,python-execnet)
8801 ("python-py" ,python-py)
8802 ("python-pytest" ,python-pytest)))
8803 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8804 (description "The pytest-cache plugin provides tools to rerun failures from
8805the last py.test invocation.")
8806 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
8807 (license license:expat)))
8808
8809(define-public python2-pytest-cache
8810 (package-with-python2 python-pytest-cache))
8811
8812(define-public python-pytest-localserver
8813 (package
8814 (name "python-pytest-localserver")
8815 (version "0.3.5")
8816 (source (origin
8817 (method url-fetch)
8818 (uri (pypi-uri "pytest-localserver" version))
8819 (sha256
8820 (base32
8821 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
8822 (build-system python-build-system)
8823 (arguments
8824 `(#:phases (modify-phases %standard-phases
8825 (replace 'check
8826 (lambda _
8827 (zero? (system* "py.test" "--genscript=runtests.py"))
8828 (zero? (system* "py.test")))))))
8829 (native-inputs
8830 `(("python-pytest" ,python-pytest)
8831 ("python-requests" ,python-requests)
8832 ("python-six" ,python-six)))
8833 (propagated-inputs
8834 `(("python-werkzeug" ,python-werkzeug)))
8835 (synopsis "Py.test plugin to test server connections locally")
8836 (description "Pytest-localserver is a plugin for the pytest testing
8837framework which enables you to test server connections locally.")
8838 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8839 (license license:expat)))
8840
8841(define-public python-wsgi-intercept
8842 (package
8843 (name "python-wsgi-intercept")
8844 (version "1.2.2")
8845 (source (origin
8846 (method url-fetch)
8847 (uri (string-append
8848 "https://pypi.python.org/packages/"
8849 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8850 "wsgi_intercept-" version ".tar.gz"))
8851 (sha256
8852 (base32
8853 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
8854 (build-system python-build-system)
8855 (propagated-inputs
8856 `(("python-six" ,python-six)))
8857 (native-inputs
8858 `(("python-pytest" ,python-pytest)
8859 ("python-httplib2" ,python-httplib2)
8860 ("python-requests" ,python-requests)
8861 ("python-urllib3" ,python-urllib3)))
8862 (synopsis "Puts a WSGI application in place of a real URI for testing")
8863 (description "Wsgi_intercept installs a WSGI application in place of a real
8864URI for testing. Testing a WSGI application normally involves starting a
8865server at a local host and port, then pointing your test code to that address.
8866Instead, this library lets you intercept calls to any specific host/port
8867combination and redirect them into a WSGI application importable by your test
8868program. Thus, you can avoid spawning multiple processes or threads to test
8869your Web app.")
8870 (home-page "https://github.com/cdent/wsgi-intercept")
8871 (license license:expat)))
8872
8873(define-public python-pytest-xprocess
8874 (package
8875 (name "python-pytest-xprocess")
8876 (version "0.9.1")
8877 (source (origin
8878 (method url-fetch)
8879 (uri (pypi-uri "pytest-xprocess" version))
8880 (sha256
8881 (base32
8882 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8883 (build-system python-build-system)
8884 (propagated-inputs
8885 `(("python-pytest" ,python-pytest)
8886 ("python-pytest-cache" ,python-pytest-cache)
8887 ("python-psutil" ,python-psutil)))
8888 (synopsis "Pytest plugin to manage external processes across test runs")
8889 (description "Pytest-xprocess is an experimental py.test plugin for managing
8890processes across test runs.")
8891 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8892 (license license:expat)))
8893
8894(define-public python-icalendar
8895 (package
8896 (name "python-icalendar")
8897 (version "3.11.4")
8898 (source (origin
8899 (method url-fetch)
8900 (uri (pypi-uri "icalendar" version))
8901 (sha256
8902 (base32
8903 "0ix3xxykz8hs8mx4f2063djawmd888y3vsl75fbvbfqvg67v35jn"))))
8904 (build-system python-build-system)
8905 (propagated-inputs
8906 `(("python-dateutil" ,python-dateutil)
8907 ("python-pytz" ,python-pytz)))
8908 (synopsis "Python library for parsing iCalendar files")
8909 (description "The icalendar package is a parser/generator of iCalendar
8910files for use with Python.")
8911 (home-page "https://github.com/collective/icalendar")
8912 (license license:bsd-2)))
8913
8914(define-public python-sphinxcontrib-newsfeed
8915 (package
8916 (name "python-sphinxcontrib-newsfeed")
8917 (version "0.1.4")
8918 (source (origin
8919 (method url-fetch)
8920 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8921 (sha256
8922 (base32
8923 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
8924 (arguments '(#:tests? #f)) ; No tests.
8925 (build-system python-build-system)
8926 (propagated-inputs
8927 `(("python-sphinx" ,python-sphinx)))
8928 (synopsis "News Feed extension for Sphinx")
8929 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8930Blog, News or Announcements section to a Sphinx website.")
8931 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
8932 (license license:bsd-2)))
8933
8934(define-public python-args
8935 (package
8936 (name "python-args")
8937 (version "0.1.0")
8938 (source (origin
8939 (method url-fetch)
8940 (uri (pypi-uri "args" version))
8941 (sha256
8942 (base32
8943 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8944 (build-system python-build-system)
8945 (home-page "https://github.com/kennethreitz/args")
8946 (synopsis "Command-line argument parser")
8947 (description
8948 "This library provides a Python module to parse command-line arguments.")
8949 (license license:bsd-3)))
8950
8951(define-public python2-args
8952 (package-with-python2 python-args))
8953
8954(define-public python-clint
8955 (package
8956 (name "python-clint")
8957 (version "0.5.1")
8958 (source (origin
8959 (method url-fetch)
8960 (uri (pypi-uri "clint" version))
8961 (sha256
8962 (base32
8963 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8964 (build-system python-build-system)
8965 (arguments
8966 '(#:phases
8967 (modify-phases %standard-phases
8968 (replace 'check
8969 (lambda _
8970 (zero? (system* "py.test" "-v")))))))
8971 (native-inputs
8972 `(("python-pytest" ,python-pytest)))
8973 (propagated-inputs
8974 `(("python-args" ,python-args)))
8975 (home-page "https://github.com/kennethreitz/clint")
8976 (synopsis "Command-line interface tools")
8977 (description
8978 "Clint is a Python module filled with a set of tools for developing
8979command-line applications, including tools for colored and indented
8980output, progress bar display, and pipes.")
8981 (license license:isc)))
8982
8983(define-public python2-clint
8984 (package-with-python2 python-clint))
8985
8986(define-public python-astor
8987 (package
8988 (name "python-astor")
8989 (version "0.5")
8990 (source (origin
8991 (method url-fetch)
8992 (uri (pypi-uri "astor" version))
8993 (sha256
8994 (base32
8995 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8996 (build-system python-build-system)
8997 (home-page "https://github.com/berkerpeksag/astor")
8998 (synopsis "Read and write Python ASTs")
8999 (description
9000 "Astor is designed to allow easy manipulation of Python source via the
9001Abstract Syntax Tree.")
9002 (license license:bsd-3)))
9003
9004(define-public python2-astor
9005 (package-with-python2 python-astor))
9006
9007(define-public python-rply
9008 (package
9009 (name "python-rply")
9010 (version "0.7.4")
9011 (source (origin
9012 (method url-fetch)
9013 (uri (pypi-uri "rply" version))
9014 (sha256
9015 (base32
9016 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
9017 (build-system python-build-system)
9018 (propagated-inputs
9019 `(("python-appdirs" ,python-appdirs)))
9020 (home-page "https://github.com/alex/rply")
9021 (synopsis "Parser generator for Python")
9022 (description
9023 "This package provides a pure Python based parser generator, that also
9024works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
9025with a new public API, and RPython support.")
9026 (license license:bsd-3)))
9027
9028(define-public python2-rply
9029 (package-with-python2 python-rply))
9030
9031(define-public python-hy
9032 (package
9033 (name "python-hy")
9034 (version "0.11.1")
9035 (source (origin
9036 (method url-fetch)
9037 (uri (pypi-uri "hy" version))
9038 (sha256
9039 (base32
9040 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
9041 (build-system python-build-system)
9042 (arguments
9043 '(#:phases
9044 (modify-phases %standard-phases
9045 (replace 'check
9046 (lambda _
9047 ;; Tests require write access to HOME.
9048 (setenv "HOME" "/tmp")
9049 (zero? (system* "nosetests")))))))
9050 (native-inputs
9051 `(("python-coverage" ,python-coverage)
9052 ("python-nose" ,python-nose)))
9053 (propagated-inputs
9054 `(("python-astor" ,python-astor)
9055 ("python-clint" ,python-clint)
9056 ("python-rply" ,python-rply)))
9057 (home-page "http://hylang.org/")
9058 (synopsis "Lisp frontend to Python")
9059 (description
9060 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
9061its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
9062Python at your fingertips, in Lisp form.")
9063 (license license:expat)))
9064
9065(define-public python2-hy
9066 (package-with-python2 python-hy))
9067
9068(define-public python-rauth
9069 (package
9070 (name "python-rauth")
9071 (version "0.7.3")
9072 (source
9073 (origin
9074 (method url-fetch)
9075 (uri (pypi-uri "rauth" version))
9076 (sha256
9077 (base32
9078 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
9079 (build-system python-build-system)
9080 (arguments
9081 `(#:test-target "check"))
9082 (propagated-inputs
9083 `(("python-requests" ,python-requests)))
9084 (home-page "https://github.com/litl/rauth")
9085 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
9086 (description
9087 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
9088provides service wrappers for convenient connection initialization and
9089authenticated session objects providing things like keep-alive.")
9090 (license license:expat)
9091 (properties `((python2-variant . ,(delay python2-rauth))))))
9092
9093(define-public python2-rauth
9094 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9095 (package
9096 (inherit base)
9097 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9098 ,@(package-native-inputs base))))))
9099
9100(define-public python2-functools32
9101 (package
9102 (name "python2-functools32")
9103 (version "3.2.3-2")
9104 (source
9105 (origin
9106 (method url-fetch)
9107 (uri (pypi-uri "functools32" version))
9108 (sha256
9109 (base32
9110 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
9111 (build-system python-build-system)
9112 (arguments
9113 `(#:python ,python-2
9114 #:tests? #f)) ; no test target
9115 (home-page "https://github.com/MiCHiLU/python-functools32")
9116 (synopsis
9117 "Backport of the functools module from Python 3.2.3")
9118 (description
9119 "This package is a backport of the @code{functools} module from Python
91203.2.3 for use with older versions of Python and PyPy.")
9121 (license license:expat)))
9122
9123(define-public python2-subprocess32
9124 (package
9125 (name "python2-subprocess32")
9126 (version "3.2.7")
9127 (source (origin
9128 (method url-fetch)
9129 (uri (pypi-uri "subprocess32" version))
9130 (sha256
9131 (base32
9132 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
9133 (patches
9134 (search-patches "python2-subprocess32-disable-input-test.patch"))))
9135 (build-system python-build-system)
9136 (arguments
9137 `(#:python ,python-2
9138 #:phases
9139 (modify-phases %standard-phases
9140 (add-after 'unpack 'patch-/bin/sh
9141 (lambda _
9142 (substitute* '("subprocess32.py"
9143 "test_subprocess32.py")
9144 (("/bin/sh") (which "sh")))
9145 #t))
9146 (delete 'check)
9147 (add-after 'install 'check
9148 (lambda* (#:key inputs outputs #:allow-other-keys)
9149 ;; For some reason this package fails to import
9150 ;; _posixsubprocess.so when PYTHONPATH is set to the build
9151 ;; directory. Running tests after install is easier.
9152 (add-installed-pythonpath inputs outputs)
9153 (zero? (system* "python" "test_subprocess32.py")))))))
9154 (home-page "https://github.com/google/python-subprocess32")
9155 (synopsis "Backport of the subprocess module from Python 3.2")
9156 (description
9157 "This is a backport of the @code{subprocess} standard library module
9158from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
9159new features. On POSIX systems it is guaranteed to be reliable when used
9160in threaded applications. It includes timeout support from Python 3.3 but
9161otherwise matches 3.2’s API.")
9162 (license license:psfl)))
9163
9164(define-public python2-futures
9165 (package
9166 (name "python2-futures")
9167 (version "3.0.5")
9168 (source
9169 (origin
9170 (method url-fetch)
9171 (uri (pypi-uri "futures" version))
9172 (sha256
9173 (base32
9174 "1pw1z4329xvlabdpwqa6b7v2fxf7hl64m4cgr22ckbym8m8m4hh5"))))
9175 (build-system python-build-system)
9176 (arguments `(#:python ,python-2))
9177 (home-page "https://github.com/agronholm/pythonfutures")
9178 (synopsis
9179 "Backport of the concurrent.futures package from Python 3.2")
9180 (description
9181 "The concurrent.futures module provides a high-level interface for
9182asynchronously executing callables. This package backports the
9183concurrent.futures package from Python 3.2")
9184 (license license:bsd-3)))
9185
9186(define-public python-promise
9187 (package
9188 (name "python-promise")
9189 (version "0.4.2")
9190 (source
9191 (origin
9192 (method url-fetch)
9193 (uri (pypi-uri "promise" version))
9194 (sha256
9195 (base32
9196 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
9197 (build-system python-build-system)
9198 ;; Tests wants python-futures, which is a python2 only program, and
9199 ;; can't be found by python-promise at test time.
9200 (arguments `(#:tests? #f))
9201 (home-page "https://github.com/syrusakbary/promise")
9202 (synopsis "Promises/A+ implementation for Python")
9203 (description
9204 "Promises/A+ implementation for Python")
9205 (properties `((python2-variant . ,(delay python2-promise))))
9206 (license license:expat)))
9207
9208(define-public python2-promise
9209 (let ((promise (package-with-python2
9210 (strip-python2-variant python-promise))))
9211 (package (inherit promise)
9212 (arguments (substitute-keyword-arguments (package-arguments promise)
9213 ((#:tests? _) #t)))
9214 (native-inputs
9215 `(("python2-futures" ,python2-futures)
9216 ("python2-pytest" ,python2-pytest)
9217 ,@(package-native-inputs promise))))))
9218
9219(define-public python-urllib3
9220 (package
9221 (name "python-urllib3")
9222 (version "1.18.1")
9223 (source
9224 (origin
9225 (method url-fetch)
9226 (uri (pypi-uri "urllib3" version))
9227 (sha256
9228 (base32
9229 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
9230 (build-system python-build-system)
9231 (arguments `(#:tests? #f))
9232 (native-inputs
9233 `(;; some packages for tests
9234 ("python-nose" ,python-nose)
9235 ("python-mock" ,python-mock)
9236 ("python-tornado" ,python-tornado)))
9237 (propagated-inputs
9238 `(;; extra packages for https security
9239 ("python-certifi" ,python-certifi)
9240 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9241 ("python-pyasn1" ,python-pyasn1)
9242 ("python-pyopenssl" ,python-pyopenssl)))
9243 (home-page "https://urllib3.readthedocs.org/")
9244 (synopsis "HTTP library with thread-safe connection pooling")
9245 (description
9246 "Urllib3 supports features left out of urllib and urllib2 libraries. It
9247can reuse the same socket connection for multiple requests, it can POST files,
9248supports url redirection and retries, and also gzip and deflate decoding.")
9249 (license license:expat)))
9250
9251(define-public python2-urllib3
9252 (package-with-python2 python-urllib3))
9253
9254(define-public python-colorama
9255 (package
9256 (name "python-colorama")
9257 (version "0.3.7")
9258 (source
9259 (origin
9260 (method url-fetch)
9261 (uri (pypi-uri "colorama" version))
9262 (sha256
9263 (base32
9264 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
9265 (build-system python-build-system)
9266 (synopsis "Colored terminal text rendering for Python")
9267 (description "Colorama is a Python library for rendering colored terminal
9268text.")
9269 (home-page "https://pypi.python.org/pypi/colorama")
9270 (license license:bsd-3)))
9271
9272(define-public python2-colorama
9273 (package-with-python2 python-colorama))
9274
9275(define-public python-rsa
9276 (package
9277 (name "python-rsa")
9278 (version "3.4.2")
9279 (source
9280 (origin
9281 (method url-fetch)
9282 (uri (pypi-uri "rsa" version))
9283 (sha256
9284 (base32
9285 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
9286 (build-system python-build-system)
9287 (propagated-inputs
9288 `(("python-pyasn1" ,python-pyasn1)))
9289 (synopsis "Pure-Python RSA implementation")
9290 (description "Python-RSA is a pure-Python RSA implementation. It supports
9291encryption and decryption, signing and verifying signatures, and key
9292generation according to PKCS#1 version 1.5. It can be used as a Python
9293library as well as on the command line.")
9294 (home-page "http://stuvel.eu/rsa")
9295 (license license:asl2.0)))
9296
9297(define-public python2-rsa
9298 (package-with-python2 python-rsa))
9299
9300(define-public python-pluggy
9301 (package
9302 (name "python-pluggy")
9303 (version "0.3.1")
9304 (source
9305 (origin
9306 (method url-fetch)
9307 (uri (pypi-uri "pluggy" version))
9308 (sha256
9309 (base32
9310 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
9311 (build-system python-build-system)
9312 (synopsis "Plugin and hook calling mechanism for Python")
9313 (description "Pluggy is an extraction of the plugin manager as used by
9314Pytest but stripped of Pytest specific details.")
9315 (home-page "https://pypi.python.org/pypi/pluggy")
9316 (license license:expat)))
9317
9318(define-public python2-pluggy
9319 (package-with-python2 python-pluggy))
9320
9321(define-public python-tox
9322 (package
9323 (name "python-tox")
9324 (version "2.3.1")
9325 (source
9326 (origin
9327 (method url-fetch)
9328 (uri (pypi-uri "tox" version))
9329 (sha256
9330 (base32
9331 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
9332 (build-system python-build-system)
9333 (arguments
9334 ;; FIXME: Tests require pytest-timeout, which itself requires
9335 ;; pytest>=2.8.0 for installation.
9336 '(#:tests? #f))
9337 (propagated-inputs
9338 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
9339 ("python-py" ,python-py)
9340 ("python-virtualenv" ,python-virtualenv)))
9341 (native-inputs
9342 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
9343 ("python-pytest" ,python-pytest))) ; >= 2.3.5
9344 (home-page "http://tox.testrun.org/")
9345 (synopsis "Virtualenv-based automation of test activities")
9346 (description "Tox is a generic virtualenv management and test command line
9347tool. It can be used to check that a package installs correctly with
9348different Python versions and interpreters, or run tests in each type of
9349supported environment, or act as a frontend to continuous integration
9350servers.")
9351 (license license:expat)))
9352
9353(define-public python2-tox
9354 (package-with-python2 python-tox))
9355
9356(define-public python-jmespath
9357 (package
9358 (name "python-jmespath")
9359 (version "0.9.0")
9360 (source
9361 (origin
9362 (method url-fetch)
9363 (uri (pypi-uri "jmespath" version))
9364 (sha256
9365 (base32
9366 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
9367 (build-system python-build-system)
9368 (native-inputs
9369 `(("python-nose" ,python-nose)))
9370 (synopsis "JSON Matching Expressions")
9371 (description "JMESPath (pronounced “james path”) is a Python library that
9372allows one to declaratively specify how to extract elements from a JSON
9373document.")
9374 (home-page "https://github.com/jmespath/jmespath.py")
9375 (license license:expat)))
9376
9377(define-public python2-jmespath
9378 (package-with-python2 python-jmespath))
9379
9380(define-public python-botocore
9381 (package
9382 (name "python-botocore")
9383 (version "1.5.26")
9384 (source
9385 (origin
9386 (method url-fetch)
9387 (uri (pypi-uri "botocore" version))
9388 (sha256
9389 (base32
9390 "1b7l48hr88galrrc5q6k21z3sdadzxc87ppzs7k9fz4p1w8bfnvb"))))
9391 (build-system python-build-system)
9392 (arguments
9393 ;; FIXME: Many tests are failing.
9394 '(#:tests? #f))
9395 (propagated-inputs
9396 `(("python-dateutil" ,python-dateutil)
9397 ("python-docutils" ,python-docutils)
9398 ("python-jmespath" ,python-jmespath)))
9399 (native-inputs
9400 `(("python-mock" ,python-mock)
9401 ("python-nose" ,python-nose)
9402 ("behave" ,behave)
9403 ("python-tox" ,python-tox)
9404 ("python-wheel" ,python-wheel)))
9405 (home-page "https://github.com/boto/botocore")
9406 (synopsis "Low-level interface to AWS")
9407 (description "Botocore is a Python library that provides a low-level
9408interface to the Amazon Web Services (AWS) API.")
9409 (license license:asl2.0)))
9410
9411(define-public python2-botocore
9412 (package-with-python2 python-botocore))
9413
9414(define-public awscli
9415 (package
9416 (name "awscli")
9417 (version "1.11.63")
9418 (source
9419 (origin
9420 (method url-fetch)
9421 (uri (pypi-uri name version))
9422 (sha256
9423 (base32
9424 "1r8aqv8w27k76lcsfk83w6qw9lz8gk2ibzwacp5wjhpp2gik911m"))))
9425 (build-system python-build-system)
9426 (propagated-inputs
9427 `(("python-colorama" ,python-colorama)
9428 ("python-botocore" ,python-botocore)
9429 ("python-s3transfer" ,python-s3transfer)
9430 ("python-docutils" ,python-docutils)
9431 ("python-pyyaml" ,python-pyyaml)
9432 ("python-rsa" ,python-rsa)))
9433 (arguments
9434 ;; FIXME: The 'pypi' release does not contain tests.
9435 '(#:tests? #f))
9436 (home-page "https://aws.amazon.com/cli/")
9437 (synopsis "Command line client for AWS")
9438 (description "AWS CLI provides a unified command line interface to the
9439Amazon Web Services (AWS) API.")
9440 (license license:asl2.0)))
9441
9442(define-public python-hypothesis
9443 (package
9444 (name "python-hypothesis")
9445 (version "3.1.0")
9446 (source (origin
9447 (method url-fetch)
9448 (uri (pypi-uri "hypothesis" version))
9449 (sha256
9450 (base32
9451 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
9452 (build-system python-build-system)
9453 (native-inputs
9454 `(("python-flake8" ,python-flake8)
9455 ("python-pytest" ,python-pytest)))
9456 (synopsis "Library for property based testing")
9457 (description "Hypothesis is a library for testing your Python code against a
9458much larger range of examples than you would ever want to write by hand. It’s
9459based on the Haskell library, Quickcheck, and is designed to integrate
9460seamlessly into your existing Python unit testing work flow.")
9461 (home-page "https://github.com/DRMacIver/hypothesis")
9462 (license license:mpl2.0)
9463 (properties `((python2-variant . ,(delay python2-hypothesis))))))
9464
9465(define-public python2-hypothesis
9466 (let ((hypothesis (package-with-python2
9467 (strip-python2-variant python-hypothesis))))
9468 (package (inherit hypothesis)
9469 (native-inputs
9470 `(("python2-enum34" ,python2-enum34)
9471 ,@(package-native-inputs hypothesis))))))
9472
9473(define-public python-pytest-subtesthack
9474 (package
9475 (name "python-pytest-subtesthack")
9476 (version "0.1.1")
9477 (source (origin
9478 (method url-fetch)
9479 (uri (pypi-uri "pytest-subtesthack" version))
9480 (sha256
9481 (base32
9482 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
9483 (build-system python-build-system)
9484 (propagated-inputs
9485 `(("python-pytest" ,python-pytest)))
9486 (synopsis "Set-up and tear-down fixtures for unit tests")
9487 (description "This plugin allows you to set up and tear down fixtures within
9488unit test functions that use @code{py.test}. This is useful for using
9489@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
9490function multiple times, without setting up or tearing down fixture state as is
9491normally the case.")
9492 (home-page "https://github.com/untitaker/pytest-subtesthack/")
9493 (license license:unlicense)))
9494
9495(define-public python2-pytest-subtesthack
9496 (package-with-python2 python-pytest-subtesthack))
9497
9498(define-public python-xdo
9499 (package
9500 (name "python-xdo")
9501 (version "0.3")
9502 (source (origin
9503 (method url-fetch)
9504 (uri (string-append
9505 "http://http.debian.net/debian/pool/main/p/python-xdo/"
9506 "python-xdo_" version ".orig.tar.gz"))
9507 (sha256
9508 (base32
9509 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
9510 (build-system python-build-system)
9511 (arguments
9512 '(#:phases
9513 (modify-phases %standard-phases
9514 (add-before 'install 'patch-libxdo-path
9515 ;; Hardcode the path of dynamically loaded libxdo library.
9516 (lambda* (#:key inputs #:allow-other-keys)
9517 (let ((libxdo (string-append
9518 (assoc-ref inputs "xdotool")
9519 "/lib/libxdo.so")))
9520 (substitute* "xdo/_xdo.py"
9521 (("find_library\\(\"xdo\"\\)")
9522 (simple-format #f "\"~a\"" libxdo)))
9523 #t))))
9524 #:tests? #f)) ; no tests provided
9525 (propagated-inputs
9526 `(("python-six" ,python-six)))
9527 (inputs
9528 `(("xdotool" ,xdotool)
9529 ("libX11" ,libx11)))
9530 (home-page "https://tracker.debian.org/pkg/python-xdo")
9531 (synopsis "Python library for simulating X11 keyboard/mouse input")
9532 (description "Provides bindings to libxdo for manipulating X11 via simulated
9533input. (Note that this is mostly a legacy library; you may wish to look at
9534python-xdo for newer bindings.)")
9535 (license license:bsd-3)))
9536
9537(define-public python2-xdo
9538 (package-with-python2 python-xdo))
9539
9540(define-public python-wtforms
9541 (package
9542 (name "python-wtforms")
9543 (version "2.1")
9544 (source
9545 (origin
9546 (method url-fetch)
9547 (uri (pypi-uri "WTForms" version ".zip"))
9548 (sha256
9549 (base32
9550 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
9551 (build-system python-build-system)
9552 (arguments
9553 '(#:phases
9554 (modify-phases %standard-phases
9555 (add-after 'unpack 'remove-django-test
9556 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
9557 (lambda _
9558 (substitute*
9559 "tests/runtests.py"
9560 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
9561 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
9562 #t)))))
9563 (native-inputs
9564 `(("unzip" ,unzip)))
9565 (home-page "http://wtforms.simplecodes.com/")
9566 (synopsis
9567 "Form validation and rendering library for Python web development")
9568 (description
9569 "WTForms is a flexible forms validation and rendering library
9570for Python web development. It is very similar to the web form API
9571available in Django, but is a standalone package.")
9572 (license license:bsd-3)))
9573
9574(define-public python2-wtforms
9575 (package-with-python2 python-wtforms))
9576
9577(define-public python-mako
9578 (package
9579 (name "python-mako")
9580 (version "1.0.6")
9581 (source
9582 (origin
9583 (method url-fetch)
9584 (uri (pypi-uri "Mako" version))
9585 (sha256
9586 (base32
9587 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
9588 (build-system python-build-system)
9589 (propagated-inputs
9590 `(("python-markupsafe" ,python-markupsafe)))
9591 (native-inputs
9592 `(("python-mock" ,python-mock)
9593 ("python-nose" ,python-nose)
9594 ("python-pytest" ,python-pytest)))
9595 (home-page "http://www.makotemplates.org/")
9596 (synopsis "Templating language for Python")
9597 (description "Mako is a templating language for Python that compiles
9598templates into Python modules.")
9599 (license license:expat)))
9600
9601(define-public python2-mako
9602 (package-with-python2 python-mako))
9603
9604(define-public python-waitress
9605 (package
9606 (name "python-waitress")
9607 (version "0.8.10")
9608 (source
9609 (origin
9610 (method url-fetch)
9611 (uri (pypi-uri "waitress" version))
9612 (sha256
9613 (base32
9614 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
9615 (build-system python-build-system)
9616 (home-page "https://github.com/Pylons/waitress")
9617 (synopsis "Waitress WSGI server")
9618 (description "Waitress is meant to be a production-quality pure-Python WSGI
9619server with very acceptable performance.")
9620 (license license:zpl2.1)))
9621
9622(define-public python2-waitress
9623 (package-with-python2 python-waitress))
9624
9625(define-public python-wsgiproxy2
9626 (package
9627 (name "python-wsgiproxy2")
9628 (version "0.4.2")
9629 (source
9630 (origin
9631 (method url-fetch)
9632 (uri (pypi-uri "WSGIProxy2" version ".zip"))
9633 (sha256
9634 (base32
9635 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
9636 (build-system python-build-system)
9637 (arguments
9638 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
9639 ;; support Python 3:
9640 ;; https://github.com/benoitc/restkit/issues/140
9641 #:tests? #f))
9642 (native-inputs
9643 `(("unzip" ,unzip)
9644 ("python-nose" ,python-nose)
9645 ("python-coverage" ,python-coverage)))
9646 (propagated-inputs
9647 `(("python-six" ,python-six)
9648 ("python-webob" ,python-webob)))
9649 (home-page
9650 "https://github.com/gawel/WSGIProxy2/")
9651 (synopsis "WSGI Proxy with various http client backends")
9652 (description "WSGI turns HTTP requests into WSGI function calls.
9653WSGIProxy turns WSGI function calls into HTTP requests.
9654It also includes code to sign requests and pass private data,
9655and to spawn subprocesses to handle requests.")
9656 (license license:expat)))
9657
9658(define-public python2-wsgiproxy2
9659 (package-with-python2 python-wsgiproxy2))
9660
9661(define-public python-pastedeploy
9662 (package
9663 (name "python-pastedeploy")
9664 (version "1.5.2")
9665 (source
9666 (origin
9667 (method url-fetch)
9668 (uri (pypi-uri "PasteDeploy" version))
9669 (sha256
9670 (base32
9671 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
9672 (build-system python-build-system)
9673 (native-inputs
9674 `(("python-nose" ,python-nose)))
9675 (home-page "http://pythonpaste.org/deploy/")
9676 (synopsis
9677 "Load, configure, and compose WSGI applications and servers")
9678 (description
9679 "This tool provides code to load WSGI applications and servers from URIs;
9680these URIs can refer to Python Eggs for INI-style configuration files. Paste
9681Script provides commands to serve applications based on this configuration
9682file.")
9683 (license license:expat)))
9684
9685(define-public python2-pastedeploy
9686 (package-with-python2 python-pastedeploy))
9687
9688(define-public python-paste
9689 (package
9690 (name "python-paste")
9691 (version "2.0.3")
9692 (source
9693 (origin
9694 (method url-fetch)
9695 (uri (pypi-uri "Paste" version))
9696 (sha256
9697 (base32
9698 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
9699 (patches (search-patches "python-paste-remove-website-test.patch"
9700 "python-paste-remove-timing-test.patch"))))
9701 (build-system python-build-system)
9702 (native-inputs
9703 `(("python-nose" ,python-nose)))
9704 (propagated-inputs
9705 `(("python-six" ,python-six)))
9706 (home-page "http://pythonpaste.org")
9707 (synopsis
9708 "Python web development tools, focusing on WSGI")
9709 (description
9710 "Paste provides a variety of web development tools and middleware which
9711can be nested together to build web applications. Paste's design closely
9712follows ideas flowing from WSGI (Web Standard Gateway Interface).")
9713 (license license:expat)))
9714
9715(define-public python2-paste
9716 (package-with-python2 python-paste))
9717
9718(define-public python-pastescript
9719 (package
9720 (name "python-pastescript")
9721 (version "2.0.2")
9722 (source
9723 (origin
9724 (method url-fetch)
9725 (uri (pypi-uri "PasteScript" version))
9726 (sha256
9727 (base32
9728 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
9729 (build-system python-build-system)
9730 (native-inputs
9731 `(("python-nose" ,python-nose)))
9732 (propagated-inputs
9733 `(("python-paste" ,python-paste)
9734 ("python-pastedeploy" ,python-pastedeploy)))
9735 (home-page "http://pythonpaste.org/script/")
9736 (arguments
9737 '(;; Unfortunately, this requires the latest unittest2,
9738 ;; but that requires traceback2 which requires linecache2 which requires
9739 ;; unittest2. So we're skipping tests for now.
9740 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
9741 ;; so in theory we could get around this situation somehow.)
9742 #:tests? #f))
9743 (synopsis
9744 "Pluggable command line tool for serving web applications and more")
9745 (description
9746 "PasteScript is a plugin-friendly command line tool which provides a
9747variety of features, from launching web applications to bootstrapping project
9748layouts.")
9749 (license license:expat)))
9750
9751(define-public python2-pastescript
9752 (package-with-python2 python-pastescript))
9753
9754(define-public python-pyquery
9755 (package
9756 (name "python-pyquery")
9757 (version "1.2.17")
9758 (source
9759 (origin
9760 (method url-fetch)
9761 (uri (pypi-uri "pyquery" version))
9762 (sha256
9763 (base32
9764 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
9765 (build-system python-build-system)
9766 (native-inputs
9767 `(("python-webob" ,python-webob)
9768 ("python-webtest" ,python-webtest)))
9769 (propagated-inputs
9770 `(("python-lxml" ,python-lxml)
9771 ("python-cssselect" ,python-cssselect)))
9772 (home-page "https://github.com/gawel/pyquery")
9773 (synopsis "Make jQuery-like queries on xml documents")
9774 (description "pyquery allows you to make jQuery queries on xml documents.
9775The API is as much as possible the similar to jQuery. pyquery uses lxml for
9776fast xml and html manipulation.")
9777 (license license:bsd-3)))
9778
9779(define-public python2-pyquery
9780 (package-with-python2 python-pyquery))
9781
9782(define-public python-webtest
9783 (package
9784 (name "python-webtest")
9785 (version "2.0.20")
9786 (source
9787 (origin
9788 (method url-fetch)
9789 (uri (pypi-uri "WebTest" version))
9790 (sha256
9791 (base32
9792 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
9793 (build-system python-build-system)
9794 (arguments
9795 `(;; Unfortunately we have to disable tests!
9796 ;; This release of WebTest is pinned to python-nose < 1.3,
9797 ;; but older versions of python-nose are plagued with the following
9798 ;; bug(s), which rears its ugly head during test execution:
9799 ;; https://github.com/nose-devs/nose/issues/759
9800 ;; https://github.com/nose-devs/nose/pull/811
9801 #:tests? #f))
9802 ;; Commented out code is no good, but in this case, once tests
9803 ;; are ready to be enabled again, we should put the following
9804 ;; in place:
9805 ;; (native-inputs
9806 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9807 ;; ; but see above comment
9808 ;; ("python-coverage" ,python-coverage)
9809 ;; ("python-mock" ,python-mock)
9810 ;; ("python-pastedeploy" ,python-pastedeploy)
9811 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9812 ;; ("python-pyquery" ,python-pyquery)))
9813 (propagated-inputs
9814 `(("python-waitress" ,python-waitress)
9815 ("python-webob" ,python-webob)
9816 ("python-six" ,python-six)
9817 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9818 (home-page "http://webtest.pythonpaste.org/")
9819 (synopsis "Helper to test WSGI applications")
9820 (description "Webtest allows you to test your Python web applications
9821without starting an HTTP server. It supports anything that supports the
9822minimum of WSGI.")
9823 (license license:expat)))
9824
9825(define-public python2-webtest
9826 (package-with-python2 python-webtest))
9827
9828(define-public python-anyjson
9829 (package
9830 (name "python-anyjson")
9831 (version "0.3.3")
9832 (source
9833 (origin
9834 (method url-fetch)
9835 (uri (pypi-uri "anyjson" version))
9836 (sha256
9837 (base32
9838 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9839 (build-system python-build-system)
9840 (arguments
9841 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9842 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9843 ;; whatever) so this transformation needs to be done before the tests
9844 ;; can be run. Maybe we could add a build step to transform beforehand
9845 ;; but it could be annoying/difficult.
9846 ;; We can enable tests for the Python 2 version, though, and do below.
9847 #:tests? #f))
9848 (home-page "http://bitbucket.org/runeh/anyjson/")
9849 (synopsis
9850 "Wraps best available JSON implementation in a common interface")
9851 (description
9852 "Anyjson loads whichever is the fastest JSON module installed
9853and provides a uniform API regardless of which JSON implementation is used.")
9854 (license license:bsd-3)
9855 (properties `((python2-variant . ,(delay python2-anyjson))))))
9856
9857(define-public python2-anyjson
9858 (let ((anyjson (package-with-python2
9859 (strip-python2-variant python-anyjson))))
9860 (package
9861 (inherit anyjson)
9862 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9863 #:tests? #t
9864 ,@(package-arguments anyjson)))
9865 (native-inputs `(("python2-nose" ,python2-nose))))))
9866
9867(define-public python-amqp
9868 (package
9869 (name "python-amqp")
9870 (version "1.4.9")
9871 (source
9872 (origin
9873 (method url-fetch)
9874 (uri (pypi-uri "amqp" version))
9875 (sha256
9876 (base32
9877 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9878 (build-system python-build-system)
9879 (native-inputs
9880 `(("python-nose" ,python-nose)
9881 ("python-mock" ,python-mock)))
9882 (home-page "https://github.com/celery/py-amqp")
9883 (synopsis
9884 "Low-level AMQP client for Python (fork of amqplib)")
9885 (description
9886 "This is a fork of amqplib which was originally written by Barry Pederson.
9887It is maintained by the Celery project, and used by kombu as a pure python
9888alternative when librabbitmq is not available.")
9889 (license license:lgpl2.1+)
9890 (properties `((python2-variant . ,(delay python2-amqp))))))
9891
9892(define-public python2-amqp
9893 (let ((amqp (package-with-python2
9894 (strip-python2-variant python-amqp))))
9895 (package
9896 (inherit amqp)
9897 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9898 ;; unmaintained. Weirdly, does not do this on the python 3
9899 ;; version?
9900 #:tests? #f
9901 ,@(package-arguments amqp))))))
9902
9903(define-public python-kombu
9904 (package
9905 (name "python-kombu")
9906 (version "3.0.37")
9907 (source
9908 (origin
9909 (method url-fetch)
9910 (uri (pypi-uri "kombu" version))
9911 (sha256
9912 (base32
9913 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
9914 (build-system python-build-system)
9915 (native-inputs
9916 `(("python-mock" ,python-mock)
9917 ("python-nose" ,python-nose)))
9918 (propagated-inputs
9919 `(("python-anyjson" ,python-anyjson)
9920 ("python-amqp" ,python-amqp)
9921 ("python-redis" ,python-redis)))
9922 (home-page "http://kombu.readthedocs.org")
9923 (synopsis "Message passing library for Python")
9924 (description "The aim of Kombu is to make messaging in Python as easy as
9925possible by providing an idiomatic high-level interface for the AMQ protocol,
9926and also provide proven and tested solutions to common messaging problems.
9927AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9928message orientation, queuing, routing, reliability and security, for which the
9929RabbitMQ messaging server is the most popular implementation.")
9930 (license license:bsd-3)
9931 (properties `((python2-variant . ,(delay python2-kombu))))))
9932
9933(define-public python2-kombu
9934 (let ((kombu (package-with-python2
9935 (strip-python2-variant python-kombu))))
9936 (package
9937 (inherit kombu)
9938 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
9939 ;; It works fine on the python3 variant.
9940 #:tests? #f
9941 ,@(package-arguments kombu)))
9942 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9943 ,@(package-native-inputs kombu))))))
9944
9945(define-public python-billiard
9946 (package
9947 (name "python-billiard")
9948 (version "3.3.0.23")
9949 (source
9950 (origin
9951 (method url-fetch)
9952 (uri (pypi-uri "billiard" version))
9953 (sha256
9954 (base32
9955 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
9956 (build-system python-build-system)
9957 (native-inputs
9958 `(("python-nose" ,python-nose)))
9959 (home-page "https://github.com/celery/billiard")
9960 (synopsis
9961 "Python multiprocessing fork with improvements and bugfixes")
9962 (description
9963 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9964multiprocessing package itself is a renamed and updated version of R Oudkerk's
9965pyprocessing package. This standalone variant is intended to be compatible with
9966Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
9967 (license license:bsd-3)
9968 (properties `((python2-variant . ,(delay python2-billiard))))))
9969
9970(define-public python2-billiard
9971 (let ((billiard (package-with-python2
9972 (strip-python2-variant python-billiard))))
9973 (package
9974 (inherit billiard)
9975 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9976 ("python2-mock" ,python2-mock)
9977 ,@(package-native-inputs billiard))))))
9978
9979(define-public python-celery
9980 (package
9981 (name "python-celery")
9982 (version "3.1.24")
9983 (source
9984 (origin
9985 (method url-fetch)
9986 (uri (pypi-uri "celery" version))
9987 (sha256
9988 (base32
9989 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
9990 (build-system python-build-system)
9991 (arguments
9992 `(#:phases
9993 (modify-phases %standard-phases
9994 ;; These tests break with Python 3.5:
9995 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9996 (replace 'check
9997 (lambda _
9998 (zero?
9999 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
10000 (native-inputs
10001 `(("python-nose" ,python-nose)))
10002 (propagated-inputs
10003 `(("python-pytz" ,python-pytz)
10004 ("python-billiard" ,python-billiard)
10005 ("python-kombu" ,python-kombu)))
10006 (home-page "http://celeryproject.org")
10007 (synopsis "Distributed Task Queue")
10008 (description "Celery is an asynchronous task queue/job queue based on
10009distributed message passing. It is focused on real-time operation, but
10010supports scheduling as well. The execution units, called tasks, are executed
10011concurrently on a single or more worker servers using multiprocessing,
10012Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
10013synchronously (wait until ready).")
10014 (license license:bsd-3)
10015 (properties `((python2-variant . ,(delay python2-celery))))))
10016
10017(define-public python2-celery
10018 (let ((celery (package-with-python2
10019 (strip-python2-variant python-celery))))
10020 (package
10021 (inherit celery)
10022 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10023 ("python2-mock" ,python2-mock)
10024 ,@(package-native-inputs celery))))))
10025
10026(define-public python-translitcodec
10027 (package
10028 (name "python-translitcodec")
10029 (version "0.4.0")
10030 (source
10031 (origin
10032 (method url-fetch)
10033 (uri (pypi-uri "translitcodec" version))
10034 (sha256
10035 (base32
10036 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
10037 (build-system python-build-system)
10038 (arguments
10039 `(#:tests? #f)) ; no tests provided
10040 (home-page
10041 "https://github.com/claudep/translitcodec")
10042 (synopsis
10043 "Unicode to 8-bit charset transliteration codec")
10044 (description
10045 "This package contains codecs for transliterating ISO 10646 texts into
10046best-effort representations using smaller coded character sets (ASCII,
10047ISO 8859, etc.).")
10048 (license license:expat)))
10049
10050(define-public python2-translitcodec
10051 (package-with-python2 python-translitcodec))
10052
10053(define-public python-editor
10054 (package
10055 (name "python-editor")
10056 (version "0.5")
10057 (source
10058 (origin
10059 (method url-fetch)
10060 (uri (pypi-uri "python-editor" version))
10061 (sha256
10062 (base32
10063 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
10064 (build-system python-build-system)
10065 (home-page
10066 "https://github.com/fmoo/python-editor")
10067 (synopsis
10068 "Programmatically open an editor, capture the result")
10069 (description
10070 "python-editor is a library that provides the editor module for
10071programmatically interfacing with your system's $EDITOR.")
10072 (license license:asl2.0)))
10073
10074(define-public python2-editor
10075 (package-with-python2 python-editor))
10076
10077(define-public python-sphinxcontrib-programoutput
10078 (package
10079 (name "python-sphinxcontrib-programoutput")
10080 (version "0.10")
10081 (source (origin
10082 (method url-fetch)
10083 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10084 (sha256
10085 (base32
10086 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
10087 (build-system python-build-system)
10088 (arguments
10089 ;; FIXME: Many tests are failing and the upstream is gone.
10090 '(#:tests? #f))
10091 (propagated-inputs
10092 `(("python-sphinx" ,python-sphinx)))
10093 (synopsis "Sphinx extension to include program output")
10094 (description "A Sphinx extension to literally insert the output of arbitrary
10095commands into documents, helping you to keep your command examples up to date.")
10096 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
10097 (license license:bsd-2)))
10098
10099(define-public python2-sphinxcontrib-programoutput
10100 (package-with-python2 python-sphinxcontrib-programoutput))
10101
10102(define-public python-sphinx-repoze-autointerface
10103 (package
10104 (name "python-sphinx-repoze-autointerface")
10105 (version "0.8")
10106 (source (origin
10107 (method url-fetch)
10108 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10109 (sha256
10110 (base32
10111 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
10112 (build-system python-build-system)
10113 (arguments '(#:tests? #f)) ; No tests.
10114 (propagated-inputs
10115 `(("python-sphinx" ,python-sphinx)
10116 ("python-zope-interface" ,python-zope-interface)))
10117 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
10118 (description "This package defines an extension for the Sphinx documentation
10119system. The extension allows generation of API documentation by
10120introspection of @code{zope.interface} instances in code.")
10121 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
10122 (license license:repoze)))
10123
10124(define-public python2-sphinx-repoze-autointerface
10125 (package-with-python2 python-sphinx-repoze-autointerface))
10126
10127(define-public python-psycopg2
10128 (package
10129 (name "python-psycopg2")
10130 (version "2.6.2")
10131 (source
10132 (origin
10133 (method url-fetch)
10134 (uri (pypi-uri "psycopg2" version))
10135 (sha256
10136 (base32
10137 "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
10138 (build-system python-build-system)
10139 (arguments
10140 ;; Tests would require a postgresql database "psycopg2_test"
10141 ;; and a running postgresql database management service.
10142 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
10143 (inputs
10144 `(("postgresql" ,postgresql))) ; libpq
10145 (home-page "http://initd.org/psycopg/")
10146 (synopsis "Python PostgreSQL adapter")
10147 (description
10148 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
10149 (license license:lgpl3+)))
10150
10151(define-public python2-psycopg2
10152 (package-with-python2 python-psycopg2))
10153
10154(define-public python-vobject
10155 (package
10156 (name "python-vobject")
10157 (version "0.9.2")
10158 (source (origin
10159 (method url-fetch)
10160 (uri (pypi-uri "vobject" version))
10161 (sha256
10162 (base32
10163 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
10164 (build-system python-build-system)
10165 (arguments
10166 '(;; The test suite relies on some non-portable Windows interfaces.
10167 #:tests? #f))
10168 (propagated-inputs
10169 `(("python-dateutil" ,python-dateutil)
10170 ("python-pyicu" ,python-pyicu)))
10171 (synopsis "Parse and generate vCard and vCalendar files")
10172 (description "Vobject is intended to be a full featured Python package for
10173parsing and generating vCard and vCalendar files. Currently, iCalendar files
10174are supported and well tested. vCard 3.0 files are supported, and all data
10175should be imported, but only a few components are understood in a sophisticated
10176way.")
10177 (home-page "http://eventable.github.io/vobject/")
10178 (license license:asl2.0)))
10179
10180(define-public python2-vobject
10181 (package-with-python2 python-vobject))
10182
10183(define-public python-munkres
10184 (package
10185 (name "python-munkres")
10186 (version "1.0.8")
10187 (source (origin
10188 (method url-fetch)
10189 (uri (pypi-uri "munkres" version))
10190 (sha256
10191 (base32
10192 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
10193 (build-system python-build-system)
10194 (arguments
10195 '(#:tests? #f)) ; no test suite
10196 (home-page "http://software.clapper.org/munkres/")
10197 (synopsis "Implementation of the Munkres algorithm")
10198 (description "The Munkres module provides an implementation of the Munkres
10199algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
10200useful for solving the Assignment Problem.")
10201 (license license:bsd-3)))
10202
10203(define-public python2-munkres
10204 (package-with-python2 python-munkres))
10205
10206(define-public python-flask
10207 (package
10208 (name "python-flask")
10209 (version "0.11.1")
10210 (source (origin
10211 (method url-fetch)
10212 (uri (pypi-uri "Flask" version))
10213 (sha256
10214 (base32
10215 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
10216 (build-system python-build-system)
10217 (propagated-inputs
10218 `(("python-itsdangerous" ,python-itsdangerous)
10219 ("python-jinja2" ,python-jinja2)
10220 ("python-click" ,python-click)
10221 ("python-werkzeug" ,python-werkzeug)))
10222 (home-page "https://github.com/mitsuhiko/flask/")
10223 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
10224 (description "Flask is a micro web framework based on the Werkzeug toolkit
10225and Jinja2 template engine. It is called a micro framework because it does not
10226presume or force a developer to use a particular tool or library.")
10227 (license license:bsd-3)))
10228
10229(define-public python2-flask
10230 (package-with-python2 python-flask))
10231
10232(define-public python-flask-wtf
10233 (package
10234 (name "python-flask-wtf")
10235 (version "0.13.1")
10236 (source
10237 (origin
10238 (method url-fetch)
10239 (uri (pypi-uri "Flask-WTF" version))
10240 (sha256
10241 (base32
10242 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
10243 (build-system python-build-system)
10244 (arguments
10245 '(#:phases
10246 (modify-phases %standard-phases
10247 (add-before 'check 'drop-failing-test
10248 (lambda _
10249 ;; FIXME: This file tries resolving an external server, which
10250 ;; fails. Try to patch out the offending section instead of
10251 ;; deleting the whole thing.
10252 (delete-file "tests/test_recaptcha.py")
10253 #t)))))
10254 (propagated-inputs
10255 `(("python-flask-babel" ,python-flask-babel)
10256 ("python-babel" ,python-babel)
10257 ("python-wtforms" ,python-wtforms)))
10258 (native-inputs
10259 `(("python-nose" ,python-nose)))
10260 (home-page "https://github.com/lepture/flask-wtf")
10261 (synopsis "Simple integration of Flask and WTForms")
10262 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
10263upload, and reCAPTCHA.")
10264 (license license:bsd-3)))
10265
10266(define-public python2-flask-wtf
10267 (package-with-python2 python-flask-wtf))
10268
10269(define-public python-flask-multistatic
10270 (package
10271 (name "python-flask-multistatic")
10272 (version "1.0")
10273 (source
10274 (origin
10275 (method url-fetch)
10276 (uri (pypi-uri "flask-multistatic" version))
10277 (sha256
10278 (base32
10279 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
10280 (build-system python-build-system)
10281 (propagated-inputs
10282 `(("python-flask" ,python-flask)))
10283 (home-page "https://pagure.io/flask-multistatic")
10284 (synopsis "Flask plugin to allow overriding static files")
10285 (description "@code{flask-multistatic} is a flask plugin that adds support
10286for overriding static files.")
10287 (license license:gpl3+)))
10288
10289(define-public python2-flask-multistatic
10290 (package-with-python2 python-flask-multistatic))
10291
10292(define-public python-cookies
10293 (package
10294 (name "python-cookies")
10295 (version "2.2.1")
10296 (source (origin
10297 (method url-fetch)
10298 (uri (pypi-uri "cookies" version))
10299 (sha256
10300 (base32
10301 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
10302 (build-system python-build-system)
10303 (arguments
10304 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
10305 #:tests? #f))
10306 (native-inputs
10307 `(("python-pytest" ,python2-pytest)))
10308 (synopsis "HTTP cookie parser and renderer")
10309 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
10310Python.")
10311 (home-page "https://gitlab.com/sashahart/cookies")
10312 (license license:expat)))
10313
10314(define-public python2-cookies
10315 (package-with-python2 python-cookies))
10316
10317(define-public python-responses
10318 (package
10319 (name "python-responses")
10320 (version "0.5.1")
10321 (source (origin
10322 (method url-fetch)
10323 (uri (pypi-uri "responses" version))
10324 (sha256
10325 (base32
10326 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
10327 (build-system python-build-system)
10328 (arguments
10329 `(;; Test suite is not distributed:
10330 ;; https://github.com/getsentry/responses/issues/38
10331 #:tests? #f))
10332 (native-inputs
10333 `(("python-mock" ,python-mock)))
10334 (propagated-inputs
10335 `(("python-requests" ,python-requests)
10336 ("python-cookies" ,python-cookies)
10337 ("python-six" ,python-six)))
10338 (home-page "https://github.com/getsentry/responses")
10339 (synopsis "Utility for mocking out the `requests` Python library")
10340 (description "A utility library for mocking out the `requests` Python
10341library.")
10342 (license license:asl2.0)))
10343
10344(define-public python2-responses
10345 (package-with-python2 python-responses))
10346
10347(define-public python-whoosh
10348 (package
10349 (name "python-whoosh")
10350 (version "2.7.4")
10351 (source
10352 (origin
10353 (method url-fetch)
10354 (uri (pypi-uri "Whoosh" version))
10355 (sha256
10356 (base32
10357 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
10358 (build-system python-build-system)
10359 (native-inputs
10360 `(("python-pytest" ,python-pytest)))
10361 (home-page "http://bitbucket.org/mchaput/whoosh")
10362 (synopsis "Full text indexing, search, and spell checking library")
10363 (description
10364 "Whoosh is a fast, pure-Python full text indexing, search, and spell
10365checking library.")
10366 (license license:bsd-2)))
10367
10368(define-public python2-whoosh
10369 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
10370 (package (inherit whoosh)
10371 (propagated-inputs
10372 `(("python2-backport-ssl-match-hostname"
10373 ,python2-backport-ssl-match-hostname)
10374 ,@(package-propagated-inputs whoosh))))))
10375
10376(define-public python-pathlib
10377 (package
10378 (name "python-pathlib")
10379 (version "1.0.1")
10380 (source (origin
10381 (method url-fetch)
10382 (uri (pypi-uri "pathlib" version))
10383 (sha256
10384 (base32
10385 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
10386 (build-system python-build-system)
10387 ;; The tests depend on the internal "test" module, which does not provide
10388 ;; a stable interface.
10389 (arguments `(#:tests? #f))
10390 (home-page "https://pathlib.readthedocs.org/")
10391 (synopsis "Object-oriented file system paths")
10392 (description "Pathlib offers a set of classes to handle file system paths.
10393It offers the following advantages over using string objects:
10394
10395@enumerate
10396@item No more cumbersome use of os and os.path functions. Everything can
10397be done easily through operators, attribute accesses, and method calls.
10398@item Embodies the semantics of different path types. For example,
10399comparing Windows paths ignores casing.
10400@item Well-defined semantics, eliminating any inconsistencies or
10401ambiguities (forward vs. backward slashes, etc.).
10402@end enumerate
10403
10404Note: In Python 3.4, pathlib is now part of the standard library. For other
10405Python versions please consider python-pathlib2 instead, which tracks the
10406standard library module. This module (python-pathlib) isn't maintained
10407anymore.")
10408 (license license:expat)))
10409
10410(define-public python2-pathlib
10411 (package-with-python2 python-pathlib))
10412
10413(define-public python2-pathlib2
10414 (package
10415 (name "python2-pathlib2")
10416 (version "2.1.0")
10417 (source (origin
10418 (method url-fetch)
10419 (uri (pypi-uri "pathlib2" version))
10420 (sha256
10421 (base32
10422 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
10423 (build-system python-build-system)
10424 ;; We only need the the Python 2 variant, since for Python 3 our minimum
10425 ;; version is 3.4 which already includes this package as part of the
10426 ;; standard library.
10427 (arguments
10428 `(#:python ,python-2))
10429 (native-inputs
10430 `(("python2-six" ,python2-six)))
10431 (home-page "http://pypi.python.org/pypi/pathlib2/")
10432 (synopsis "Object-oriented file system paths - backport of standard
10433pathlib module")
10434 (description "The goal of pathlib2 is to provide a backport of standard
10435pathlib module which tracks the standard library module, so all the newest
10436features of the standard pathlib can be used also on older Python versions.
10437
10438Pathlib offers a set of classes to handle file system paths. It offers the
10439following advantages over using string objects:
10440
10441@enumerate
10442@item No more cumbersome use of os and os.path functions. Everything can
10443be done easily through operators, attribute accesses, and method calls.
10444@item Embodies the semantics of different path types. For example,
10445comparing Windows paths ignores casing.
10446@item Well-defined semantics, eliminating any inconsistencies or
10447ambiguities (forward vs. backward slashes, etc.).
10448@end enumerate")
10449 (license license:expat)))
10450
10451(define-public python-jellyfish
10452 (package
10453 (name "python-jellyfish")
10454 (version "0.5.6")
10455 (source (origin
10456 (method url-fetch)
10457 (uri (pypi-uri "jellyfish" version))
10458 (sha256
10459 (base32
10460 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
10461 (build-system python-build-system)
10462 (native-inputs
10463 `(("python-pytest" ,python-pytest)))
10464 (home-page "https://github.com/jamesturk/jellyfish")
10465 (synopsis "Approximate and phonetic matching of strings")
10466 (description "Jellyfish uses a variety of string comparison and phonetic
10467encoding algorithms to do fuzzy string matching.")
10468 (license license:bsd-2)
10469 (properties `((python2-variant . ,(delay python2-jellyfish))))))
10470
10471(define-public python2-jellyfish
10472 (let ((jellyfish (package-with-python2
10473 (strip-python2-variant python-jellyfish))))
10474 (package (inherit jellyfish)
10475 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
10476 ,@(package-native-inputs jellyfish))))))
10477
10478(define-public python2-unicodecsv
10479 (package
10480 (name "python2-unicodecsv")
10481 (version "0.14.1")
10482 (source (origin
10483 (method url-fetch)
10484 ;; The test suite is not included in the PyPi release.
10485 ;; https://github.com/jdunck/python-unicodecsv/issues/19
10486 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
10487 "archive/" version ".tar.gz"))
10488 (file-name (string-append name "-" version ".tar.gz"))
10489 (sha256
10490 (base32
10491 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
10492 (build-system python-build-system)
10493 (arguments
10494 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
10495 #:python ,python-2))
10496 (native-inputs
10497 `(("python2-unittest2" ,python2-unittest2)))
10498 (home-page "https://github.com/jdunck/python-unicodecsv")
10499 (synopsis "Unicode CSV module for Python 2")
10500 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
10501module, adding support for Unicode strings.")
10502 (license license:bsd-2)))
10503
10504(define-public python-rarfile
10505 (package
10506 (name "python-rarfile")
10507 (version "2.8")
10508 (source (origin
10509 (method url-fetch)
10510 (uri (pypi-uri "rarfile" version))
10511 (sha256
10512 (base32
10513 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
10514 (build-system python-build-system)
10515 (arguments
10516 '(#:phases
10517 (modify-phases %standard-phases
10518 (replace 'check
10519 ;; Many tests fail, but the installation proceeds.
10520 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
10521 (native-inputs
10522 `(("which" ,which))) ; required for tests
10523 (propagated-inputs
10524 `(("libarchive" ,libarchive)))
10525 (home-page "https://github.com/markokr/rarfile")
10526 (synopsis "RAR archive reader for Python")
10527 (description "This is Python module for RAR archive reading. The interface
10528is made as zipfile like as possible.")
10529 (license license:isc)))
10530
10531(define-public python2-rarfile
10532 (package-with-python2 python-rarfile))
10533
10534(define-public python-magic
10535 (package
10536 (name "python-magic")
10537 (version "0.4.3")
10538 (source
10539 (origin
10540 (method url-fetch)
10541 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
10542 version ".tar.gz"))
10543 (sha256
10544 (base32
10545 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
10546 (file-name (string-append name "-" version "-checkout"))))
10547 (build-system python-build-system)
10548 (arguments
10549 ;; The tests are unreliable, so don't run them. The tests fail
10550 ;; under Python3 because they were written for Python2 and
10551 ;; contain import statements that do not work in Python3. One of
10552 ;; the tests fails under Python2 because its assertions are
10553 ;; overly stringent; it relies on comparing output strings which
10554 ;; are brittle and can change depending on the version of
10555 ;; libmagic being used and the system on which the test is
10556 ;; running. In my case, under GuixSD 0.10.0, only one test
10557 ;; failed, and it seems to have failed only because the version
10558 ;; of libmagic that is packaged in Guix outputs a slightly
10559 ;; different (but not wrong) string than the one that the test
10560 ;; expected.
10561 '(#:tests? #f
10562 #:phases (modify-phases %standard-phases
10563 ;; Replace a specific method call with a hard-coded
10564 ;; path to the necessary libmagic.so file in the
10565 ;; store. If we don't do this, then the method call
10566 ;; will fail to find the libmagic.so file, which in
10567 ;; turn will cause any application using
10568 ;; python-magic to fail.
10569 (add-before 'build 'hard-code-path-to-libmagic
10570 (lambda* (#:key inputs #:allow-other-keys)
10571 (let ((file (assoc-ref inputs "file")))
10572 (substitute* "magic.py"
10573 (("ctypes.util.find_library\\('magic'\\)")
10574 (string-append "'" file "/lib/libmagic.so'")))
10575 #t)))
10576 (add-before 'install 'disable-egg-compression
10577 (lambda _
10578 (let ((port (open-file "setup.cfg" "a")))
10579 (display "\n[easy_install]\nzip_ok = 0\n"
10580 port)
10581 (close-port port)
10582 #t))))))
10583 (inputs
10584 ;; python-magic needs to be able to find libmagic.so.
10585 `(("file" ,file)))
10586 (home-page "https://github.com/ahupp/python-magic")
10587 (synopsis "File type identification using libmagic")
10588 (description
10589 "This module uses ctypes to access the libmagic file type
10590identification library. It makes use of the local magic database and
10591supports both textual and MIME-type output. Note that this module and
10592the python-file module both provide a \"magic.py\" file; these two
10593modules, which are different and were developed separately, both serve
10594the same purpose: to provide Python bindings for libmagic.")
10595 (license license:expat)))
10596
10597(define-public python2-magic
10598 (package-with-python2 python-magic))
10599
10600(define-public python2-s3cmd
10601 (package
10602 (name "python2-s3cmd")
10603 (version "1.6.1")
10604 (source
10605 (origin
10606 (method url-fetch)
10607 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
10608 "s3cmd-" version ".tar.gz"))
10609 (sha256
10610 (base32
10611 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
10612 (build-system python-build-system)
10613 (arguments
10614 ;; s3cmd is written for python2 only and contains no tests.
10615 `(#:python ,python-2
10616 #:tests? #f))
10617 (propagated-inputs
10618 `(("python2-dateutil" ,python2-dateutil)
10619 ;; The python-file package also provides a magic.py module.
10620 ;; This is an unfortunate state of affairs; however, s3cmd
10621 ;; fails to install if it cannot find specifically the
10622 ;; python-magic package. Thus we include it, instead of using
10623 ;; python-file. Ironically, s3cmd sometimes works better
10624 ;; without libmagic bindings at all:
10625 ;; https://github.com/s3tools/s3cmd/issues/198
10626 ("python2-magic" ,python2-magic)))
10627 (home-page "http://s3tools.org/s3cmd")
10628 (synopsis "Command line tool for S3-compatible storage services")
10629 (description
10630 "S3cmd is a command line tool for uploading, retrieving and managing data
10631in storage services that are compatible with the Amazon Simple Storage
10632Service (S3) protocol, including S3 itself. It supports rsync-like backup,
10633GnuPG encryption, and more. It also supports management of Amazon's
10634CloudFront content delivery network.")
10635 (license license:gpl2+)))
10636
10637(define-public python-pkgconfig
10638 (package
10639 (name "python-pkgconfig")
10640 (version "1.1.0")
10641 (source
10642 (origin
10643 (method url-fetch)
10644 (uri (pypi-uri "pkgconfig" version))
10645 (sha256
10646 (base32
10647 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
10648 (build-system python-build-system)
10649 (native-inputs
10650 `(("python-nose" ,python-nose)))
10651 (inputs
10652 `(("pkg-config" ,pkg-config)))
10653 (arguments
10654 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
10655 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
10656 #:tests? #f
10657 ;; Hard-code the path to pkg-config.
10658 #:phases
10659 (modify-phases %standard-phases
10660 (add-before
10661 'build 'patch
10662 (lambda _
10663 (substitute* "pkgconfig/pkgconfig.py"
10664 (("cmd = 'pkg-config")
10665 (string-append "cmd = '" (which "pkg-config"))))
10666 #t)))))
10667 (home-page "https://github.com/matze/pkgconfig")
10668 (synopsis "Python interface for pkg-config")
10669 (description "This module provides a Python interface to pkg-config. It
10670can be used to find all pkg-config packages, check if a package exists,
10671check if a package meets certain version requirements, query CFLAGS and
10672LDFLAGS and parse the output to build extensions with setup.py.")
10673 (license license:expat)))
10674
10675(define-public python2-pkgconfig
10676 (package-with-python2 python-pkgconfig))
10677
10678(define-public python-bz2file
10679 (package
10680 (name "python-bz2file")
10681 (version "0.98")
10682 (source
10683 (origin
10684 (method url-fetch)
10685 (uri (pypi-uri "bz2file" version))
10686 (sha256
10687 (base32
10688 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
10689 (build-system python-build-system)
10690 (arguments
10691 `(#:tests? #f)) ; Tests use deprecated python modules.
10692 (home-page "https://github.com/nvawda/bz2file")
10693 (synopsis "Read and write bzip2-compressed files")
10694 (description
10695 "Bz2file is a Python library for reading and writing bzip2-compressed
10696files. It contains a drop-in replacement for the I/O interface in the
10697standard library's @code{bz2} module, including features from the latest
10698development version of CPython that are not available in older releases.")
10699 (license license:asl2.0)
10700 (properties `((python2-variant . ,(delay python2-bz2file))))))
10701
10702(define-public python2-bz2file
10703 (let ((base (package-with-python2
10704 (strip-python2-variant python-bz2file))))
10705 (package
10706 (inherit base)
10707 (arguments
10708 `(#:python ,python-2
10709 #:phases
10710 (modify-phases %standard-phases
10711 ;; 'python setup.py test' does not work as of 0.98.
10712 ;; There is only the one test file, so we run it directly.
10713 (replace 'check
10714 (lambda _ (zero? (system* "python"
10715 "test_bz2file.py"))))))))))
10716
10717(define-public python-future
10718 (package
10719 (name "python-future")
10720 (version "0.15.2")
10721 (source
10722 (origin
10723 (method url-fetch)
10724 (uri (pypi-uri "future" version))
10725 (sha256
10726 (base32
10727 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
10728 (build-system python-build-system)
10729 ;; Many tests connect to the network or are otherwise flawed.
10730 ;; https://github.com/PythonCharmers/python-future/issues/210
10731 (arguments
10732 `(#:tests? #f))
10733 (home-page "http://python-future.org")
10734 (synopsis "Single-source support for Python 3 and 2")
10735 (description
10736 "@code{python-future} is the missing compatibility layer between Python 2 and
10737Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
10738to support both Python 2 and Python 3 with minimal overhead.")
10739 (license license:expat)))
10740
10741(define-public python2-future
10742 (package-with-python2 python-future))
10743
10744(define-public python-cysignals
10745 (package
10746 (name "python-cysignals")
10747 (version "1.1.0")
10748 (source
10749 (origin
10750 (method url-fetch)
10751 (uri (pypi-uri "cysignals" version ".tar.bz2"))
10752 (sha256
10753 (base32
10754 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
10755 (build-system python-build-system)
10756 (native-inputs
10757 `(("python-cython" ,python-cython)
10758 ("python-sphinx" ,python-sphinx)))
10759 (inputs
10760 `(("pari-gp" ,pari-gp)))
10761 (arguments
10762 `(#:modules ((guix build python-build-system)
10763 ((guix build gnu-build-system) #:prefix gnu:)
10764 (guix build utils))
10765 ;; FIXME: Tests are executed after installation and currently fail
10766 ;; when not installing into standard locations; the author is working
10767 ;; on a fix.
10768 #:tests? #f
10769 #:phases
10770 (modify-phases %standard-phases
10771 (add-before
10772 'build 'configure
10773 (assoc-ref gnu:%standard-phases 'configure)))))
10774 (home-page
10775 "https://github.com/sagemath/cysignals")
10776 (synopsis
10777 "Handling of interrupts and signals for Cython")
10778 (description
10779 "The cysignals package provides mechanisms to handle interrupts (and
10780other signals and errors) in Cython code, using two related approaches,
10781for mixed Cython/Python code or external C libraries and pure Cython code,
10782respectively.")
10783 (license license:lgpl3+)))
10784
10785(define-public python2-cysignals
10786 (package-with-python2 python-cysignals))
10787
10788(define-public python2-shedskin
10789 (package
10790 (name "python2-shedskin")
10791 (version "0.9.4")
10792 (source
10793 (origin
10794 (method url-fetch)
10795 (uri (string-append "https://github.com/shedskin/shedskin/"
10796 "releases/download/v" version
10797 "/shedskin-" version ".tgz"))
10798 (sha256
10799 (base32
10800 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
10801 (build-system python-build-system)
10802 (arguments
10803 `(#:python ,python-2
10804 #:phases (modify-phases %standard-phases
10805 (add-after 'unpack 'fix-resulting-include-libs
10806 (lambda* (#:key inputs #:allow-other-keys)
10807 (let ((libgc (assoc-ref inputs "libgc"))
10808 (pcre (assoc-ref inputs "pcre")))
10809 (substitute* "shedskin/makefile.py"
10810 (("variable == 'CCFLAGS':[ ]*")
10811 (string-append "variable == 'CCFLAGS':\n"
10812 " line += ' -I " pcre "/include"
10813 " -I " libgc "/include'"))
10814 (("variable == 'LFLAGS':[ ]*")
10815 (string-append "variable == 'LFLAGS':\n"
10816 " line += ' -L" pcre "/lib"
10817 " -L " libgc "/lib'")))
10818 #t))))))
10819 (inputs `(("pcre" ,pcre)
10820 ("libgc" ,libgc)))
10821 (home-page "https://shedskin.github.io/")
10822 (synopsis "Experimental Python-2 to C++ Compiler")
10823 (description (string-append "This is an experimental compiler for a subset of
10824Python. It generates C++ code and a Makefile."))
10825 (license (list license:gpl3 license:bsd-3 license:expat))))
10826
10827(define-public python2-rope
10828 (package
10829 (name "python2-rope")
10830 (version "0.10.3")
10831 (source
10832 (origin
10833 (method url-fetch)
10834 (uri (pypi-uri "rope" version))
10835 (sha256
10836 (base32
10837 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10838 (arguments
10839 ;; Rope is currently python-2 only.
10840 ;; https://github.com/python-rope/rope/issues/57
10841 `(#:python ,python-2))
10842 (build-system python-build-system)
10843 (native-inputs
10844 `(("python2-unittest2" ,python2-unittest2)))
10845 (home-page "https://github.com/python-rope/rope")
10846 (synopsis "Refactoring library for Python")
10847 (description "Rope is a refactoring library for Python. It facilitates
10848the renaming, moving and extracting of attributes, functions, modules, fields
10849and parameters in Python 2 source code. These refactorings can also be applied
10850to occurrences in strings and comments.")
10851 (license license:gpl2)))
10852
10853(define-public python-py3status
10854 (package
10855 (name "python-py3status")
10856 (version "3.1")
10857 (source
10858 (origin
10859 (method url-fetch)
10860 (uri (pypi-uri "py3status" version))
10861 (sha256
10862 (base32
10863 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
10864 (build-system python-build-system)
10865 (arguments
10866 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
10867 (home-page "https://github.com/ultrabug/py3status")
10868 (synopsis "Extensible i3status wrapper written in Python")
10869 (description "py3status is an i3status wrapper which extends i3status
10870functionality in a modular way, allowing you to extend your panel with your
10871own code, responding to click events and updating clock every second.")
10872 (license license:bsd-3)))
10873
10874(define-public python-tblib
10875 (package
10876 (name "python-tblib")
10877 (version "1.3.0")
10878 (source (origin
10879 (method url-fetch)
10880 (uri (pypi-uri "tblib" version))
10881 (sha256 (base32
10882 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10883 (build-system python-build-system)
10884 (arguments
10885 `(#:phases
10886 (modify-phases %standard-phases
10887 (replace 'check
10888 (lambda _
10889 ;; Upstream runs tests after installation and the package itself
10890 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10891 ;; found.
10892 (setenv "PYTHONPATH"
10893 (string-append (getcwd) "/build/lib:"
10894 (getenv "PYTHONPATH")))
10895 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10896 (native-inputs
10897 `(("python-pytest" ,python-pytest)
10898 ("python-six" ,python-six)))
10899 (home-page "https://github.com/ionelmc/python-tblib")
10900 (synopsis "Traceback serialization library")
10901 (description
10902 "Traceback serialization allows you to:
10903
10904@enumerate
10905@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10906different processes. This allows better error handling when running code over
10907multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10908
10909@item Parse traceback strings and raise with the parsed tracebacks.
10910@end enumerate\n")
10911 (license license:bsd-3)))
10912
10913(define-public python2-tblib
10914 (package-with-python2 python-tblib))
10915
10916(define-public python-sqlparse
10917 (package
10918 (name "python-sqlparse")
10919 (version "0.1.19")
10920 (source (origin
10921 (method url-fetch)
10922 (uri (pypi-uri "sqlparse" version))
10923 (sha256
10924 (base32
10925 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10926 (build-system python-build-system)
10927 (arguments
10928 `(#:phases
10929 (modify-phases %standard-phases
10930 (replace 'check
10931 (lambda* _
10932 ;; setup.py-integrated 2to3 only affects the build files, but
10933 ;; py.test is using the source files. So we need to convert them
10934 ;; manually.
10935 (when (zero? (system* "python3"))
10936 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10937 (zero? (system* "py.test")))))))
10938 (native-inputs
10939 `(("python-pytest" ,python-pytest)))
10940 (home-page "https://github.com/andialbrecht/sqlparse")
10941 (synopsis "Non-validating SQL parser")
10942 (description "Sqlparse is a non-validating SQL parser for Python. It
10943provides support for parsing, splitting and formatting SQL statements.")
10944 (license license:bsd-3)))
10945
10946(define-public python2-sqlparse
10947 (package-with-python2 python-sqlparse))
10948
10949(define-public python-greenlet
10950 (package
10951 (name "python-greenlet")
10952 (version "0.4.11")
10953 (source (origin
10954 (method url-fetch)
10955 (uri (pypi-uri "greenlet" version))
10956 (sha256
10957 (base32
10958 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
10959 (build-system python-build-system)
10960 (home-page "https://greenlet.readthedocs.io/")
10961 (synopsis "Lightweight in-process concurrent programming")
10962 (description
10963 "Greenlet package is a spin-off of Stackless, a version of CPython
10964that supports micro-threads called \"tasklets\". Tasklets run
10965pseudo-concurrently (typically in a single or a few OS-level threads) and
10966are synchronized with data exchanges on \"channels\".")
10967 (license (list license:psfl license:expat))))
10968
10969(define-public python2-greenlet
10970 (package-with-python2 python-greenlet))
10971
10972(define-public python-gevent
10973 (package
10974 (name "python-gevent")
10975 (version "1.1.1")
10976 (source (origin
10977 (method url-fetch)
10978 (uri (pypi-uri "gevent" version))
10979 (sha256
10980 (base32
10981 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10982 (modules '((guix build utils)))
10983 (snippet
10984 '(begin
10985 ;; unbunding libev and c-ares
10986 (for-each delete-file-recursively '("libev" "c-ares"))
10987 ;; fixing testsuite
10988 (call-with-output-file "greentest/__init__.py" noop)
10989 (substitute* "greentest/testrunner.py"
10990 (("import util") "from . import util")
10991 (("from util import log") "from .util import log"))))))
10992 (build-system python-build-system)
10993 (propagated-inputs
10994 `(("python-greenlet" ,python-greenlet)))
10995 (native-inputs
10996 `(("python-six" ,python-six)))
10997 (inputs
10998 `(("c-ares" ,c-ares)
10999 ("libev" ,libev)))
11000 (home-page "http://www.gevent.org/")
11001 (synopsis "Coroutine-based network library")
11002 (description
11003 "gevent is a coroutine-based Python networking library that uses greenlet
11004to provide a high-level synchronous API on top of the libev event loop.")
11005 (license license:expat)))
11006
11007(define-public python2-gevent
11008 (package-with-python2 python-gevent))
11009
11010(define-public python-geventhttpclient
11011 (package
11012 (name "python-geventhttpclient")
11013 (version "1.3.1")
11014 (source (origin
11015 (method url-fetch)
11016 (uri (pypi-uri "geventhttpclient" version))
11017 (sha256
11018 (base32
11019 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
11020 (modules '((guix build utils)))
11021 (snippet
11022 '(begin
11023 ;; Delete pre-compiled files.
11024 (for-each delete-file (find-files "src/geventhttpclient"
11025 ".*\\.pyc"))
11026 #t))))
11027 (build-system python-build-system)
11028 (arguments
11029 '(#:phases
11030 (modify-phases %standard-phases
11031 (add-after 'unpack 'delete-network-tests
11032 (lambda _
11033 (delete-file "src/geventhttpclient/tests/test_client.py")
11034 #t))
11035 (delete 'check)
11036 (add-after 'install 'check
11037 (lambda* (#:key inputs outputs #:allow-other-keys)
11038 (add-installed-pythonpath inputs outputs)
11039 (zero? (system* "py.test" "src/geventhttpclient/tests" "-v")))))))
11040 (native-inputs
11041 `(("python-pytest" ,python-pytest)))
11042 (propagated-inputs
11043 `(("python-certifi" ,python-certifi)
11044 ("python-gevent" ,python-gevent)
11045 ("python-six" ,python-six)))
11046 (home-page "https://github.com/gwik/geventhttpclient")
11047 (synopsis "HTTP client library for gevent")
11048 (description "@code{python-geventhttpclient} is a high performance,
11049concurrent HTTP client library for python using @code{gevent}.")
11050 (license license:expat)))
11051
11052(define-public python2-geventhttpclient
11053 (package-with-python2 python-geventhttpclient))
11054
11055(define-public python-fastimport
11056 (package
11057 (name "python-fastimport")
11058 (version "0.9.6")
11059 (source
11060 (origin
11061 (method url-fetch)
11062 (uri (pypi-uri "fastimport" version))
11063 (sha256
11064 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
11065 (build-system python-build-system)
11066 (home-page "https://github.com/jelmer/python-fastimport")
11067 (synopsis "VCS fastimport parser and generator in Python")
11068 (description "This package provides a parser for and generator of the Git
11069@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
11070format.")
11071 (license license:gpl2+)))
11072
11073(define-public python2-fastimport
11074 (package-with-python2 python-fastimport))
11075
11076(define-public python-twisted
11077 (package
11078 (name "python-twisted")
11079 (version "16.2.0")
11080 (source (origin
11081 (method url-fetch)
11082 (uri (pypi-uri "Twisted" version ".tar.bz2"))
11083 (sha256
11084 (base32
11085 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11086 (build-system python-build-system)
11087 (arguments
11088 '(#:tests? #f)) ; FIXME: Some tests are failing.
11089 ;; #:phases
11090 ;; (modify-phases %standard-phases
11091 ;; (replace 'check
11092 ;; (lambda _
11093 ;; (zero? (system* "./bin/trial" "twisted")))))
11094 (propagated-inputs
11095 `(("python-zope-interface" ,python-zope-interface)))
11096 (home-page "https://twistedmatrix.com/")
11097 (synopsis "Asynchronous networking framework written in Python")
11098 (description
11099 "Twisted is an extensible framework for Python programming, with special
11100focus on event-based network programming and multiprotocol integration.")
11101 (license license:expat)))
11102
11103(define-public python2-twisted
11104 (package-with-python2 python-twisted))
11105
11106(define-public python-pika
11107 (package
11108 (name "python-pika")
11109 (version "0.10.0")
11110 (source
11111 (origin
11112 (method url-fetch)
11113 (uri (pypi-uri "pika" version))
11114 (sha256
11115 (base32
11116 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
11117 (build-system python-build-system)
11118 (native-inputs
11119 `(("python-pyev" ,python-pyev)
11120 ("python-tornado" ,python-tornado)
11121 ("python-twisted" ,python-twisted)))
11122 (home-page "https://pika.readthedocs.org")
11123 (synopsis "Pure Python AMQP Client Library")
11124 (description
11125 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
11126Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
11127network support library.")
11128 (license license:bsd-3)))
11129
11130(define-public python2-pika
11131 (package-with-python2 python-pika))
11132
11133(define-public python-ply
11134 (package
11135 (name "python-ply")
11136 (version "3.9")
11137 (source
11138 (origin
11139 (method url-fetch)
11140 (uri (pypi-uri "ply" version))
11141 (sha256
11142 (base32
11143 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
11144 (build-system python-build-system)
11145 (home-page "http://www.dabeaz.com/ply/")
11146 (synopsis "Python Lex & Yacc")
11147 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
11148It uses LR parsing and does extensive error checking.")
11149 (license license:bsd-3)))
11150
11151(define-public python2-ply
11152 (package-with-python2 python-ply))
11153
11154(define-public python-tabulate
11155 (package
11156 (name "python-tabulate")
11157 (version "0.7.7")
11158 (source (origin
11159 (method url-fetch)
11160 (uri (pypi-uri "tabulate" version))
11161 (sha256
11162 (base32
11163 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
11164 (build-system python-build-system)
11165 (arguments
11166 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
11167 ;; and the latest release is not tagged in the upstream repository.
11168 '(#:tests? #f))
11169 (home-page "https://bitbucket.org/astanin/python-tabulate")
11170 (synopsis "Pretty-print tabular data")
11171 (description
11172 "Tabulate is a library and command-line utility to pretty-print tabular
11173data in Python.")
11174 (license license:expat)))
11175
11176(define-public python2-tabulate
11177 (package-with-python2 python-tabulate))
11178
11179(define-public python-kazoo
11180 (package
11181 (name "python-kazoo")
11182 (version "2.2.1")
11183 (source
11184 (origin
11185 (method url-fetch)
11186 (uri (pypi-uri "kazoo" version))
11187 (sha256
11188 (base32
11189 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
11190 (build-system python-build-system)
11191 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
11192 (propagated-inputs
11193 `(("python-six" ,python-six)))
11194 (home-page "https://kazoo.readthedocs.org")
11195 (synopsis "High-level Zookeeper client library")
11196 (description
11197 "Kazoo is a Python client library for the Apache Zookeeper distributed
11198application service. It is designed to be easy to use and to avoid common
11199programming errors.")
11200 (license license:asl2.0)))
11201
11202(define-public python2-kazoo
11203 (package-with-python2 python-kazoo))
11204
11205(define-public python-pykafka
11206 (package
11207 (name "python-pykafka")
11208 (version "2.4.0")
11209 (source (origin
11210 (method url-fetch)
11211 (uri (string-append
11212 "https://pypi.python.org/packages/8b/3e/"
11213 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11214 "pykafka-" version ".tar.gz"))
11215 (sha256
11216 (base32
11217 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11218 (build-system python-build-system)
11219 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
11220 (propagated-inputs
11221 `(("python-gevent" ,python-gevent)
11222 ("python-kazoo" ,python-kazoo)
11223 ("python-tabulate" ,python-tabulate)))
11224 (inputs
11225 `(("librdkafka" ,librdkafka)))
11226 (home-page "https://pykafka.readthedocs.io/")
11227 (synopsis "Apache Kafka client for Python")
11228 (description
11229 "PyKafka is a client for the Apache Kafka distributed messaging system.
11230It includes Python implementations of Kafka producers and consumers, which
11231are optionally backed by a C extension built on librdkafka.")
11232 (license license:asl2.0)))
11233
11234(define-public python2-pykafka
11235 (package-with-python2 python-pykafka))
11236
11237(define-public python-wcwidth
11238 (package
11239 (name "python-wcwidth")
11240 (version "0.1.7")
11241 (source
11242 (origin
11243 (method url-fetch)
11244 (uri (pypi-uri "wcwidth" version))
11245 (sha256
11246 (base32
11247 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
11248 (build-system python-build-system)
11249 (home-page "https://github.com/jquast/wcwidth")
11250 (synopsis "Measure number of terminal column cells of wide-character codes")
11251 (description "Wcwidth measures the number of terminal column cells of
11252wide-character codes. It is useful for those implementing a terminal emulator,
11253or programs that carefully produce output to be interpreted by one. It is a
11254Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
11255specified in POSIX.1-2001 and POSIX.1-2008.")
11256 (license license:expat)))
11257
11258(define-public python2-wcwidth
11259 (package-with-python2 python-wcwidth))
11260
11261(define-public python2-jsonrpclib
11262 (package
11263 (name "python2-jsonrpclib")
11264 (version "0.1.7")
11265 (source (origin
11266 (method url-fetch)
11267 (uri (string-append
11268 "https://pypi.python.org/packages/source/j/jsonrpclib/"
11269 "jsonrpclib-" version ".tar.gz"))
11270 (sha256
11271 (base32
11272 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
11273 (build-system python-build-system)
11274 (arguments
11275 `(#:tests? #f
11276 #:python ,python-2))
11277 (home-page "https://github.com/joshmarshall/jsonrpclib/")
11278 (synopsis "Implementation of JSON-RPC specification for Python")
11279 (description
11280 "This library is an implementation of the JSON-RPC specification.
11281It supports both the original 1.0 specification, as well as the
11282new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
11283etc.")
11284 (license license:asl2.0)))
11285
11286(define-public python-chai
11287 (package
11288 (name "python-chai")
11289 (version "1.1.1")
11290 (source (origin
11291 (method url-fetch)
11292 (uri (pypi-uri "chai" version))
11293 (sha256
11294 (base32
11295 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
11296 (build-system python-build-system)
11297 (home-page "https://github.com/agoragames/chai")
11298 (synopsis "Mocking framework for Python")
11299 (description
11300 "Chai provides an api for mocking, stubbing and spying your python
11301objects, patterned after the Mocha library for Ruby.")
11302 (license license:bsd-3)))
11303
11304(define-public python2-chai
11305 (package-with-python2 python-chai))
11306
11307(define-public python-arrow
11308 (package
11309 (name "python-arrow")
11310 (version "0.8.0")
11311 (source (origin
11312 (method url-fetch)
11313 (uri (pypi-uri "arrow" version))
11314 (sha256
11315 (base32
11316 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
11317 (build-system python-build-system)
11318 (native-inputs
11319 `(;; For testing
11320 ("python-chai" ,python-chai)
11321 ("python-simplejson" ,python-simplejson)))
11322 (propagated-inputs
11323 `(("python-dateutil" ,python-dateutil)))
11324 (home-page "https://github.com/crsmithdev/arrow/")
11325 (synopsis "Dates and times for Python")
11326 (description
11327 "Arrow is a Python library to creating, manipulating, formatting and
11328converting dates, times, and timestamps. It implements and updates the
11329datetime type.")
11330 (license license:asl2.0)))
11331
11332(define-public python2-arrow
11333 (package-with-python2 python-arrow))
11334
11335(define-public python-inflection
11336 (package
11337 (name "python-inflection")
11338 (version "0.3.1")
11339 (source
11340 (origin (method url-fetch)
11341 (uri (pypi-uri "inflection" version))
11342 (sha256
11343 (base32
11344 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
11345 (build-system python-build-system)
11346 (native-inputs
11347 `(("python-pytest" ,python-pytest)))
11348 (home-page "https://github.com/jpvanhal/inflection")
11349 (synopsis "Python string transformation library")
11350 (description
11351 "Inflection is a string transformation library. It singularizes
11352and pluralizes English words, and transforms strings from CamelCase to
11353underscored string.")
11354 (license license:expat)))
11355
11356(define-public python2-inflection
11357 (package-with-python2 python-inflection))
11358
11359(define-public python-pylev
11360 (package
11361 (name "python-pylev")
11362 (version "1.3.0")
11363 (source (origin
11364 (method url-fetch)
11365 (uri (pypi-uri "pylev" version))
11366 (sha256
11367 (base32
11368 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
11369 (build-system python-build-system)
11370 (home-page "https://github.com/toastdriven/pylev")
11371 (synopsis "Levenshtein distance implementation in Python")
11372 (description "Pure Python Levenshtein implementation, based off the
11373Wikipedia code samples at
11374@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
11375 (license license:bsd-3)))
11376
11377(define-public python2-pylev
11378 (package-with-python2 python-pylev))
11379
11380(define-public python-cleo
11381 (package
11382 (name "python-cleo")
11383 (version "0.4.1")
11384 (source (origin
11385 (method url-fetch)
11386 (uri (pypi-uri "cleo" version))
11387 (sha256
11388 (base32
11389 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
11390 (build-system python-build-system)
11391 (native-inputs
11392 `(;; For testing
11393 ("python-mock" ,python-mock)
11394 ("python-pytest" ,python-pytest)))
11395 (propagated-inputs
11396 `(("python-psutil" ,python-psutil)
11397 ("python-pylev" ,python-pylev)))
11398 (home-page "https://github.com/sdispater/cleo")
11399 (synopsis "Command-line arguments library for Python")
11400 (description
11401 "Cleo allows you to create command-line commands with signature in
11402docstring and colored output.")
11403 (license license:expat)))
11404
11405(define-public python2-cleo
11406 (package-with-python2 python-cleo))
11407
11408(define-public python-lazy-object-proxy
11409 (package
11410 (name "python-lazy-object-proxy")
11411 (version "1.2.2")
11412 (source (origin
11413 (method url-fetch)
11414 (uri (pypi-uri "lazy-object-proxy" version))
11415 (sha256
11416 (base32
11417 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
11418 (build-system python-build-system)
11419 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
11420 (synopsis "Lazy object proxy for python")
11421 (description
11422 "Lazy object proxy is an object that wraps a callable but defers the call
11423until the object is actually required, and caches the result of said call.")
11424 (license license:bsd-2)))
11425
11426(define-public python2-lazy-object-proxy
11427 (package-with-python2 python-lazy-object-proxy))
11428
11429(define-public python-dnspython
11430 (package
11431 (name "python-dnspython")
11432 (version "1.15.0")
11433 (source (origin
11434 (method url-fetch)
11435 (uri (string-append "http://www.dnspython.org/kits/"
11436 version "/dnspython-" version ".tar.gz"))
11437 (sha256
11438 (base32
11439 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
11440 (build-system python-build-system)
11441 (arguments '(#:tests? #f)) ; XXX: requires internet access
11442 (home-page "http://www.dnspython.org")
11443 (synopsis "DNS toolkit for Python")
11444 (description
11445 "dnspython is a DNS toolkit for Python. It supports almost all record
11446types. It can be used for queries, zone transfers, and dynamic updates.
11447It supports TSIG authenticated messages and EDNS0.")
11448 (license license:expat)))
11449
11450(define-public python2-dnspython
11451 (package-with-python2 python-dnspython))
11452
11453(define-public python-email-validator
11454 (package
11455 (name "python-email-validator")
11456 (version "1.0.2")
11457 (source
11458 (origin (method url-fetch)
11459 (uri (pypi-uri "email_validator" version))
11460 (sha256
11461 (base32
11462 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
11463 (build-system python-build-system)
11464 (arguments
11465 '(#:phases
11466 (modify-phases %standard-phases
11467 (add-before 'build 'use-dnspython
11468 (lambda _
11469 (substitute* "setup.py"
11470 (("dnspython3") "dnspython"))
11471 #t)))))
11472 (propagated-inputs
11473 `(("python-dnspython" ,python-dnspython)
11474 ("python-idna" ,python-idna)))
11475 (home-page "https://github.com/JoshData/python-email-validator")
11476 (synopsis "Email address validation library for Python")
11477 (description
11478 "This library validates email address syntax and deliverability.")
11479 (license license:cc0)))
11480
11481(define-public python2-email-validator
11482 (package-with-python2 python-email-validator))
11483
11484(define-public python-ukpostcodeparser
11485 (package
11486 (name "python-ukpostcodeparser")
11487 (version "1.0.3")
11488 (source (origin
11489 (method url-fetch)
11490 (uri (pypi-uri "UkPostcodeParser" version))
11491 (sha256
11492 (base32
11493 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
11494 (build-system python-build-system)
11495 (home-page "https://github.com/hamstah/ukpostcodeparser")
11496 (synopsis "UK Postcode parser for Python")
11497 (description
11498 "This library provides the @code{parse_uk_postcode} function for
11499parsing UK postcodes.")
11500 (license license:expat)))
11501
11502(define-public python2-ukpostcodeparser
11503 (package-with-python2 python-ukpostcodeparser))
11504
11505(define-public python-faker
11506 (package
11507 (name "python-faker")
11508 (version "0.7.9")
11509 (source (origin
11510 (method url-fetch)
11511 (uri (pypi-uri "Faker" version))
11512 (sha256
11513 (base32
11514 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
11515 (patches
11516 (search-patches "python-faker-fix-build-32bit.patch"))
11517 (modules '((guix build utils)))
11518 (snippet
11519 '(begin
11520 (for-each delete-file (find-files "." "\\.pyc$"))
11521 #t))))
11522 (build-system python-build-system)
11523 (arguments
11524 '(#:phases
11525 (modify-phases %standard-phases
11526 (replace 'check
11527 (lambda _
11528 (zero? (system* "python" "-m" "unittest" "-v" "tests")))))))
11529 (native-inputs
11530 `(;; For testing
11531 ("python-email-validator" ,python-email-validator)
11532 ("python-mock" ,python-mock)
11533 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
11534 (propagated-inputs
11535 `(("python-dateutil" ,python-dateutil)
11536 ("python-six" ,python-six)))
11537 (home-page "https://github.com/joke2k/faker")
11538 (synopsis "Python package that generates fake data")
11539 (description
11540 "Faker is a Python package that generates fake data such as names,
11541addresses, and phone numbers.")
11542 (license license:expat)
11543 (properties `((python2-variant . ,(delay python2-faker))))))
11544
11545(define-public python2-faker
11546 (let ((base (package-with-python2 (strip-python2-variant
11547 python-faker))))
11548 (package
11549 (inherit base)
11550 (propagated-inputs
11551 `(("python2-ipaddress" ,python2-ipaddress)
11552 ,@(package-propagated-inputs base))))))
11553
11554(define-public python-fake-factory
11555 (package
11556 (name "python-fake-factory")
11557 (version "0.7.2")
11558 (source (origin
11559 (method url-fetch)
11560 (uri (pypi-uri "fake-factory" version))
11561 (sha256
11562 (base32
11563 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))
11564 (patches
11565 (search-patches
11566 "python-fake-factory-fix-build-32bit.patch"))))
11567 (build-system python-build-system)
11568 (arguments
11569 '(#:phases
11570 (modify-phases %standard-phases
11571 (replace 'check
11572 (lambda _
11573 (zero? (system* "python" "-m" "unittest" "-v" "faker.tests")))))))
11574 (native-inputs
11575 `(;; For testing
11576 ("python-email-validator" ,python-email-validator)
11577 ("python-mock" ,python-mock)
11578 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
11579 (propagated-inputs
11580 `(("python-dateutil" ,python-dateutil)
11581 ("python-six" ,python-six)))
11582 (home-page "https://github.com/joke2k/faker")
11583 (synopsis "Python package that generates fake data")
11584 (description
11585 "Faker is a Python package that generates fake data such as names,
11586addresses, and phone numbers.")
11587 (license license:expat)
11588 (properties `((python2-variant . ,(delay python2-fake-factory))
11589 (superseded . ,python-faker)))))
11590
11591(define-public python2-fake-factory
11592 (let ((base (package-with-python2 (strip-python2-variant
11593 python-fake-factory))))
11594 (package
11595 (inherit base)
11596 (properties `((superseded . ,python2-faker)))
11597 (propagated-inputs
11598 `(("python2-ipaddress" ,python2-ipaddress)
11599 ,@(package-propagated-inputs base))))))
11600
11601(define-public python-pyaml
11602 (package
11603 (name "python-pyaml")
11604 (version "15.8.2")
11605 (source (origin
11606 (method url-fetch)
11607 (uri (pypi-uri "pyaml" version))
11608 (sha256
11609 (base32
11610 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
11611 (build-system python-build-system)
11612 (native-inputs
11613 `(("python-unidecode" ,python-unidecode)))
11614 (propagated-inputs
11615 `(("python-pyyaml" ,python-pyyaml)))
11616 (home-page "https://github.com/mk-fg/pretty-yaml")
11617 (synopsis "YAML pretty-print library for Python")
11618 (description
11619 "pyaml is a PyYAML based python module to produce pretty and readable
11620YAML-serialized data.")
11621 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
11622
11623(define-public python2-pyaml
11624 (package-with-python2 python-pyaml))
11625
11626(define-public python-flexmock
11627 (package
11628 (name "python-flexmock")
11629 (version "0.10.2")
11630 (source (origin
11631 (method url-fetch)
11632 (uri (pypi-uri "flexmock" version))
11633 (sha256
11634 (base32
11635 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
11636 (build-system python-build-system)
11637 (home-page "https://flexmock.readthedocs.org")
11638 (synopsis "Testing library for Python")
11639 (description
11640 "flexmock is a testing library for Python that makes it easy to create
11641mocks, stubs and fakes.")
11642 (license license:bsd-3)))
11643
11644(define-public python2-flexmock
11645 (package-with-python2 python-flexmock))
11646
11647(define-public python-orator
11648 (package
11649 (name "python-orator")
11650 (version "0.8.2")
11651 (source (origin
11652 (method url-fetch)
11653 (uri (pypi-uri "orator" version))
11654 (sha256
11655 (base32
11656 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
11657 (build-system python-build-system)
11658 (arguments '(#:tests? #f)) ; no tests
11659 (propagated-inputs
11660 `(("python-arrow" ,python-arrow)
11661 ("python-blinker" ,python-blinker)
11662 ("python-cleo" ,python-cleo)
11663 ("python-faker" ,python-faker)
11664 ("python-inflection" ,python-inflection)
11665 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
11666 ("python-pyaml" ,python-pyaml)
11667 ("python-simplejson" ,python-simplejson)
11668 ("python-wrapt" ,python-wrapt)))
11669 (home-page "https://orator-orm.com/")
11670 (synopsis "ActiveRecord ORM for Python")
11671 (description
11672 "Orator provides a simple ActiveRecord-like Object Relational Mapping
11673implementation for Python.")
11674 (license license:expat)
11675 (properties `((python2-variant . ,(delay python2-orator))))))
11676
11677(define-public python2-orator
11678 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
11679 (package
11680 (inherit base)
11681 (propagated-inputs
11682 `(("python2-ipaddress" ,python2-ipaddress)
11683 ,@(package-propagated-inputs base))))))
11684
11685(define-public python-prompt-toolkit
11686 (package
11687 (name "python-prompt-toolkit")
11688 (version "1.0.9")
11689 (source
11690 (origin
11691 (method url-fetch)
11692 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
11693 (sha256
11694 (base32
11695 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
11696 (build-system python-build-system)
11697 (arguments
11698 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
11699 (propagated-inputs
11700 `(("python-wcwidth" ,python-wcwidth)
11701 ("python-six" ,python-six)
11702 ("python-pygments" ,python-pygments)))
11703 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
11704 (synopsis "Library for building command line interfaces in Python")
11705 (description
11706 "Prompt-Toolkit is a library for building interactive command line
11707interfaces in Python. It's like GNU Readline but it also features syntax
11708highlighting while typing, out-of-the-box multi-line input editing, advanced
11709code completion, incremental search, support for Chinese double-width
11710characters, mouse support, and auto suggestions.")
11711 (license license:bsd-3)))
11712
11713(define-public python2-prompt-toolkit
11714 (package-with-python2 python-prompt-toolkit))
11715
11716(define-public python-jedi
11717 (package
11718 (name "python-jedi")
11719 (version "0.9.0")
11720 (source
11721 (origin
11722 (method url-fetch)
11723 (uri (pypi-uri "jedi" version))
11724 (sha256
11725 (base32
11726 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
11727 (build-system python-build-system)
11728 (arguments
11729 ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
11730 '(#:tests? #f))
11731 (native-inputs
11732 `(("python-pytest" ,python-pytest)))
11733 (home-page "https://github.com/davidhalter/jedi")
11734 (synopsis
11735 "Autocompletion for Python that can be used for text editors")
11736 (description
11737 "Jedi is an autocompletion tool for Python that can be used for text editors.")
11738 (license license:expat)))
11739
11740(define-public python2-jedi
11741 (package-with-python2 python-jedi))
11742
11743(define-public ptpython
11744 (package
11745 (name "ptpython")
11746 (version "0.34")
11747 (source (origin
11748 (method url-fetch)
11749 (uri (pypi-uri "ptpython" version))
11750 (sha256
11751 (base32
11752 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
11753 (build-system python-build-system)
11754 (arguments
11755 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
11756 (propagated-inputs
11757 `(("python-docopt" ,python-docopt)
11758 ("python-jedi" ,python-jedi)
11759 ("python-prompt-toolkit" ,python-prompt-toolkit)
11760 ("python-pygments" ,python-pygments)))
11761 (home-page "https://github.com/jonathanslenders/ptpython")
11762 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
11763 (description
11764 "ptpython is a Python read-eval-print loop with IDE-like features.
11765It supports syntax highlighting, multiline editing, autocompletion, mouse,
11766color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
11767etc.")
11768 (license license:bsd-3)
11769 (properties `((python2-variant . ,(delay ptpython-2))))))
11770
11771(define-public ptpython-2
11772 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
11773 (package
11774 (inherit base)
11775 (name "ptpython2"))))
11776
11777(define-public python-requests-oauthlib
11778 (package
11779 (name "python-requests-oauthlib")
11780 (version "0.6.2")
11781 (source
11782 (origin
11783 (method url-fetch)
11784 (uri (pypi-uri "requests-oauthlib" version))
11785 (sha256
11786 (base32
11787 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
11788 (build-system python-build-system)
11789 (arguments
11790 `(#:phases
11791 (modify-phases %standard-phases
11792 ;; removes tests that require network access
11793 (add-before 'check 'pre-check
11794 (lambda _
11795 (delete-file "tests/test_core.py")
11796 #t)))))
11797 (native-inputs
11798 `(("python-requests-mock" ,python-requests-mock)
11799 ("python-mock" ,python-mock)))
11800 (propagated-inputs
11801 `(("python-oauthlib" ,python-oauthlib)
11802 ("python-requests" ,python-requests)))
11803 (home-page
11804 "https://github.com/requests/requests-oauthlib")
11805 (synopsis
11806 "OAuthlib authentication support for Requests")
11807 (description
11808 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
11809provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
11810 (license license:isc)))
11811
11812(define-public python2-requests-oauthlib
11813 (package-with-python2 python-requests-oauthlib))
11814
11815(define-public python-stem
11816 (package
11817 (name "python-stem")
11818 (version "1.5.4")
11819 (source
11820 (origin
11821 (method url-fetch)
11822 (uri (pypi-uri "stem" version))
11823 (sha256
11824 (base32
11825 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
11826 (build-system python-build-system)
11827 (arguments
11828 `(#:phases
11829 (modify-phases %standard-phases
11830 (replace 'check
11831 (lambda _
11832 (zero? (system* "./run_tests.py" "--unit")))))))
11833 (native-inputs
11834 `(("python-mock" ,python-mock)
11835 ("python-pep8" ,python-pep8)
11836 ("python-pyflakes" ,python-pyflakes)))
11837 (home-page "https://stem.torproject.org/")
11838 (synopsis
11839 "Python controller library that allows applications to interact with Tor")
11840 (description
11841 "Stem is a Python controller library for Tor. With it you can use Tor's
11842control protocol to script against the Tor process and read descriptor data
11843relays publish about themselves.")
11844 (license license:lgpl3)))
11845
11846(define-public python2-stem
11847 (package-with-python2 python-stem))
11848
11849(define-public python-pyserial
11850 (package
11851 (name "python-pyserial")
11852 (version "3.1.1")
11853 (source
11854 (origin
11855 (method url-fetch)
11856 (uri (pypi-uri "pyserial" version))
11857 (sha256
11858 (base32
11859 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
11860 (build-system python-build-system)
11861 (arguments
11862 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
11863 ;; #:phases
11864 ;; (modify-phases %standard-phases
11865 ;; (replace 'check
11866 ;; (lambda _
11867 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
11868 (home-page
11869 "https://github.com/pyserial/pyserial")
11870 (synopsis "Python Serial Port Bindings")
11871 (description "@code{pyserial} provide serial port bindings for Python. It
11872supports different byte sizes, stop bits, parity and flow control with RTS/CTS
11873and/or Xon/Xoff. The port is accessed in RAW mode.")
11874 (license license:bsd-3)))
11875
11876(define-public python2-pyserial
11877 (package-with-python2 python-pyserial))
11878
11879(define-public python-kivy
11880 (package
11881 (name "python-kivy")
11882 (version "1.9.1")
11883 (source
11884 (origin
11885 (method url-fetch)
11886 (uri (pypi-uri "kivy" version))
11887 (file-name (string-append name "-" version ".tar.gz"))
11888 (sha256
11889 (base32
11890 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11891 (build-system python-build-system)
11892 (arguments
11893 `(#:tests? #f ; Tests require many optional packages
11894 #:phases
11895 (modify-phases %standard-phases
11896 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11897 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11898 (lambda* (#:key inputs #:allow-other-keys)
11899 (setenv "KIVY_SDL2_PATH"
11900 (string-append (assoc-ref inputs "sdl-union")
11901 "/include/SDL2"))
11902 #t)))))
11903 (native-inputs
11904 `(("pkg-config" ,pkg-config)
11905 ("python-cython" ,python-cython)))
11906 (inputs
11907 `(("gstreamer" ,gstreamer)
11908 ("mesa" ,mesa)
11909 ("sdl-union"
11910 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11911 (home-page "http://kivy.org")
11912 (synopsis
11913 "Multitouch application framework")
11914 (description
11915 "A software library for rapid development of
11916hardware-accelerated multitouch applications.")
11917 (license license:expat)))
11918
11919(define-public python2-kivy
11920 (package-with-python2 python-kivy))
11921
11922(define-public python-kivy-next
11923 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11924 (revision "1"))
11925 (package (inherit python-kivy)
11926 (name "python-kivy-next")
11927 (version (string-append "1.9.1-" revision "."
11928 (string-take commit 7)))
11929 (source
11930 (origin
11931 (method git-fetch)
11932 (uri (git-reference
11933 (url "https://github.com/kivy/kivy")
11934 (commit commit)))
11935 (file-name (string-append name "-" version "-checkout"))
11936 (sha256
11937 (base32
11938 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11939
11940(define-public python2-kivy-next
11941 (package-with-python2 python-kivy-next))
11942
11943(define-public python-binaryornot
11944 (package
11945 (name "python-binaryornot")
11946 (version "0.4.0")
11947 (source (origin
11948 (method url-fetch)
11949 (uri (pypi-uri "binaryornot" version))
11950 (sha256
11951 (base32
11952 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11953 (build-system python-build-system)
11954 (propagated-inputs
11955 `(("python-chardet" ,python-chardet)
11956 ("python-hypothesis" ,python-hypothesis)))
11957 (home-page "https://github.com/audreyr/binaryornot")
11958 (synopsis "Package to check if a file is binary or text")
11959 (description "Ultra-lightweight pure Python package to check if a file is
11960binary or text.")
11961 (license license:bsd-3)
11962 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11963
11964(define-public python2-binaryornot
11965 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11966 (package (inherit base)
11967 (propagated-inputs
11968 `(("python2-enum34" ,python2-enum34)
11969 ,@(package-propagated-inputs base))))))
11970
11971(define-public python-nltk
11972 (package
11973 (name "python-nltk")
11974 (version "3.2.1")
11975 (source (origin
11976 (method url-fetch)
11977 (uri (pypi-uri "nltk" version))
11978 (sha256
11979 (base32
11980 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11981 (build-system python-build-system)
11982 (arguments
11983 '(;; The tests require some extra resources to be downloaded.
11984 ;; TODO Try packaging these resources.
11985 #:tests? #f))
11986 (home-page "http://nltk.org/")
11987 (synopsis "Natural Language Toolkit")
11988 (description "It provides interfaces to over 50 corpora and lexical
11989resources such as WordNet, along with a suite of text processing libraries
11990for classification, tokenization, stemming, tagging, parsing, and semantic
11991reasoning, wrappers for natural language processing libraries.")
11992 (license license:asl2.0)))
11993
11994(define-public python2-nltk
11995 (package-with-python2 python-nltk))
11996
11997(define-public python-pymongo
11998 (package
11999 (name "python-pymongo")
12000 (version "3.3.0")
12001 (source (origin
12002 (method url-fetch)
12003 (uri (pypi-uri "pymongo" version))
12004 (sha256
12005 (base32
12006 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
12007 (build-system python-build-system)
12008 (propagated-inputs
12009 `(("python-certifi" ,python-certifi)))
12010 (home-page "https://github.com/mongodb/mongo-python-driver")
12011 (synopsis "Python driver for MongoDB")
12012 (description "Python driver for MongoDB.")
12013 (license license:asl2.0)))
12014
12015(define-public python2-pymongo
12016 (package-with-python2 python-pymongo))
12017
12018(define-public python-sh
12019 (package
12020 (name "python-sh")
12021 (version "1.11")
12022 (source (origin
12023 (method url-fetch)
12024 (uri (pypi-uri "sh" version))
12025 (sha256
12026 (base32
12027 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
12028 (build-system python-build-system)
12029 (arguments
12030 `(#:tests? #f)) ; no tests
12031 (home-page "https://github.com/amoffat/sh")
12032 (synopsis "Python subprocess interface")
12033 (description "Abstracts process invocation by providing a function
12034interface for programs.")
12035 (license license:expat)))
12036
12037(define-public python2-sh
12038 (package-with-python2 python-sh))
12039
12040(define-public python-consul
12041 (package
12042 (name "python-consul")
12043 (version "0.6.1")
12044 (source
12045 (origin
12046 (method url-fetch)
12047 (uri (pypi-uri "python-consul" version))
12048 (sha256
12049 (base32
12050 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
12051 (build-system python-build-system)
12052 (native-inputs
12053 `(("python-pytest" ,python-pytest)))
12054 (propagated-inputs
12055 `(("python-requests" ,python-requests)
12056 ("python-six" ,python-six)))
12057 (home-page "https://github.com/cablehead/python-consul")
12058 (synopsis "Python client for Consul")
12059 (description
12060 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
12061discovery, monitoring and configuration.")
12062 (license license:expat)))
12063
12064(define-public python2-consul
12065 (package-with-python2 python-consul))
12066
12067(define-public python-schematics
12068 (package
12069 (name "python-schematics")
12070 (version "1.1.1")
12071 (source
12072 (origin
12073 (method url-fetch)
12074 (uri (string-append
12075 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
12076 (file-name (string-append name "-" version ".tar.gz"))
12077 (sha256
12078 (base32
12079 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
12080 (build-system python-build-system)
12081 (propagated-inputs
12082 `(("python-six" ,python-six)))
12083 (arguments
12084 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
12085 ; version requirements (eg python-coveralls)
12086 (home-page "https://github.com/schematics/schematics")
12087 (synopsis "Python Data Structures for Humans")
12088 (description "Python Data Structures for Humans.")
12089 (license license:bsd-3)))
12090
12091(define-public python2-schematics
12092 (package-with-python2 python-schematics))
12093
12094(define-public python-publicsuffix
12095 (package
12096 (name "python-publicsuffix")
12097 (version "1.1.0")
12098 (source (origin
12099 (method url-fetch)
12100 (uri (pypi-uri "publicsuffix" version))
12101 (sha256
12102 (base32
12103 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
12104 (build-system python-build-system)
12105 (arguments
12106 `(#:tests? #f)) ; tests use the internet
12107 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
12108 (synopsis "Get suffix for a domain name")
12109 (description "Get a public suffix for a domain name using the Public Suffix
12110List.")
12111 (license license:expat)))
12112
12113(define-public python2-publicsuffix
12114 (package-with-python2 python-publicsuffix))
12115
12116(define-public python-publicsuffix2
12117 (package
12118 (name "python-publicsuffix2")
12119 (version "2.20160818")
12120 (source
12121 (origin
12122 (method url-fetch)
12123 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12124 (sha256
12125 (base32
12126 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
12127 (build-system python-build-system)
12128 (arguments
12129 '(#:tests? #f)) ; The test suite requires network access.
12130 (home-page "https://github.com/pombredanne/python-publicsuffix2")
12131 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
12132 (description "Get a public suffix for a domain name using the Public Suffix
12133List. Forked from and using the same API as the publicsuffix package.")
12134 (license (list license:expat license:mpl2.0))))
12135
12136(define-public python2-publicsuffix2
12137 (package-with-python2 python-publicsuffix2))
12138
12139(define-public python-url
12140 (package
12141 (name "python-url")
12142 (version "0.2.0")
12143 (source (origin
12144 (method url-fetch)
12145 (uri (pypi-uri "url" version))
12146 (sha256
12147 (base32
12148 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
12149 (build-system python-build-system)
12150 (propagated-inputs
12151 `(("python-publicsuffix" ,python-publicsuffix)))
12152 (native-inputs
12153 `(("python-coverage" ,python-coverage)
12154 ("python-nose" ,python-nose)))
12155 (arguments
12156 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
12157 (home-page "https://github.com/seomoz/url-py")
12158 (synopsis "URL Parsing")
12159 (description "Library for parsing urls.")
12160 (license license:expat)
12161 (properties `((python2-variant . ,(delay python2-url))))))
12162
12163(define-public python2-url
12164 (let ((base (package-with-python2 (strip-python2-variant python-url))))
12165 (package (inherit base)
12166 (propagated-inputs
12167 `(("python2-publicsuffix" ,python2-publicsuffix))))))
12168
12169(define-public python-freezegun
12170 (package
12171 (name "python-freezegun")
12172 (version "0.3.8")
12173 (source
12174 (origin
12175 (method url-fetch)
12176 (uri (pypi-uri "freezegun" version))
12177 (sha256
12178 (base32
12179 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
12180 (build-system python-build-system)
12181 (native-inputs
12182 `(("python-mock" ,python-mock)
12183 ("python-nose" ,python-nose)
12184 ("python-coverage" ,python-coverage)))
12185 (propagated-inputs
12186 `(("python-six" ,python-six)
12187 ("python-dateutil" ,python-dateutil)))
12188 (arguments
12189 `(#:phases (modify-phases %standard-phases
12190 ;; The tests are normally executed via `make test`, but the PyPi
12191 ;; package does not include the Makefile.
12192 (replace 'check
12193 (lambda _
12194 (zero? (system* "nosetests" "./tests/")))))))
12195 (home-page "https://github.com/spulec/freezegun")
12196 (synopsis "Test utility for mocking the datetime module")
12197 (description
12198 "FreezeGun is a library that allows your python tests to travel through
12199time by mocking the datetime module.")
12200 (license license:asl2.0)))
12201
12202(define-public python2-freezegun
12203 (package-with-python2 python-freezegun))
12204
12205
12206(define-public python-odfpy
12207 (package
12208 (name "python-odfpy")
12209 (version "1.3.3")
12210 (source (origin
12211 (method url-fetch)
12212 (uri (pypi-uri "odfpy" version))
12213 (sha256
12214 (base32
12215 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
12216 (arguments
12217 `(#:modules ((srfi srfi-1)
12218 (guix build python-build-system)
12219 (guix build utils))
12220 #:phases
12221 (modify-phases %standard-phases
12222 (replace 'check
12223 ;; The test runner invokes python2 and python3 for test*.py.
12224 ;; To avoid having both in inputs, we replicate it here.
12225 (lambda _
12226 (every (lambda (test-file)
12227 (zero? (system* "python" test-file)))
12228 (find-files "tests" "^test.*\\.py$")))))))
12229 (build-system python-build-system)
12230 (home-page "https://github.com/eea/odfpy")
12231 (synopsis "Python API and tools to manipulate OpenDocument files")
12232 (description "Collection of libraries and utility programs written in
12233Python to manipulate OpenDocument 1.2 files.")
12234 (license
12235 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
12236 ;; number of files with other licenses.
12237 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
12238
12239(define-public python2-odfpy
12240 (package-with-python2 python-odfpy))
12241
12242(define-public python-cachecontrol
12243 (package
12244 (name "python-cachecontrol")
12245 (version "0.11.6")
12246 (source
12247 (origin
12248 (method url-fetch)
12249 ;; Pypi does not have tests.
12250 (uri (string-append
12251 "https://github.com/ionrock/cachecontrol/archive/v"
12252 version ".tar.gz"))
12253 (file-name (string-append name "-" version ".tar.gz"))
12254 (sha256
12255 (base32
12256 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
12257 (build-system python-build-system)
12258 (arguments
12259 `(#:phases
12260 (modify-phases %standard-phases
12261 (replace 'check
12262 (lambda _
12263 ;; Drop test that requires internet access.
12264 (delete-file "tests/test_regressions.py")
12265 (setenv "PYTHONPATH"
12266 (string-append (getcwd) "/build/lib:"
12267 (getenv "PYTHONPATH")))
12268 (zero? (system* "py.test" "-vv")))))))
12269 (native-inputs
12270 `(("python-pytest" ,python-pytest)
12271 ("python-redis" ,python-redis)
12272 ("python-webtest" ,python-webtest)
12273 ("python-mock" ,python-mock)))
12274 (propagated-inputs
12275 `(("python-requests" ,python-requests)
12276 ("python-lockfile" ,python-lockfile)))
12277 (home-page "https://github.com/ionrock/cachecontrol")
12278 (synopsis "The httplib2 caching algorithms for use with requests")
12279 (description "CacheControl is a port of the caching algorithms in
12280@code{httplib2} for use with @code{requests} session objects.")
12281 (license license:asl2.0)))
12282
12283(define-public python2-cachecontrol
12284 (package-with-python2 python-cachecontrol))
12285
12286(define-public python-lit
12287 (package
12288 (name "python-lit")
12289 (version "0.5.0")
12290 (source
12291 (origin
12292 (method url-fetch)
12293 (uri (pypi-uri "lit" version))
12294 (sha256
12295 (base32
12296 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
12297 (build-system python-build-system)
12298 (home-page "http://llvm.org/")
12299 (synopsis "LLVM Software Testing Tool")
12300 (description "@code{lit} is a portable tool for executing LLVM and Clang
12301style test suites, summarizing their results, and providing indication of
12302failures.")
12303 (license license:ncsa)))
12304
12305(define-public python2-lit
12306 (package-with-python2 python-lit))
12307
12308(define-public python-pytest-pep8
12309 (package
12310 (name "python-pytest-pep8")
12311 (version "1.0.6")
12312 (source (origin
12313 (method url-fetch)
12314 (uri (pypi-uri "pytest-pep8" version))
12315 (sha256
12316 (base32
12317 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
12318 (build-system python-build-system)
12319 (arguments
12320 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
12321 (native-inputs
12322 `(("python-pytest" ,python-pytest)))
12323 (propagated-inputs
12324 `(("python-pep8" ,python-pep8)))
12325 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
12326 (synopsis "Py.test plugin to check PEP8 requirements")
12327 (description "Pytest plugin for checking PEP8 compliance.")
12328 (license license:expat)))
12329
12330(define-public python2-pytest-pep8
12331 (package-with-python2 python-pytest-pep8))
12332
12333(define-public python-pytest-flakes
12334 (package
12335 (name "python-pytest-flakes")
12336 (version "1.0.1")
12337 (source (origin
12338 (method url-fetch)
12339 (uri (pypi-uri "pytest-flakes" version))
12340 (sha256
12341 (base32
12342 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
12343 (build-system python-build-system)
12344 (arguments
12345 `(#:phases
12346 (modify-phases %standard-phases
12347 (delete 'check)
12348 (add-after 'install 'check
12349 (lambda* (#:key outputs inputs #:allow-other-keys)
12350 ;; It's easier to run tests after install.
12351 ;; Make installed package available for running the tests
12352 (add-installed-pythonpath inputs outputs)
12353 (zero? (system* "py.test" "-vv")))))))
12354 (native-inputs
12355 `(("python-coverage" ,python-coverage)
12356 ("python-pytest" ,python-pytest)
12357 ("python-pytest-cache" ,python-pytest-cache)
12358 ("python-pytest-pep8" ,python-pytest-pep8)))
12359 (propagated-inputs
12360 `(("python-pyflakes" ,python-pyflakes)))
12361 (home-page "https://github.com/fschulze/pytest-flakes")
12362 (synopsis "Py.test plugin to check source code with pyflakes")
12363 (description "Pytest plugin for checking Python source code with pyflakes.")
12364 (license license:expat)))
12365
12366(define-public python2-pytest-flakes
12367 (package-with-python2 python-pytest-flakes))
12368
12369(define-public python-natsort
12370 (package
12371 (name "python-natsort")
12372 (version "5.0.2")
12373 (source (origin
12374 (method url-fetch)
12375 (uri (pypi-uri "natsort" version))
12376 (sha256
12377 (base32
12378 "0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
12379 (build-system python-build-system)
12380 (arguments
12381 `(#:phases
12382 (modify-phases %standard-phases
12383 (add-before 'check 'set-cachedir
12384 ;; Tests require write access to $HOME by default
12385 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
12386 (native-inputs
12387 `(("python-hypothesis" ,python-hypothesis)
12388 ("python-pytest-cache" ,python-pytest-cache)
12389 ("python-pytest-cov" ,python-pytest-cov)
12390 ("python-pytest-flakes" ,python-pytest-flakes)
12391 ("python-pytest-pep8" ,python-pytest-pep8)))
12392 (propagated-inputs ; TODO: Add python-fastnumbers.
12393 `(("python-pyicu" ,python-pyicu)))
12394 (home-page "https://github.com/SethMMorton/natsort")
12395 (synopsis "Natural sorting for python and shell")
12396 (description
12397 "Natsort lets you apply natural sorting on lists instead of
12398lexicographical. If you use the built-in @code{sorted} method in python
12399on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
12400returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
12401function @code{natsorted} that identifies numbers and sorts them separately
12402from strings. It can also sort version numbers, real numbers, mixed types
12403and more, and comes with a shell command @command{natsort} that exposes this
12404functionality in the command line.")
12405 (license license:expat)
12406 (properties `((python2-variant . ,(delay python2-natsort))))))
12407
12408(define-public python2-natsort
12409 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
12410 (package (inherit base)
12411 (native-inputs
12412 `(("python2-pathlib" ,python2-pathlib)
12413 ("python2-mock" ,python2-mock)
12414 ("python2-enum34" ,python2-enum34)
12415 ,@(package-native-inputs base))))))
12416
12417(define-public python-glances
12418 (package
12419 (name "python-glances")
12420 (version "2.7.1")
12421 (source
12422 (origin
12423 (method url-fetch)
12424 (uri (pypi-uri "Glances" version))
12425 (sha256
12426 (base32
12427 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
12428 (build-system python-build-system)
12429 (propagated-inputs
12430 `(("python-psutil" ,python-psutil)))
12431 (home-page
12432 "https://github.com/nicolargo/glances")
12433 (synopsis
12434 "A cross-platform curses-based monitoring tool")
12435 (description
12436 "Glances is a curses-based monitoring tool for a wide variety of platforms.
12437Glances uses the PsUtil library to get information from your system. It monitors
12438CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
12439 (license license:lgpl3+)))
12440
12441(define-public python2-glances
12442 (package-with-python2 python-glances))
12443
12444(define-public python-graphql-core
12445 (package
12446 (name "python-graphql-core")
12447 (version "0.5.3")
12448 (source
12449 (origin
12450 (method url-fetch)
12451 (uri (pypi-uri "graphql-core" version))
12452 (sha256
12453 (base32
12454 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
12455 (build-system python-build-system)
12456 (arguments
12457 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
12458 #:phases
12459 (modify-phases %standard-phases
12460 (add-after 'unpack 'patch-hardcoded-version
12461 (lambda _ (substitute*
12462 "setup.py"
12463 (("'gevent==1.1rc1'") "'gevent'"))
12464 #t)))))
12465 (native-inputs
12466 `(("python-gevent" ,python-gevent)
12467 ("python-mock" ,python-mock)
12468 ("python-pytest-mock" ,python-pytest-mock)))
12469 (propagated-inputs
12470 `(("python-promise" ,python-promise)
12471 ("python-six" ,python-six)))
12472 (home-page "https://github.com/graphql-python/graphql-core")
12473 (synopsis "GraphQL implementation for Python")
12474 (description
12475 "GraphQL implementation for Python. GraphQL is a data query language and
12476runtime designed and used to request and deliver data to mobile and web apps.
12477This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
12478to Python.")
12479 (license license:expat)))
12480
12481(define-public python2-graphql-core
12482 (package-with-python2 python-graphql-core))
12483
12484(define-public python-graphql-relay
12485 (package
12486 (name "python-graphql-relay")
12487 (version "0.4.5")
12488 (source
12489 (origin
12490 (method url-fetch)
12491 (uri (pypi-uri "graphql-relay" version))
12492 (sha256
12493 (base32
12494 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
12495 (build-system python-build-system)
12496 (native-inputs
12497 `(("python-pytest" ,python-pytest)))
12498 (propagated-inputs
12499 `(("python-graphql-core" ,python-graphql-core)
12500 ("python-promise" ,python-promise)
12501 ("python-six" ,python-six)))
12502 (home-page "https://github.com/graphql-python/graphql-relay-py")
12503 (synopsis "Relay implementation for Python")
12504 (description
12505 "This is a library to allow the easy creation of Relay-compliant servers
12506using the GraphQL Python reference implementation of a GraphQL server. It
12507should be noted that the code is a exact port of the original
12508@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
12509from Facebook.")
12510 (license license:expat)))
12511
12512(define-public python2-graphql-relay
12513 (package-with-python2 python-graphql-relay))
12514
12515(define-public python-graphene
12516 (package
12517 (name "python-graphene")
12518 (version "0.10.2")
12519 (source
12520 (origin
12521 (method url-fetch)
12522 (uri (pypi-uri "graphene" version))
12523 (sha256
12524 (base32
12525 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
12526 (build-system python-build-system)
12527 (native-inputs
12528 `(("python-django-filter" ,python-django-filter)
12529 ("python-mock" ,python-mock)
12530 ("python-psycopg2" ,python-psycopg2)
12531 ("python-pytest-django" ,python-pytest-django)
12532 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
12533 (propagated-inputs
12534 `(("python-graphql-core" ,python-graphql-core)
12535 ("python-graphql-relay" ,python-graphql-relay)
12536 ("python-iso8601" ,python-iso8601)
12537 ("python-promise" ,python-promise)
12538 ("python-six" ,python-six)))
12539 (home-page "http://graphene-python.org/")
12540 (synopsis "GraphQL Framework for Python")
12541 (description
12542 "Graphene is a Python library for building GraphQL schemas/types.
12543A GraphQL schema describes your data model, and provides a GraphQL server
12544with an associated set of resolve methods that know how to fetch data.")
12545 (properties `((python2-variant . ,(delay python2-graphene))))
12546 (license license:expat)))
12547
12548(define-public python2-graphene
12549 (let ((base (package-with-python2
12550 (strip-python2-variant python-graphene))))
12551 (package (inherit base)
12552 (native-inputs
12553 `(("python2-sqlalchemy" ,python2-sqlalchemy)
12554 ,@(package-native-inputs base))))))
12555
12556(define-public python-nautilus
12557 (package
12558 (name "python-nautilus")
12559 (version "0.4.9")
12560 (source
12561 (origin
12562 (method url-fetch)
12563 (uri (pypi-uri "nautilus" version))
12564 (sha256
12565 (base32
12566 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
12567 (build-system python-build-system)
12568 (arguments `(#:tests? #f)) ; fails to import test modules
12569 (propagated-inputs
12570 `(("python-bcrypt" ,python-bcrypt)
12571 ("python-click" ,python-click)
12572 ("python-consul" ,python-consul)
12573 ("python-graphene" ,python-graphene)
12574 ("python-jinja2" ,python-jinja2)
12575 ("python-peewee" ,python-peewee)
12576 ("python-pika" ,python-pika)
12577 ("python-tornado" ,python-tornado)
12578 ("python-wtforms" ,python-wtforms)))
12579 (native-inputs
12580 `(("python-nose2" ,python-nose2)))
12581 (home-page "https://github.com/AlecAivazis/nautilus")
12582 (synopsis "Library for creating microservice applications")
12583 (description
12584 "Nautilus is a framework for flux based microservices that looks to
12585provide extendible implementations of common aspects of a cloud so that you can
12586focus on building massively scalable web applications.")
12587 (license license:expat)))
12588
12589(define-public python-snowballstemmer
12590 (package
12591 (name "python-snowballstemmer")
12592 (version "1.2.1")
12593 (source (origin
12594 (method url-fetch)
12595 (uri (pypi-uri "snowballstemmer" version))
12596 (sha256
12597 (base32
12598 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
12599 (build-system python-build-system)
12600 (arguments
12601 `(;; No tests exist
12602 #:tests? #f))
12603 (home-page "https://github.com/shibukawa/snowball_py")
12604 (synopsis "Snowball stemming library collection for Python")
12605 (description "This package provides 16 word stemmer algorithms generated
12606from Snowball algorithms. It includes the 15 original ones plus the Poerter
12607English stemmer.")
12608 (license license:bsd-3)))
12609
12610(define-public python2-snowballstemmer
12611 (package-with-python2 python-snowballstemmer))
12612
12613(define-public python-sphinx-cloud-sptheme
12614 (package
12615 (name "python-sphinx-cloud-sptheme")
12616 (version "1.8.0")
12617 (source (origin
12618 (method url-fetch)
12619 (uri (pypi-uri "cloud_sptheme" version))
12620 (sha256
12621 (base32
12622 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
12623 (build-system python-build-system)
12624 ;; FIXME: The 'pypi' release archive does not contain tests.
12625 (arguments '(#:tests? #f))
12626 (native-inputs
12627 `(("python-sphinx" ,python-sphinx)))
12628 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
12629 (synopsis "'Cloud' theme for Sphinx documenter")
12630 (description "This package contains the \"Cloud\" theme for Sphinx and some
12631related extensions.")
12632 (license license:bsd-3)))
12633
12634(define-public python2-sphinx-cloud-sptheme
12635 (package-with-python2 python-sphinx-cloud-sptheme))
12636
12637(define-public python-sphinx-alabaster-theme
12638 (package
12639 (name "python-sphinx-alabaster-theme")
12640 (version "0.7.9")
12641 (source (origin
12642 (method url-fetch)
12643 (uri (pypi-uri "alabaster" version))
12644 (sha256
12645 (base32
12646 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
12647 (build-system python-build-system)
12648 (propagated-inputs
12649 `(("python-pygments" ,python-pygments)))
12650 (home-page "https://alabaster.readthedocs.io/")
12651 (synopsis "Configurable sidebar-enabled Sphinx theme")
12652 (description "Alabaster is a visually (c)lean, responsive, configurable
12653theme for the Sphinx documentation system. It's the default theme of Sphinx.")
12654 (license license:bsd-3)))
12655
12656(define-public python2-sphinx-alabaster-theme
12657 (package-with-python2 python-sphinx-alabaster-theme))
12658
12659(define-public python-betamax
12660 (package
12661 (name "python-betamax")
12662 (version "0.8.0")
12663 (source
12664 (origin
12665 (method url-fetch)
12666 (uri (pypi-uri "betamax" version))
12667 (sha256
12668 (base32
12669 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
12670 (build-system python-build-system)
12671 (arguments
12672 '(;; Many tests fail because they require networking.
12673 #:tests? #f))
12674 (propagated-inputs
12675 `(("python-requests" ,python-requests)))
12676 (home-page "https://github.com/sigmavirus24/betamax")
12677 (synopsis "Record HTTP interactions with python-requests")
12678 (description "Betamax will record your test suite's HTTP interactions and
12679replay them during future tests. It is designed to work with python-requests.")
12680 (license license:expat)))
12681
12682(define-public python2-betamax
12683 (package-with-python2 python-betamax))
12684
12685(define-public python-s3transfer
12686 (package
12687 (name "python-s3transfer")
12688 (version "0.1.10")
12689 (source (origin
12690 (method url-fetch)
12691 (uri (pypi-uri "s3transfer" version))
12692 (sha256
12693 (base32
12694 "1h8g9bknvxflxkpbnxyfxmk8pvgykbbk9ljdvhqh6z4vjc2926ms"))))
12695 (build-system python-build-system)
12696 (arguments
12697 `(#:phases
12698 (modify-phases %standard-phases
12699 (replace 'check
12700 (lambda _
12701 ;; 7 of the 'integration' tests require network access or login
12702 ;; credentials.
12703 (zero? (system* "nosetests" "--exclude=integration")))))))
12704 (native-inputs
12705 `(("python-docutils" ,python-docutils)
12706 ("python-mock" ,python-mock)
12707 ("python-nose" ,python-nose)))
12708 (propagated-inputs
12709 `(("python-botocore" ,python-botocore)))
12710 (synopsis "Amazon S3 Transfer Manager")
12711 (description "S3transfer is a Python library for managing Amazon S3
12712transfers.")
12713 (home-page "https://github.com/boto/s3transfer")
12714 (license license:asl2.0)
12715 (properties `((python2-variant . ,(delay python2-s3transfer))))))
12716
12717(define-public python2-s3transfer
12718 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
12719 (package
12720 (inherit base)
12721 (native-inputs
12722 `(("python2-futures" ,python2-futures)
12723 ,@(package-native-inputs base))))))
12724
12725(define-public python-setproctitle
12726(package
12727 (name "python-setproctitle")
12728 (version "1.1.10")
12729 (source
12730 (origin
12731 (method url-fetch)
12732 (uri (pypi-uri "setproctitle" version))
12733 (sha256
12734 (base32
12735 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
12736 (build-system python-build-system)
12737 (arguments
12738 '(#:phases
12739 (modify-phases %standard-phases
12740 (add-before 'check 'patch-Makefile
12741 ;; Stricly this is only required for the python2 variant.
12742 ;; But adding a phase in an inherited package seems to be
12743 ;; cumbersum. So we patch even for python3.
12744 (lambda _
12745 (let ((nose (assoc-ref %build-inputs "python2-nose")))
12746 (when nose
12747 (substitute* "Makefile"
12748 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
12749 (string-append nose "/bin/nosetests "))))
12750 #t)))
12751 (replace 'check
12752 (lambda _
12753 (setenv "PYTHON" (or (which "python3") (which "python")))
12754 (setenv "PYCONFIG" (or (which "python3-config")
12755 (which "python-config")))
12756 (setenv "CC" "gcc")
12757 ;; No need to extend PYTHONPATH to find the built package, since
12758 ;; the Makefile will build anyway
12759 (zero? (system* "make" "check")))))))
12760 (native-inputs
12761 `(("procps" ,procps))) ; required for tests
12762 (home-page
12763 "https://github.com/dvarrazzo/py-setproctitle")
12764 (synopsis
12765 "Setproctitle implementation for Python to customize the process title")
12766 (description "The library allows a process to change its title (as displayed
12767by system tools such as ps and top).
12768
12769Changing the title is mostly useful in multi-process systems, for
12770example when a master process is forked: changing the children's title
12771allows to identify the task each process is busy with. The technique
12772is used by PostgreSQL and the OpenSSH Server for example.")
12773 (license license:bsd-3)
12774 (properties `((python2-variant . ,(delay python2-setproctitle))))))
12775
12776(define-public python2-setproctitle
12777 (let ((base (package-with-python2
12778 (strip-python2-variant python-setproctitle))))
12779 (package
12780 (inherit base)
12781 (native-inputs `(("python2-nose" ,python2-nose)
12782 ,@(package-native-inputs base))))))
12783
12784(define-public python-validictory
12785 (package
12786 (name "python-validictory")
12787 (version "1.0.1")
12788 (source
12789 (origin
12790 (method url-fetch)
12791 (uri (pypi-uri "validictory" version))
12792 (sha256
12793 (base32
12794 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
12795 (build-system python-build-system)
12796 (arguments
12797 '(#:phases
12798 (modify-phases %standard-phases
12799 (add-after 'unpack 'bootstrap
12800 ;; Move the tests out of the package directory to avoid
12801 ;; packaging them.
12802 (lambda* _
12803 (rename-file "validictory/tests" "tests")
12804 (delete-file "tests/__init__.py")))
12805 (replace 'check
12806 (lambda _
12807 ;; Extend PYTHONPATH so the built package will be found.
12808 (setenv "PYTHONPATH"
12809 (string-append (getcwd) "/build/lib:"
12810 (getenv "PYTHONPATH")))
12811 (zero? (system* "py.test" "-vv" )))))))
12812 (native-inputs
12813 `(("python-pytest" ,python-pytest)))
12814 (home-page
12815 "https://github.com/jamesturk/validictory")
12816 (synopsis "General purpose Python data validator")
12817 (description "It allows validation of arbitrary Python data structures.
12818
12819The schema format is based on the JSON Schema
12820proposal (http://json-schema.org), so combined with json the library is also
12821useful as a validator for JSON data.")
12822 (license license:expat)))
12823
12824(define-public python2-validictory
12825 (package-with-python2 python-validictory))
12826
12827(define-public python-aniso8601
12828 (package
12829 (name "python-aniso8601")
12830 (version "1.1.0")
12831 (source
12832 (origin
12833 (method url-fetch)
12834 (uri (pypi-uri "aniso8601" version))
12835 (sha256
12836 (base32
12837 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
12838 (build-system python-build-system)
12839 (propagated-inputs
12840 `(("python-dateutil" ,python-dateutil)))
12841 (home-page
12842 "https://bitbucket.org/nielsenb/aniso8601")
12843 (synopsis
12844 "Python library for parsing ISO 8601 strings")
12845 (description
12846 "This package contains a library for parsing ISO 8601 datetime strings.")
12847 (license license:bsd-3)))
12848
12849(define-public python-flask-restful
12850 (package
12851 (name "python-flask-restful")
12852 (version "0.3.5")
12853 (source
12854 (origin
12855 (method url-fetch)
12856 (uri (pypi-uri "Flask-RESTful" version))
12857 (sha256
12858 (base32
12859 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
12860 (build-system python-build-system)
12861 (propagated-inputs
12862 `(("python-aniso8601" ,python-aniso8601)
12863 ("python-flask" ,python-flask)
12864 ("python-pycrypto" ,python-pycrypto)
12865 ("python-pytz" ,python-pytz)))
12866 (native-inputs
12867 `(;; Optional dependency of Flask. Tests need it.
12868 ("python-blinker" ,python-blinker)
12869 ("python-mock" ,python-mock) ; For tests
12870 ("python-nose" ,python-nose) ; For tests
12871 ("python-sphinx" ,python-sphinx)))
12872 (home-page
12873 "https://www.github.com/flask-restful/flask-restful/")
12874 (synopsis
12875 "Flask module for creating REST APIs")
12876 (description
12877 "This package contains a Flask module for creating REST APIs.")
12878 (license license:bsd-3)))
12879
12880(define-public python-flask-basicauth
12881 (package
12882 (name "python-flask-basicauth")
12883 (version "0.2.0")
12884 (source
12885 (origin
12886 (method url-fetch)
12887 (uri (pypi-uri "Flask-BasicAuth" version))
12888 (sha256
12889 (base32
12890 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
12891 (build-system python-build-system)
12892 (propagated-inputs
12893 `(("python-flask" ,python-flask)))
12894 (home-page
12895 "https://github.com/jpvanhal/flask-basicauth")
12896 (synopsis
12897 "HTTP basic access authentication for Flask")
12898 (description
12899 "This package provides HTTP basic access authentication for Flask.")
12900 (license license:bsd-3)))
12901
12902(define-public python-flask-sqlalchemy
12903 (package
12904 (name "python-flask-sqlalchemy")
12905 (version "2.1")
12906 (source
12907 (origin
12908 (method url-fetch)
12909 (uri (pypi-uri "Flask-SQLAlchemy" version))
12910 (sha256
12911 (base32
12912 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
12913 (build-system python-build-system)
12914 (propagated-inputs
12915 `(("python-flask" ,python-flask)
12916 ("python-sqlalchemy" ,python-sqlalchemy)))
12917 (home-page
12918 "https://github.com/mitsuhiko/flask-sqlalchemy")
12919 (synopsis
12920 "Module adding SQLAlchemy support to your Flask application")
12921 (description
12922 "This package adds SQLAlchemy support to your Flask application.")
12923 (license license:bsd-3)))
12924
12925(define-public python-pyev
12926 (package
12927 (name "python-pyev")
12928 (version "0.9.0")
12929 (source
12930 (origin
12931 (method url-fetch)
12932 (uri (pypi-uri "pyev" version))
12933 (sha256
12934 (base32
12935 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
12936 (build-system python-build-system)
12937 (arguments
12938 `(#:tests? #f ; no test suite
12939 #:phases
12940 (modify-phases %standard-phases
12941 (add-after 'unpack 'patch
12942 (lambda* (#:key inputs #:allow-other-keys)
12943 (let ((libev (string-append (assoc-ref inputs "libev")
12944 "/lib/libev.so.4")))
12945 (substitute* "setup.py"
12946 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
12947 (string-append "libev_dll_name = \"" libev "\"")))))))))
12948 (inputs
12949 `(("libev" ,libev)))
12950 (home-page "http://pythonhosted.org/pyev/")
12951 (synopsis "Python libev interface")
12952 (description "Pyev provides a Python interface to libev.")
12953 (license license:gpl3)))
12954
12955(define-public python2-pyev
12956 (package-with-python2 python-pyev))
12957
12958(define-public python-imagesize
12959 (package
12960 (name "python-imagesize")
12961 (version "0.7.1")
12962 (source
12963 (origin
12964 (method url-fetch)
12965 (uri (pypi-uri "imagesize" version))
12966 (sha256
12967 (base32
12968 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12969 (build-system python-build-system)
12970 (arguments
12971 '(;; Test files are not distributed on PyPi:
12972 ;; https://github.com/shibukawa/imagesize_py/issues/7
12973 #:tests? #f))
12974 (home-page "https://github.com/shibukawa/imagesize_py")
12975 (synopsis "Gets image size of files in variaous formats in Python")
12976 (description
12977 "This package allows determination of image size from
12978PNG, JPEG, JPEG2000 and GIF files in pure Python.")
12979 (license license:expat)))
12980
12981(define-public python2-imagesize
12982 (package-with-python2 python-imagesize))
12983
12984(define-public python-axolotl-curve25519
12985 (package
12986 (name "python-axolotl-curve25519")
12987 (version "0.1")
12988 (source
12989 (origin
12990 (method git-fetch)
12991 (uri (git-reference
12992 (url "git://github.com/tgalal/python-axolotl-curve25519")
12993 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12994 (file-name (string-append name "-" version "-checkout"))
12995 (sha256
12996 (base32
12997 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12998 (build-system python-build-system)
12999 (arguments
13000 `(;; Prevent creation of the egg. This works around
13001 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
13002 #:configure-flags '("--root=/")))
13003 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
13004 (synopsis "Python wrapper for curve25519 library")
13005 (description "This is a python wrapper for the curve25519 library
13006with ed25519 signatures. The C code was pulled from
13007libaxolotl-android. At the moment this wrapper is meant for use by
13008python-axolotl.")
13009 (license (list license:gpl3 ; Most files
13010 license:bsd-3)))) ; curve/curve25519-donna.c
13011
13012(define-public python2-axolotl-curve25519
13013 (package-with-python2 python-axolotl-curve25519))
13014
13015(define-public python-axolotl
13016 (package
13017 (name "python-axolotl")
13018 (version "0.1.35")
13019 (source
13020 (origin
13021 (method url-fetch)
13022 (uri (string-append
13023 "https://github.com/tgalal/python-axolotl/archive/"
13024 version ".tar.gz"))
13025 (file-name (string-append name "-" version ".tar.gz"))
13026 (sha256
13027 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
13028 (build-system python-build-system)
13029 (arguments
13030 `(#:phases
13031 (modify-phases %standard-phases
13032 ;; Don't install tests
13033 (add-before 'install 'remove-tests
13034 (lambda _
13035 (for-each delete-file-recursively
13036 '("axolotl/tests" "build/lib/axolotl/tests"))
13037 #t)))))
13038 (propagated-inputs
13039 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
13040 ("python-dateutil" ,python-dateutil)
13041 ("python-protobuf" ,python-protobuf)
13042 ("python-pycrypto" ,python-pycrypto)))
13043 (home-page "https://github.com/tgalal/python-axolotl")
13044 (synopsis "Python port of libaxolotl-android")
13045 (description "This is a python port of libaxolotl-android. This
13046is a ratcheting forward secrecy protocol that works in synchronous and
13047asynchronous messaging environments.")
13048 (license license:gpl3)))
13049
13050(define-public python2-axolotl
13051 (package-with-python2 python-axolotl))
13052
13053(define-public python-termstyle
13054 (package
13055 (name "python-termstyle")
13056 (version "0.1.11")
13057 (source
13058 (origin
13059 (method url-fetch)
13060 (uri (pypi-uri "termstyle" version))
13061 (sha256
13062 (base32
13063 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
13064 (build-system python-build-system)
13065 (arguments
13066 '(#:phases
13067 (modify-phases %standard-phases
13068 (replace 'check
13069 (lambda _
13070 (zero? (system* "python" "test3.py")))))))
13071 (home-page "https://github.com/gfxmonk/termstyle")
13072 (synopsis "Console text coloring for Python")
13073 (description "This package provides console text coloring for Python.")
13074 (license license:bsd-3)))
13075
13076(define-public python-rednose
13077 (package
13078 (name "python-rednose")
13079 (version "1.2.1")
13080 (source
13081 (origin
13082 (method url-fetch)
13083 (uri (pypi-uri "rednose" version))
13084 (sha256
13085 (base32
13086 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
13087 (build-system python-build-system)
13088 (arguments
13089 `(#:phases
13090 (modify-phases %standard-phases
13091 (add-after 'unpack 'fix-deps
13092 (lambda _
13093 ;; See <https://github.com/JBKahn/rednose/issues/12>
13094 (substitute* "setup.py"
13095 (("python-termstyle") "termstyle"))
13096 #t)))))
13097 (propagated-inputs
13098 `(("python-colorama" ,python-colorama)
13099 ("python-termstyle" ,python-termstyle)))
13100 (native-inputs
13101 `(("python-six" ,python-six)
13102 ("python-nose" ,python-nose)))
13103 (home-page "https://github.com/JBKahn/rednose")
13104 (synopsis "Colored output for Python nosetests")
13105 (description "This package provides colored output for the
13106@command{nosetests} command of the Python Nose unit test framework.")
13107 (license license:bsd-3)))
13108
13109(define-public python-flask-restplus
13110 (package
13111 (name "python-flask-restplus")
13112 (version "0.9.2")
13113 (source
13114 (origin
13115 (method url-fetch)
13116 (uri (pypi-uri "flask-restplus" version))
13117 (sha256
13118 (base32
13119 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
13120 (build-system python-build-system)
13121 (arguments
13122 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
13123 ;; #:phases
13124 ;; (modify-phases %standard-phases
13125 ;; (replace 'check
13126 ;; (lambda _
13127 ;; (zero? (system* "nosetests")))))))
13128 (propagated-inputs
13129 `(("python-aniso8601" ,python-aniso8601)
13130 ("python-flask" ,python-flask)
13131 ("python-jsonschema" ,python-jsonschema)
13132 ("python-pytz" ,python-pytz)
13133 ("python-six" ,python-six)))
13134 (native-inputs
13135 `(("python-tzlocal" ,python-tzlocal)
13136 ("python-blinker" ,python-blinker)
13137 ("python-nose" ,python-nose)
13138 ("python-rednose" ,python-rednose)))
13139 (home-page "https://github.com/noirbizarre/flask-restplus")
13140 (synopsis "Framework for documented API development with Flask")
13141 (description "This package provides a framework for API development with
13142the Flask web framework in Python. It is similar to package
13143@code{python-flask-restful} but supports the @code{python-swagger}
13144documentation builder.")
13145 (license license:expat)))
13146
13147(define-public python-sadisplay
13148 (package
13149 (name "python-sadisplay")
13150 (version "0.4.6")
13151 (source
13152 (origin
13153 (method url-fetch)
13154 (uri (pypi-uri "sadisplay" version))
13155 (sha256
13156 (base32
13157 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
13158 (build-system python-build-system)
13159 (propagated-inputs
13160 `(("python-sqlalchemy" ,python-sqlalchemy)))
13161 (native-inputs
13162 `(("python-nose" ,python-nose)))
13163 (home-page "https://bitbucket.org/estin/sadisplay")
13164 (synopsis "SQLAlchemy schema displayer")
13165 (description "This package provides a program to build Entity
13166Relationship diagrams from a SQLAlchemy model (or directly from the
13167database).")
13168 (license license:bsd-3)))
13169
13170(define-public python2-sadisplay
13171 (package-with-python2 python-sadisplay))
13172
13173(define-public python-flask-restful-swagger
13174 (package
13175 (name "python-flask-restful-swagger")
13176 (version "0.19")
13177 (source
13178 (origin
13179 (method url-fetch)
13180 (uri (pypi-uri "flask-restful-swagger" version))
13181 (sha256
13182 (base32
13183 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
13184 (build-system python-build-system)
13185 (propagated-inputs
13186 `(("python-flask-restful" ,python-flask-restful)))
13187 (home-page "https://github.com/rantav/flask-restful-swagger")
13188 (synopsis "Extract Swagger specs from Flask-Restful projects")
13189 (description "This package lets you extract Swagger API documentation
13190specs from your Flask-Restful projects.")
13191 (license license:expat)))
13192
13193(define-public python2-flask-restful-swagger
13194 (package-with-python2 python-flask-restful-swagger))
13195
13196(define-public python-argcomplete
13197 (package
13198 (name "python-argcomplete")
13199 (version "1.7.0")
13200 (source
13201 (origin
13202 (method url-fetch)
13203 (uri (pypi-uri "argcomplete" version))
13204 (sha256
13205 (base32
13206 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
13207 (build-system python-build-system)
13208 (native-inputs
13209 `(("python-pexpect" ,python-pexpect)
13210 ("tcsh" ,tcsh)))
13211 (home-page "https://github.com/kislyuk/argcomplete")
13212 (synopsis "Shell tab completion for Python argparse")
13213 (description "argcomplete provides extensible command line tab completion
13214of arguments and options for Python scripts using @code{argparse}. It's
13215particularly useful for programs with many options or sub-parsers that can
13216dynamically suggest completions; for example, when browsing resources over the
13217network.")
13218 (license license:asl2.0)))
13219
13220(define-public python2-argcomplete
13221 (package-with-python2 python-argcomplete))
13222
13223(define-public python-xopen
13224 (package
13225 (name "python-xopen")
13226 (version "0.1.1")
13227 (source
13228 (origin
13229 (method url-fetch)
13230 (uri (pypi-uri "xopen" version))
13231 (sha256
13232 (base32
13233 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
13234 (file-name (string-append name "-" version ".tar.gz"))))
13235 (build-system python-build-system)
13236 (home-page "https://github.com/marcelm/xopen/")
13237 (synopsis "Open compressed files transparently")
13238 (description "This module provides an @code{xopen} function that works like
13239Python's built-in @code{open} function, but can also deal with compressed files.
13240Supported compression formats are gzip, bzip2 and, xz, and are automatically
13241recognized by their file extensions. The focus is on being as efficient as
13242possible on all supported Python versions.")
13243 (license license:expat)))
13244
13245(define-public python2-xopen
13246 (package-with-python2 python-xopen))
13247
13248(define-public python2-cheetah
13249 (package
13250 (name "python2-cheetah")
13251 (version "2.4.4")
13252 (source
13253 (origin
13254 (method url-fetch)
13255 (uri (pypi-uri "Cheetah" version))
13256 (sha256
13257 (base32
13258 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
13259 (build-system python-build-system)
13260 (arguments
13261 `(#:python ,python-2))
13262 (propagated-inputs
13263 `(("python2-markdown" ,python2-markdown)))
13264 (home-page "https://pythonhosted.org/Cheetah/")
13265 (synopsis "Template engine")
13266 (description "Cheetah is a text-based template engine and Python code
13267generator.
13268
13269Cheetah can be used as a standalone templating utility or referenced as
13270a library from other Python applications. It has many potential uses,
13271but web developers looking for a viable alternative to ASP, JSP, PHP and
13272PSP are expected to be its principle user group.
13273
13274Features:
13275@enumerate
13276@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
13277 text-based format.
13278@item Cleanly separates content, graphic design, and program code.
13279@item Blends the power and flexibility of Python with a simple template language
13280 that non-programmers can understand.
13281@item Gives template writers full access to any Python data structure, module,
13282 function, object, or method in their templates.
13283@item Makes code reuse easy by providing an object-orientated interface to
13284 templates that is accessible from Python code or other Cheetah templates.
13285 One template can subclass another and selectively reimplement sections of it.
13286@item Provides a simple, yet powerful, caching mechanism that can dramatically
13287 improve the performance of a dynamic website.
13288@item Compiles templates into optimized, yet readable, Python code.
13289@end enumerate")
13290 (license (license:x11-style "file://LICENSE"))))
13291
13292(define-public python-dulwich
13293 (package
13294 (name "python-dulwich")
13295 (version "0.16.3")
13296 (source
13297 (origin
13298 (method url-fetch)
13299 (uri (list (string-append "https://www.dulwich.io/releases/"
13300 "dulwich-" version ".tar.gz")
13301 (pypi-uri "dulwich" version)))
13302 (sha256
13303 (base32 "0fl47vzfgc3w3rmhn8naii905cjqcp0vc68iyvymxp7567hh6als"))))
13304 (build-system python-build-system)
13305 (arguments
13306 `(#:phases
13307 (modify-phases %standard-phases
13308 (add-before 'check 'fix-tests
13309 (lambda* (#:key inputs #:allow-other-keys)
13310 ;; The tests use Popen with a custom environment which doesn't
13311 ;; include PATH.
13312 (substitute* "dulwich/tests/compat/utils.py"
13313 (("'git'") (string-append "'"
13314 (which "git")
13315 "'")))
13316 (substitute* '("dulwich/tests/test_repository.py"
13317 "dulwich/tests/test_hooks.py")
13318 (("#!/bin/sh") (string-append "#!" (which "sh"))))
13319 (setenv "TEST_RUNNER" "unittest")
13320 (setenv "PYTHONHASHSEED" "random")
13321 #t)))))
13322 (propagated-inputs
13323 `(("python-fastimport" ,python-fastimport)))
13324 (native-inputs
13325 `(("python-mock" ,python-mock)
13326 ("python-geventhttpclient" ,python-geventhttpclient)
13327 ("git" ,git)))
13328 (home-page "https://www.dulwich.io/")
13329 (synopsis "Git implementation in Python")
13330 (description "Dulwich is an implementation of the Git file formats and
13331protocols written in pure Python.")
13332 ;; Can be used with either license.
13333 (license (list license:asl2.0 license:gpl2+))))
13334
13335(define-public python2-dulwich
13336 (package-with-python2 python-dulwich))
13337
13338(define-public python-pbkdf2
13339 (package
13340 (name "python-pbkdf2")
13341 (version "1.3")
13342 (source
13343 (origin
13344 (method url-fetch)
13345 (uri (pypi-uri "pbkdf2" version))
13346 (sha256
13347 (base32
13348 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
13349 (build-system python-build-system)
13350 (arguments
13351 '(#:phases
13352 (modify-phases %standard-phases
13353 (replace 'check
13354 (lambda _
13355 (setenv "PYTHONPATH"
13356 (string-append (getcwd) "/build/lib:"
13357 (getenv "PYTHONPATH")))
13358 (zero? (system* "python" "test/test_pbkdf2.py")))))))
13359 (propagated-inputs
13360 `(("python-pycrypto" ,python-pycrypto))) ; optional
13361 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
13362 (synopsis "Password-based key derivation")
13363 (description "This module implements the password-based key derivation
13364function, PBKDF2, specified in RSA PKCS#5 v2.0.
13365
13366PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
13367is part of the RSA Public Key Cryptography Standards series. The provided
13368implementation takes a password or a passphrase and a salt value (and
13369optionally a iteration count, a digest module, and a MAC module) and provides
13370a file-like object from which an arbitrarly-sized key can be read.")
13371 (license license:expat)))
13372
13373(define-public python2-pbkdf2
13374 (package-with-python2 python-pbkdf2))
13375
13376(define-public python-qrcode
13377 (package
13378 (name "python-qrcode")
13379 (version "5.3")
13380 (source
13381 (origin
13382 (method url-fetch)
13383 (uri (pypi-uri "qrcode" version))
13384 (sha256
13385 (base32
13386 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
13387 (build-system python-build-system)
13388 (arguments
13389 ;; FIXME: Tests require packaging 'pymaging'.
13390 '(#:tests? #f))
13391 (propagated-inputs
13392 `(("python-lxml" ,python-lxml) ; for SVG output
13393 ("python-pillow" ,python-pillow) ; for PNG output
13394 ("python-six" ,python-six)))
13395 (home-page "https://github.com/lincolnloop/python-qrcode")
13396 (synopsis "QR Code image generator")
13397 (description "This package provides a pure Python QR Code generator
13398module. It uses the Python Imaging Library (PIL) to allow for the generation
13399of QR Codes.
13400
13401In addition this package provides a command line tool to generate QR codes and
13402either write these QR codes to a file or do the output as ascii art at the
13403console.")
13404 (license license:bsd-3)))
13405
13406(define-public python2-qrcode
13407 (package-with-python2 python-qrcode))
13408
13409;; SlowAES isn't compatible with Python 3.
13410(define-public python2-slowaes
13411 (package
13412 (name "python2-slowaes")
13413 (version "0.1a1")
13414 (source
13415 (origin
13416 (method url-fetch)
13417 (uri (pypi-uri "slowaes" version))
13418 (sha256
13419 (base32
13420 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
13421 (build-system python-build-system)
13422 (arguments `(#:python ,python-2))
13423 (home-page "http://code.google.com/p/slowaes/")
13424 (synopsis "Implementation of AES in Python")
13425 (description "This package contains an implementation of AES in Python.
13426This implementation is slow (hence the project name) but still useful when
13427faster ones are not available.")
13428 (license license:asl2.0)))
13429
13430(define-public python-rst2ansi
13431 (package
13432 (name "python-rst2ansi")
13433 (version "0.1.5")
13434 (source
13435 (origin
13436 (method url-fetch)
13437 (uri (pypi-uri "rst2ansi" version))
13438 (sha256
13439 (base32
13440 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
13441 (build-system python-build-system)
13442 (propagated-inputs
13443 `(("python-docutils" ,python-docutils)))
13444 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
13445 (synopsis "Convert RST to ANSI-decorated console output")
13446 (description
13447 "Python module dedicated to rendering RST (reStructuredText) documents
13448to ansi-escaped strings suitable for display in a terminal.")
13449 (license license:expat)))
13450
13451(define-public python-ddt
13452 (package
13453 (name "python-ddt")
13454 (version "1.1.1")
13455 (source
13456 (origin
13457 (method url-fetch)
13458 (uri (pypi-uri "ddt" version))
13459 (sha256
13460 (base32
13461 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
13462 (build-system python-build-system)
13463 (native-inputs
13464 `(("python-mock" ,python-mock)
13465 ("python-nose" ,python-nose)))
13466 (propagated-inputs
13467 `(("python-six" ,python-six)
13468 ("python-pyyaml" ,python-pyyaml)))
13469 (home-page "https://github.com/txels/ddt")
13470 (synopsis "Data-Driven Tests")
13471 (description
13472 "DDT (Data-Driven Tests) allows you to multiply one test case by running
13473it with different test data, and make it appear as multiple test cases.")
13474 (license license:expat)))
13475
13476(define-public python2-ddt
13477 (package-with-python2 python-ddt))
13478
13479(define-public python-pycosat
13480 (package
13481 (name "python-pycosat")
13482 (version "0.6.1")
13483 (source
13484 (origin
13485 (method url-fetch)
13486 (uri (pypi-uri "pycosat" version))
13487 (sha256
13488 (base32
13489 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
13490 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
13491 (build-system python-build-system)
13492 (home-page "https://github.com/ContinuumIO/pycosat")
13493 (synopsis "Bindings to picosat (a SAT solver)")
13494 (description
13495 "This package provides efficient Python bindings to @code{picosat} on
13496the C level. When importing pycosat, the @code{picosat} solver becomes part
13497of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
13498Problem} (SAT) solver.")
13499 (license license:expat)))
13500
13501(define-public python2-pycosat
13502 (package-with-python2 python-pycosat))
13503
13504(define-public python2-ruamel.ordereddict
13505 (package
13506 (name "python2-ruamel.ordereddict")
13507 (version "0.4.9")
13508 (source
13509 (origin
13510 (method url-fetch)
13511 (uri (pypi-uri "ruamel.ordereddict" version))
13512 (sha256
13513 (base32
13514 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
13515 (build-system python-build-system)
13516 (arguments
13517 `(#:python ,python-2
13518 #:phases
13519 (modify-phases %standard-phases
13520 (delete 'check)
13521 (add-after 'install 'check
13522 (lambda* (#:key inputs outputs #:allow-other-keys)
13523 (add-installed-pythonpath inputs outputs)
13524 (zero? (system* "python" "test/testordereddict.py")))))))
13525 (home-page "https://bitbucket.org/ruamel/ordereddict")
13526 (synopsis "Version of dict that keeps keys in insertion order")
13527 (description
13528 "This is an implementation of an ordered dictionary with @dfn{Key
13529Insertion Order} (KIO: updates of values do not affect the position of the
13530key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
13531removed and put at the back). The standard library module @code{OrderedDict},
13532implemented later, implements a subset of @code{ordereddict} functionality.
13533Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
13534Order} (KSO, no sorting function can be specified, but a transform can be
13535specified to apply on the key before comparison (e.g. @code{string.lower})).")
13536 (license license:expat)))
13537
13538(define-public python-pypeg2
13539 (package
13540 (name "python-pypeg2")
13541 (version "2.15.2")
13542 (source
13543 (origin
13544 (method url-fetch)
13545 (uri (pypi-uri "pyPEG2" version))
13546 (sha256
13547 (base32
13548 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
13549 (build-system python-build-system)
13550 (propagated-inputs `(("python-lxml" ,python-lxml)))
13551 (arguments
13552 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
13553 '(#:tests? #f))
13554 (home-page "https://fdik.org/pyPEG/")
13555 (synopsis "Parsering Expression Grammars in Python")
13556 (description "PyPEG is an intrinsic parser interpreter framework for
13557Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
13558parse many formal languages.")
13559 (license license:gpl2)))
13560
13561(define-public python2-cliapp
13562 (package
13563 (name "python2-cliapp")
13564 (version "1.20160724")
13565 (source
13566 (origin
13567 (method url-fetch)
13568 (uri (string-append
13569 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
13570 version ".tar.gz"))
13571 (sha256
13572 (base32
13573 "025cyi75vxyghbm4hav8dz4fzwksshddavy9g9fwr440awcvw74f"))))
13574 (build-system python-build-system)
13575 (arguments
13576 `(#:python ,python-2))
13577 (propagated-inputs
13578 `(("python2-pyaml" ,python2-pyaml)))
13579 (home-page "https://liw.fi/cliapp/")
13580 (synopsis "Python framework for command line programs")
13581 (description "@code{python2-cliapp} is a python framework for
13582command line programs. It contains the typical stuff such programs
13583need to do, such as parsing the command line for options, and
13584iterating over input files.")
13585 (license license:gpl2+)))
13586
13587(define-public python2-ttystatus
13588 (package
13589 (name "python2-ttystatus")
13590 (version "0.32")
13591 (source
13592 (origin
13593 (method url-fetch)
13594 (uri (string-append
13595 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
13596 version ".tar.gz"))
13597 (sha256
13598 (base32
13599 "0b5g889jj23r2w1hi300cdldx6jvspanp0ybf5n1qvdvl150aamf"))))
13600 (build-system python-build-system)
13601 (arguments
13602 `(#:python ,python-2))
13603 (home-page "https://liw.fi/ttystatus/")
13604 (synopsis "Python library for showing progress reporting and
13605status updates on terminals")
13606 (description "@code{python2-ttystatus} is a python library for
13607showing progress reporting and status updates on terminals, for
13608command line programs. Output is automatically adapted to the width
13609of the terminal: truncated if it does not fit, and resized if the
13610terminal size changes.")
13611 (license license:gpl3+)))
13612
13613(define-public python2-tracing
13614 (package
13615 (name "python2-tracing")
13616 (version "0.10")
13617 (source
13618 (origin
13619 (method url-fetch)
13620 (uri (string-append
13621 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
13622 version ".tar.gz"))
13623 (sha256
13624 (base32
13625 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
13626 (build-system python-build-system)
13627 (arguments
13628 `(#:python ,python-2))
13629 (home-page "https://liw.fi/tracing/")
13630 (synopsis "Python debug logging helper")
13631 (description "@code{python2-tracing} is a python library for
13632logging debug messages. It provides a way to turn debugging messages
13633on and off, based on the filename they occur in. It is much faster
13634than using @code{logging.Filter} to accomplish the same thing, which
13635matters when code is run in production mode. The actual logging still
13636happens using the @code{logging} library.")
13637 (license license:gpl3+)))
13638
13639(define-public python2-larch
13640 (package
13641 (name "python2-larch")
13642 (version "1.20151025")
13643 (source
13644 (origin
13645 (method url-fetch)
13646 (uri (string-append
13647 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
13648 version ".tar.gz"))
13649 (sha256
13650 (base32
13651 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
13652 (build-system python-build-system)
13653 (arguments
13654 `(#:python ,python-2))
13655 (propagated-inputs
13656 `(("python2-tracing" ,python2-tracing)))
13657 (home-page "https://liw.fi/larch/")
13658 (synopsis "Python copy-on-write B-tree library")
13659 (description "@code{python2-larch} is an implementation of
13660particular kind of B-tree, based on research by Ohad Rodeh. See
13661@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
13662on the data structure.
13663
13664The distinctive feature of this B-tree is that a node is never
13665(conceptually) modified. Instead, all updates are done by
13666copy-on-write. This makes it easy to clone a tree, and modify only the
13667clone, while other processes access the original tree.")
13668 (license license:gpl3+)))
13669
13670(define-public python-htmlmin
13671 (package
13672 (name "python-htmlmin")
13673 (version "0.1.10")
13674 (source
13675 (origin
13676 (method url-fetch)
13677 (uri (pypi-uri "htmlmin" version))
13678 (sha256
13679 (base32
13680 "0qxa93j3p1ak32qh8d9kshqv8v3z0hkc13dwbhp5cn7sn3xmsp6a"))))
13681 (arguments
13682 `(#:tests? #f)) ;htmlmin has no tests
13683 (build-system python-build-system)
13684 (home-page "https://htmlmin.readthedocs.org/en/latest/")
13685 (synopsis "HTML minifier")
13686 (description "@code{htmlmin} is an HTML minifier that just works.
13687It comes with safe defaults and easily configurable options.")
13688 (license license:bsd-3)))
13689
13690(define-public python2-htmlmin
13691 (package-with-python2 python-htmlmin))
13692
13693(define-public python-flask-htmlmin
13694 (package
13695 (name "python-flask-htmlmin")
13696 (version "1.2")
13697 (source
13698 (origin
13699 (method url-fetch)
13700 (uri (pypi-uri "Flask-HTMLmin" version))
13701 (sha256
13702 (base32
13703 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
13704 (propagated-inputs
13705 `(("python-flask" ,python-flask)
13706 ("python-htmlmin" ,python-htmlmin)))
13707 (build-system python-build-system)
13708 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
13709 (synopsis "HTML response minifier for Flask")
13710 (description
13711 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
13712 (license license:bsd-3)))
13713
13714(define-public python2-flask-htmlmin
13715 (package-with-python2 python-flask-htmlmin))
13716
13717(define-public python-flask-login
13718 (package
13719 (name "python-flask-login")
13720 (version "0.4.0")
13721 (source
13722 (origin
13723 (method url-fetch)
13724 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
13725 version ".tar.gz"))
13726 (file-name (string-append name "-" version ".tar.gz"))
13727 (sha256
13728 (base32
13729 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
13730 (arguments
13731 ;; Tests fail PEP8 compliance. See:
13732 ;; https://github.com/maxcountryman/flask-login/issues/340
13733 `(#:tests? #f))
13734 (build-system python-build-system)
13735 (home-page "https://github.com/maxcountryman/flask-login")
13736 (synopsis "User session management for Flask")
13737 (description
13738 "@code{Flask-Login} provides user session management for Flask. It
13739handles the common tasks of logging in, logging out, and remembering your
13740users' sessions over extended periods of time.")
13741 (license license:expat)))
13742
13743(define-public python2-flask-login
13744 (package-with-python2 python-flask-login))
13745
13746(define-public python-astroid
13747 (package
13748 (name "python-astroid")
13749 (version "1.4.9")
13750 (source
13751 (origin
13752 (method url-fetch)
13753 (uri (string-append
13754 "https://github.com/PyCQA/astroid/archive/astroid-"
13755 version ".tar.gz"))
13756 (sha256
13757 (base32
13758 "0j0wgy54d13a470vm4b9rdjk99n1hmdxpf34x9k3pbmi9w9b566z"))))
13759 (build-system python-build-system)
13760 (propagated-inputs
13761 `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
13762 ("python-six" ,python-six)
13763 ("python-wrapt" ,python-wrapt)))
13764 (arguments
13765 `(#:phases
13766 (modify-phases %standard-phases
13767 (replace 'check
13768 (lambda _
13769 (zero? (system* "python" "-m" "unittest" "discover"
13770 "-p" "unittest*.py")))))))
13771 (home-page "https://github.com/PyCQA/astroid")
13772 (synopsis "Common base representation of python source code for pylint and
13773other projects")
13774 (description "@code{python-astroid} provides a common base representation
13775of python source code for projects such as pychecker, pyreverse, pylint, etc.
13776
13777It provides a compatible representation which comes from the _ast module. It
13778rebuilds the tree generated by the builtin _ast module by recursively walking
13779down the AST and building an extended ast. The new node classes have
13780additional methods and attributes for different usages. They include some
13781support for static inference and local name scopes. Furthermore, astroid
13782builds partial trees by inspecting living objects.")
13783 (license license:lgpl2.1+)))
13784
13785(define-public python2-astroid
13786 (package-with-python2 python-astroid))
13787
13788(define-public python-isort
13789 (package
13790 (name "python-isort")
13791 (version "4.2.5")
13792 (source
13793 (origin
13794 (method url-fetch)
13795 (uri (string-append
13796 "https://github.com/timothycrosley/isort/archive/"
13797 version ".tar.gz"))
13798 (file-name (string-append name "-" version ".tar.gz"))
13799 (sha256
13800 (base32
13801 "0zsrgkb0krn5476yncy5dd56k7dk34zqb4bnlvwy44ixgilyjmfh"))))
13802 (build-system python-build-system)
13803 (native-inputs
13804 `(("python-mock" ,python-mock)
13805 ("python-pytest" ,python-pytest)))
13806 (home-page "https://github.com/timothycrosley/isort")
13807 (synopsis "Python utility/library to sort python imports")
13808 (description "@code{python-isort} is a python utility/library to sort
13809imports alphabetically, and automatically separated into sections. It
13810provides a command line utility, a python library and plugins for various
13811editors.")
13812 (license license:expat)))
13813
13814(define-public python2-isort
13815 (package-with-python2 python-isort))
13816
13817(define-public python2-backports-functools-lru-cache
13818 (package
13819 (name "python2-backports-functools-lru-cache")
13820 (version "1.3")
13821 (source
13822 (origin
13823 (method url-fetch)
13824 ;; only the pypi tarballs contain the necessary metadata
13825 (uri (pypi-uri "backports.functools_lru_cache" version))
13826 (sha256
13827 (base32
13828 "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4"))))
13829 (build-system python-build-system)
13830 (native-inputs
13831 `(("python2-setuptools-scm" ,python2-setuptools-scm)))
13832 (arguments
13833 `(#:python ,python-2))
13834 (home-page "https://github.com/jaraco/backports.functools_lru_cache")
13835 (synopsis "Backport of functools.lru_cache from Python 3.3")
13836 (description "@code{python2-backports-functools-lru-cache} is a backport
13837of @code{functools.lru_cache} from python 3.3.")
13838 (license license:expat)))
13839
13840(define-public python-configparser
13841 (package
13842 (name "python-configparser")
13843 (version "3.5.0")
13844 (source
13845 (origin
13846 (method url-fetch)
13847 (uri (string-append
13848 "https://bitbucket.org/ambv/configparser/get/"
13849 version ".tar.bz2"))
13850 (file-name (string-append name "-" version ".tar.gz"))
13851 (sha256
13852 (base32
13853 "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
13854 (build-system python-build-system)
13855 (home-page "http://docs.python.org/py3k/library/configparser.html")
13856 (synopsis "Backport of configparser from python 3.5")
13857 (description "@code{python-configparser} is a backport of
13858@code{configparser} from Python 3.5 so that it can be used directly
13859in other versions.")
13860 (license license:expat)))
13861
13862(define-public python2-configparser
13863 (package-with-python2 python-configparser))
13864
13865(define-public python2-coverage-test-runner
13866 (package
13867 (name "python2-coverage-test-runner")
13868 (version "1.11")
13869 (source
13870 (origin
13871 (method url-fetch)
13872 (uri (string-append
13873 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
13874 "coverage-test-runner/snapshot/coverage-test-runner-"
13875 version ".tar.gz"))
13876 (sha256
13877 (base32
13878 "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
13879 (build-system python-build-system)
13880 (arguments
13881 `(#:python ,python-2
13882 #:phases
13883 (modify-phases %standard-phases
13884 (replace 'check
13885 (lambda _
13886 (zero? (system* "./testrun")))))))
13887 (propagated-inputs
13888 `(("python2-coverage" ,python2-coverage)))
13889 (home-page "https://liw.fi/coverage-test-runner/")
13890 (synopsis "Python module for running unit tests")
13891 (description "@code{CoverageTestRunner} is a python module for running
13892unit tests and failing them if the unit test module does not exercise all
13893statements in the module it tests.")
13894 (license license:gpl3+)))
13895
13896(define-public python-pylint
13897 (package
13898 (name "python-pylint")
13899 (version "1.6.5")
13900 (source
13901 (origin
13902 (method url-fetch)
13903 (uri (string-append
13904 "https://github.com/PyCQA/pylint/archive/pylint-"
13905 version ".tar.gz"))
13906 (sha256
13907 (base32
13908 "08pmgflmq2zrzrn9nkfadzwa5vybz46wvwxhrsd2mjlcgsh4rzbm"))))
13909 (build-system python-build-system)
13910 (native-inputs
13911 `(("python-tox" ,python-tox)))
13912 (propagated-inputs
13913 `(("python-astroid" ,python-astroid)
13914 ("python-isort" ,python-isort)
13915 ("python-mccabe" ,python-mccabe)
13916 ("python-six" ,python-six)))
13917 (arguments
13918 `(#:phases
13919 (modify-phases %standard-phases
13920 (replace 'check
13921 (lambda _
13922 ;; Somehow, tests for python2-pylint
13923 ;; fail if run from the build directory
13924 (let ((work "/tmp/work"))
13925 (mkdir-p work)
13926 (setenv "PYTHONPATH"
13927 (string-append (getenv "PYTHONPATH") ":" work))
13928 (copy-recursively "." work)
13929 (with-directory-excursion "/tmp"
13930 (zero? (system* "python" "-m" "unittest" "discover"
13931 "-s" (string-append work "/pylint/test")
13932 "-p" "*test_*.py")))))))))
13933 (home-page "https://github.com/PyCQA/pylint")
13934 (synopsis "Python source code analyzer which looks for coding standard
13935errors")
13936 (description "Pylint is a Python source code analyzer which looks
13937for programming errors, helps enforcing a coding standard and sniffs
13938for some code smells (as defined in Martin Fowler's Refactoring book).
13939
13940Pylint has many rules enabled by default, way too much to silence them
13941all on a minimally sized program. It's highly configurable and handle
13942pragmas to control it from within your code. Additionally, it is
13943possible to write plugins to add your own checks.")
13944 (license license:gpl2+)))
13945
13946(define-public python2-pylint
13947 (let ((pylint (package-with-python2 python-pylint)))
13948 (package (inherit pylint)
13949 (propagated-inputs
13950 `(("python2-backports-functools-lru-cache"
13951 ,python2-backports-functools-lru-cache)
13952 ("python2-configparser" ,python2-configparser)
13953 ,@(package-propagated-inputs pylint))))))
13954
13955(define-public python-paramunittest
13956 (package
13957 (name "python-paramunittest")
13958 (version "0.2")
13959 (source
13960 (origin
13961 (method url-fetch)
13962 (uri (pypi-uri "ParamUnittest" version))
13963 (sha256
13964 (base32
13965 "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
13966 (build-system python-build-system)
13967 (home-page
13968 "https://github.com/rik0/ParamUnittest")
13969 (synopsis
13970 "Simple extension to have parametrized unit tests")
13971 (description
13972 "This package allows to create parametrized unit-tests that work with the standard
13973unittest package. A parametrized test case is automatically converted to multiple test
13974cases. Since they are TestCase subclasses, they work with other test suites that
13975recognize TestCases.")
13976 (license license:bsd-2)))
13977
13978(define-public python2-python-paramunittest
13979 (package-with-python2 python-paramunittest))
13980
13981(define-public python-mando
13982 (package
13983 (name "python-mando")
13984 (version "0.5")
13985 (source
13986 (origin
13987 (method url-fetch)
13988 (uri (pypi-uri "mando" version))
13989 (sha256
13990 (base32
13991 "0q05h66439gqdmlk4jqm6xrwrzfdgs4mwk70barxhr2y83qbbdc0"))))
13992 (build-system python-build-system)
13993 (propagated-inputs
13994 `(("python-rst2ansi" ,python-rst2ansi)))
13995 (native-inputs
13996 `(("python-sphinx" ,python-sphinx-1.5.3)
13997 ("python-paramunittest" ,python-paramunittest)))
13998 (home-page "https://mando.readthedocs.org/")
13999 (synopsis
14000 "Wrapper around argparse, allowing creation of complete CLI applications")
14001 (description
14002 "This package is a wrapper around argparse, allowing you to write complete CLI
14003 applications in seconds while maintaining all the flexibility.")
14004 (license license:expat)))
14005
14006(define-public python2-mando
14007 (package-with-python2 python-mando))
14008
14009(define-public python-mando-0.3.1
14010 ;; python-radon (version 1.5.0) has a requirement
14011 ;; for mando<0.4,>=0.3
14012 (package
14013 (inherit python-mando)
14014 (name "python-mando")
14015 (version "0.3.1")
14016 (source
14017 (origin
14018 (method url-fetch)
14019 (uri (string-append "https://github.com/rubik/mando/archive/v"
14020 version
14021 ".tar.gz"))
14022 (sha256
14023 (base32
14024 "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
14025
14026(define-public python-fudge
14027 (package
14028 (name "python-fudge")
14029 ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
14030 ;; package, which is currently the only use of this package.
14031 (version "0.9.6")
14032 (source
14033 (origin
14034 (method url-fetch)
14035 (uri (pypi-uri "fudge" version))
14036 (sha256
14037 (base32
14038 "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
14039 (build-system python-build-system)
14040 (arguments
14041 `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package.
14042 (home-page "https://github.com/fudge-py/fudge")
14043 (synopsis "Replace real objects with fakes/mocks/stubs while testing")
14044 (description
14045 "Fudge is a Python module for using fake objects (mocks and stubs) to
14046test real ones.
14047
14048In readable Python code, you declare the methods available on your fake object
14049and how they should be called. Then you inject that into your application and
14050start testing. This declarative approach means you don’t have to record and
14051playback actions and you don’t have to inspect your fakes after running code.
14052If the fake object was used incorrectly then you’ll see an informative
14053exception message with a traceback that points to the culprit.")
14054 (license license:expat)))
14055
14056(define-public python2-fudge
14057 (package-with-python2 python-fudge))
14058
14059(define-public python-oauth2client
14060 (package
14061 (name "python-oauth2client")
14062 (version "4.0.0")
14063 (source
14064 (origin
14065 (method url-fetch)
14066 (uri (pypi-uri "oauth2client" version))
14067 (sha256
14068 (base32
14069 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
14070 (build-system python-build-system)
14071 (arguments
14072 `(#:tests? #f))
14073 (propagated-inputs
14074 `(("python-httplib2" ,python-httplib2)
14075 ("python-pyasn1" ,python-pyasn1)
14076 ("python-pyasn1-modules" ,python-pyasn1-modules)
14077 ("python-rsa" ,python-rsa)
14078 ("python-six" ,python-six)))
14079 (home-page "http://github.com/google/oauth2client/")
14080 (synopsis "OAuth 2.0 client library")
14081 (description "@code{python-oauth2client} provides an OAuth 2.0 client
14082library for Python")
14083 (license license:asl2.0)))
14084
14085(define-public python-flask-oidc
14086 (package
14087 (name "python-flask-oidc")
14088 (version "1.1.1")
14089 (source
14090 (origin
14091 (method url-fetch)
14092 (uri (pypi-uri "flask-oidc" version))
14093 (sha256
14094 (base32
14095 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
14096 (build-system python-build-system)
14097 (propagated-inputs
14098 `(("python-flask" ,python-flask)
14099 ("python-itsdangerous" ,python-itsdangerous)
14100 ("python-oauth2client" ,python-oauth2client)
14101 ("python-six" ,python-six)))
14102 (native-inputs
14103 `(("python-nose" ,python-nose)
14104 ("python-mock" ,python-mock)))
14105 (home-page "https://github.com/puiterwijk/flask-oidc")
14106 (synopsis "OpenID Connect extension for Flask")
14107 (description "@code{python-flask-oidc} provides an OpenID Connect extension
14108for Flask.")
14109 (license license:bsd-2)))
14110
14111(define-public python-mwclient
14112 (package
14113 (name "python-mwclient")
14114 (version "0.8.4")
14115 (source
14116 (origin
14117 (method url-fetch)
14118 ;; The PyPI version wouldn't contain tests.
14119 (uri (string-append "https://github.com/mwclient/mwclient/archive/"
14120 "v" version ".tar.gz"))
14121 (sha256
14122 (base32
14123 "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv"))))
14124 (build-system python-build-system)
14125 (propagated-inputs
14126 `(("python-requests" ,python-requests)
14127 ("python-requests-oauthlib"
14128 ,python-requests-oauthlib)
14129 ("python-six" ,python-six)))
14130 (native-inputs
14131 `(("python-mock" ,python-mock)
14132 ("python-pytest" ,python-pytest)
14133 ("python-pytest-pep8" ,python-pytest-pep8)
14134 ("python-pytest-cache" ,python-pytest-cache)
14135 ("python-pytest-cov" ,python-pytest-cov)
14136 ("python-responses" ,python-responses)))
14137 (home-page "https://github.com/btongminh/mwclient")
14138 (synopsis "MediaWiki API client")
14139 (description "This package provides a MediaWiki API client.")
14140 (license license:expat)))
14141
14142(define-public python2-mwclient
14143 (package-with-python2 python-mwclient))
14144
14145(define-public python-pytest-warnings
14146 (package
14147 (name "python-pytest-warnings")
14148 (version "0.2.0")
14149 (source
14150 (origin
14151 (method url-fetch)
14152 (uri (pypi-uri "pytest-warnings" version))
14153 (sha256
14154 (base32
14155 "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
14156 (build-system python-build-system)
14157 (propagated-inputs
14158 `(("pytest" ,python-pytest-3.0)))
14159 (home-page "https://github.com/fschulze/pytest-warnings")
14160 (synopsis "Pytest plugin to list Python warnings in pytest report")
14161 (description
14162 "Python-pytest-warnings is a pytest plugin to list Python warnings in
14163pytest report.")
14164 (license license:expat)))
14165
14166(define-public python2-pytest-warnings
14167 (package-with-python2 python-pytest-warnings))
14168
14169(define-public python-pytest-catchlog
14170 (package
14171 (name "python-pytest-catchlog")
14172 (version "1.2.2")
14173 (source
14174 (origin
14175 (method url-fetch)
14176 (uri (pypi-uri "pytest-catchlog" version ".zip"))
14177 (sha256
14178 (base32
14179 "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
14180 (build-system python-build-system)
14181 (native-inputs
14182 `(("unzip" ,unzip)))
14183 (propagated-inputs
14184 `(("pytest" ,python-pytest-3.0)))
14185 (home-page "https://github.com/eisensheng/pytest-catchlog")
14186 (synopsis "Pytest plugin to catch log messages")
14187 (description
14188 "Python-pytest-catchlog is a pytest plugin to catch log messages. This is
14189a fork of pytest-capturelog.")
14190 (license license:expat)))
14191
14192(define-public python2-pytest-catchlog
14193 (package-with-python2 python-pytest-catchlog))
14194
14195(define-public python-utils
14196 (package
14197 (name "python-utils")
14198 (version "2.1.0")
14199 (source (origin
14200 (method url-fetch)
14201 (uri (pypi-uri "python-utils" version))
14202 (sha256
14203 (base32
14204 "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
14205 (build-system python-build-system)
14206 (native-inputs
14207 `(("pytest-runner" ,python-pytest-runner)
14208 ("pytest" ,python-pytest)
14209 ("six" ,python-six)))
14210 (home-page "https://github.com/WoLpH/python-utils")
14211 (synopsis "Convenient utilities not included with the standard Python install")
14212 (description
14213 "Python Utils is a collection of small Python functions and classes which
14214make common patterns shorter and easier.")
14215 (license license:bsd-2)))
14216
14217(define-public python2-utils
14218 (package-with-python2 python-utils))
14219
14220(define-public python-webassets
14221 (package
14222 (name "python-webassets")
14223 (version "0.12.1")
14224 (source
14225 (origin
14226 (method url-fetch)
14227 (uri (pypi-uri "webassets" version))
14228 (sha256
14229 (base32
14230 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
14231 (build-system python-build-system)
14232 (native-inputs
14233 `(("python-jinja2" ,python-jinja2)
14234 ("python-mock" ,python-mock)
14235 ("python-nose" ,python-nose)
14236 ("python-pytest" ,python-pytest)))
14237 (home-page "https://github.com/miracle2k/webassets")
14238 (synopsis "Media asset management")
14239 (description "Merges, minifies and compresses Javascript and CSS files,
14240supporting a variety of different filters, including YUI, jsmin, jspacker or
14241CSS tidy. Also supports URL rewriting in CSS files.")
14242 (license license:bsd-2)))
14243
14244(define-public python-sphinx-me
14245 (package
14246 (name "python-sphinx-me")
14247 (version "0.3")
14248 (source
14249 (origin
14250 (method url-fetch)
14251 (uri (pypi-uri "sphinx-me" version))
14252 (sha256
14253 (base32
14254 "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
14255 (build-system python-build-system)
14256 (home-page "https://github.com/stephenmcd/sphinx-me")
14257 (synopsis "Create a Sphinx documentation shell")
14258 (description
14259 "Create a Sphinx documentation shell for your project and include the
14260README file as the documentation index. It handles extracting the required
14261meta data such as the project name, author and version from your project for
14262use in your Sphinx docs.")
14263 (license license:bsd-2)))
14264
14265(define-public python2-sphinx-me
14266 (package-with-python2 python-sphinx-me))
14267
14268(define-public python-cssmin
14269 (package
14270 (name "python-cssmin")
14271 (version "0.2.0")
14272 (source
14273 (origin
14274 (method url-fetch)
14275 (uri (pypi-uri "cssmin" version))
14276 (sha256
14277 (base32
14278 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
14279 (build-system python-build-system)
14280 (home-page "https://github.com/zacharyvoase/cssmin")
14281 (synopsis "Python port of the YUI CSS Compressor")
14282 (description "Python port of the YUI CSS Compressor.")
14283 (license (list license:expat license:bsd-3))))
14284
14285(define-public python2-cssmin
14286 (package-with-python2 python-cssmin))
14287
14288(define-public python-diff-match-patch
14289 (package
14290 (name "python-diff-match-patch")
14291 (version "20121119")
14292 (source
14293 (origin
14294 (method url-fetch)
14295 (uri (pypi-uri "diff-match-patch" version))
14296 (sha256
14297 (base32
14298 "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
14299 (build-system python-build-system)
14300 (home-page "https://code.google.com/p/google-diff-match-patch")
14301 (synopsis "Synchronize plain text")
14302 (description "Diff Match and Patch libraries offer robust algorithms to
14303perform the operations required for synchronizing plain text.")
14304 (license license:asl2.0)))
14305
14306(define-public python2-diff-match-patch
14307 (package-with-python2 python-diff-match-patch))
14308
14309(define-public python-dirsync
14310 (package
14311 (name "python-dirsync")
14312 (version "2.2.2")
14313 (source
14314 (origin
14315 (method url-fetch)
14316 (uri (pypi-uri "dirsync" version ".zip"))
14317 (sha256
14318 (base32
14319 "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
14320 (build-system python-build-system)
14321 (native-inputs
14322 `(("unzip" ,unzip)))
14323 (propagated-inputs
14324 `(("six" ,python-six)))
14325 (home-page "https://bitbucket.org/tkhyn/dirsync")
14326 (synopsis "Advanced directory tree synchronisation tool")
14327 (description "Advanced directory tree synchronisation tool.")
14328 (license license:expat)))
14329
14330(define-public python2-dirsync
14331 (package-with-python2 python-dirsync))
14332
14333(define-public python-nosexcover
14334 (package
14335 (name "python-nosexcover")
14336 (version "1.0.11")
14337 (source (origin
14338 (method url-fetch)
14339 (uri (pypi-uri "nosexcover" version))
14340 (sha256
14341 (base32
14342 "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
14343 (build-system python-build-system)
14344 (propagated-inputs
14345 `(("python-coverage" ,python-coverage)
14346 ("python-nose" ,python-nose)))
14347 (home-page "http://github.com/cmheisel/nose-xcover")
14348 (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
14349 (description "Nose-xcover is a companion to the built-in
14350@code{nose.plugins.cover}. This plugin will write out an XML coverage report
14351to a file named coverage.xml.
14352
14353It will honor all the options you pass to the Nose coverage plugin,
14354especially -cover-package.")
14355 (license license:expat)))
14356
14357(define-public python2-nosexcover
14358 (package-with-python2 python-nosexcover))
14359
14360(define-public python-elasticsearch
14361 (package
14362 (name "python-elasticsearch")
14363 (version "1.0.0")
14364 (source
14365 (origin
14366 (method url-fetch)
14367 (uri (pypi-uri "elasticsearch" version))
14368 (sha256
14369 (base32
14370 "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
14371 (build-system python-build-system)
14372 (native-inputs
14373 `(("python-mock" ,python-mock)
14374 ("python-nosexcover" ,python-nosexcover)
14375 ("python-pyaml" ,python-pyaml)
14376 ("python-requests" ,python-requests)))
14377 (propagated-inputs
14378 `(("urllib3" ,python-urllib3)))
14379 (arguments
14380 ;; tests require the test_elasticsearch module but it is not distributed.
14381 `(#:tests? #f))
14382 (home-page "https://github.com/elastic/elasticsearch-py")
14383 (synopsis "Low-level client for Elasticsearch")
14384 (description "Official low-level client for Elasticsearch. Its goal is to
14385provide common ground for all Elasticsearch-related code in Python; because of
14386this it tries to be opinion-free and very extendable.")
14387 (license license:expat)))
14388
14389(define-public python2-elasticsearch
14390 (package-with-python2 python-elasticsearch))
14391
14392(define-public python-levenshtein
14393 (package
14394 (name "python-levenshtein")
14395 (version "0.12.0")
14396 (source
14397 (origin
14398 (method url-fetch)
14399 (uri (pypi-uri "python-Levenshtein" version))
14400 (sha256
14401 (base32
14402 "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
14403 (build-system python-build-system)
14404 (home-page "https://github.com/ztane/python-Levenshtein")
14405 (synopsis "Fast computation of Levenshtein distance and string similarity")
14406 (description
14407 "The Levenshtein Python C extension module contains functions for fast computation of
14408@enumerate
14409@item Levenshtein (edit) distance, and edit operations
14410@item string similarity
14411@item approximate median strings, and generally string averaging
14412@item string sequence and set similarity
14413@end enumerate
14414It supports both normal and Unicode strings.")
14415 (license license:gpl2+)))
14416
14417(define-public python2-levenshtein
14418 (package-with-python2 python-levenshtein))
14419
14420(define-public python-scandir
14421 (package
14422 (name "python-scandir")
14423 (version "1.4")
14424 (source
14425 (origin
14426 (method url-fetch)
14427 (uri (pypi-uri "scandir" version))
14428 (sha256
14429 (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
14430 (build-system python-build-system)
14431 (home-page "https://github.com/benhoyt/scandir")
14432 (synopsis "Directory iteration function")
14433 (description
14434 "Directory iteration function like os.listdir(), except that instead of
14435returning a list of bare filenames, it yields DirEntry objects that include
14436file type and stat information along with the name. Using scandir() increases
14437the speed of os.walk() by 2-20 times (depending on the platform and file
14438system) by avoiding unnecessary calls to os.stat() in most cases.")
14439 (license license:bsd-3)))
14440
14441(define-public python2-scandir
14442 (package-with-python2 python-scandir))
14443
14444(define-public python2-stemming
14445 (package
14446 (name "python2-stemming")
14447 (version "1.0.1")
14448 (source
14449 (origin
14450 (method url-fetch)
14451 (uri (pypi-uri "stemming" version))
14452 (sha256
14453 (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
14454 (build-system python-build-system)
14455 (arguments
14456 `(#:python ,python-2))
14457 (home-page "https://bitbucket.org/mchaput/stemming/overview")
14458 (synopsis "Python implementations of various stemming algorithms")
14459 (description
14460 "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
14461stemming algorithms for English. These implementations are straightforward and
14462efficient, unlike some Python versions of the same algorithms available on the
14463Web. This package is an extraction of the stemming code included in the Whoosh
14464search engine.")
14465 (license license:public-domain)))
14466
14467(define-public python-factory-boy
14468 (package
14469 (name "python-factory-boy")
14470 (version "2.8.1")
14471 (source
14472 (origin
14473 (method url-fetch)
14474 (uri (pypi-uri "factory_boy" version))
14475 (sha256
14476 (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
14477 (build-system python-build-system)
14478 (arguments
14479 ;; Tests are not included in the tarball.
14480 `(#:tests? #f))
14481 (propagated-inputs
14482 `(("faker" ,python-faker)))
14483 (home-page "https://github.com/benhoyt/scandir")
14484 (synopsis "Versatile test fixtures replacement")
14485 (description
14486 "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
14487
14488As a fixtures replacement tool, it aims to replace static, hard to maintain
14489fixtures with easy-to-use factories for complex object.
14490
14491Instead of building an exhaustive test setup with every possible combination
14492of corner cases, factory_boy allows you to use objects customized for the
14493current test, while only declaring the test-specific fields")
14494 (license license:expat)))
14495
14496(define-public python2-factory-boy
14497 (package-with-python2 python-factory-boy))
14498
14499(define-public python-translate-toolkit
14500 (package
14501 (name "python-translate-toolkit")
14502 (version "2.1.0")
14503 (source
14504 (origin
14505 (method url-fetch)
14506 (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
14507 (sha256
14508 (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
14509 (build-system python-build-system)
14510 (native-inputs
14511 `(("python-pytest" ,python-pytest)
14512 ("python-sphinx" ,python-sphinx)))
14513 (propagated-inputs
14514 `(("python-babel" ,python-babel)
14515 ("python-beautifulsoup4" ,python-beautifulsoup4)
14516 ("python-chardet" ,python-chardet)
14517 ("python-diff-match-patch" ,python-diff-match-patch)
14518 ("python-levenshtein" ,python-levenshtein)
14519 ("python-lxml" ,python-lxml)
14520 ("python-six" ,python-six)
14521 ("python-vobject" ,python-vobject)
14522 ("python-pyyaml" ,python-pyyaml)))
14523 (arguments
14524 ;; TODO: tests are not run, because they end with
14525 ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
14526 ;; 'parse_funcs'
14527 ;; during test setup.
14528 `(#:tests? #f))
14529 (home-page "http://toolkit.translatehouse.org")
14530 (synopsis "Tools and API for translation and localization engineering")
14531 (description
14532 "Tools and API for translation and localization engineering. It contains
14533several utilities, as well as an API for building localization tools.")
14534 (license license:gpl2+)))
14535
14536(define-public python2-translate-toolkit
14537 (package-with-python2 python-translate-toolkit))
14538
14539(define-public python-mysqlclient
14540 (package
14541 (name "python-mysqlclient")
14542 (version "1.3.10")
14543 (source
14544 (origin
14545 (method url-fetch)
14546 (uri (pypi-uri "mysqlclient" version))
14547 (sha256
14548 (base32
14549 "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
14550 (build-system python-build-system)
14551 (native-inputs
14552 `(("mariadb" ,mariadb)
14553 ("nose" ,python-nose)
14554 ("mock" ,python-mock)
14555 ("py.test" ,python-pytest)))
14556 (inputs
14557 `(("mysql" ,mysql)
14558 ("libz" ,zlib)
14559 ("openssl" ,openssl)))
14560 (home-page "https://github.com/PyMySQL/mysqlclient-python")
14561 (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
14562 (description "MySQLdb is an interface to the popular MySQL database server
14563for Python. The design goals are:
14564@enumerate
14565@item Compliance with Python database API version 2.0 [PEP-0249],
14566@item Thread-safety,
14567@item Thread-friendliness (threads will not block each other).
14568@end enumerate")
14569 (license license:gpl2)))
14570
14571(define-public python2-mysqlclient
14572 (package-with-python2 python-mysqlclient))
14573
14574(define-public python-hiredis
14575 (package
14576 (name "python-hiredis")
14577 (version "0.2.0")
14578 (source
14579 (origin
14580 (method url-fetch)
14581 (uri (pypi-uri "hiredis" version))
14582 (sha256
14583 (base32
14584 "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
14585 (build-system python-build-system)
14586 (arguments
14587 ;; no tests
14588 `(#:tests? #f))
14589 (home-page "https://github.com/redis/hiredis-py")
14590 (synopsis "Python extension that wraps protocol parsing code in hiredis")
14591 (description "Python-hiredis is a python extension that wraps protocol
14592parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
14593 (license license:bsd-3)))
14594
14595(define-public python2-hiredis
14596 (package-with-python2 python-hiredis))
14597
14598(define-public python-fakeredis
14599 (package
14600 (name "python-fakeredis")
14601 (version "0.8.2")
14602 (source
14603 (origin
14604 (method url-fetch)
14605 (uri (pypi-uri "fakeredis" version))
14606 (sha256
14607 (base32
14608 "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
14609 (build-system python-build-system)
14610 (arguments
14611 ;; no tests
14612 `(#:tests? #f))
14613 (home-page "https://github.com/jamesls/fakeredis")
14614 (synopsis "Fake implementation of redis API for testing purposes")
14615 (description "Fakeredis is a pure python implementation of the redis-py
14616python client that simulates talking to a redis server. This was created for a
14617single purpose: to write unittests. Setting up redis is not hard, but many time
14618 you want to write unittests that do not talk to an external server (such as
14619redis). This module now allows tests to simply use this module as a reasonable
14620substitute for redis.")
14621 (license license:bsd-3)))
14622
14623(define-public python2-fakeredis
14624 (package-with-python2 python-fakeredis))