gnu: Add hexedit.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
a480bc41 6;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
534db463 10;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
6a44697d 14;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
02a8a187 15;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
264ae686 17;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
1872f1bb 18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
88bb4197 21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
b8fdbca3 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
0de78c95 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
9250b0f3 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
47d0b292 25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
42c4b246 26;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
a01b6da7
NK
27;;;
28;;; This file is part of GNU Guix.
29;;;
30;;; GNU Guix is free software; you can redistribute it and/or modify it
31;;; under the terms of the GNU General Public License as published by
32;;; the Free Software Foundation; either version 3 of the License, or (at
33;;; your option) any later version.
34;;;
35;;; GNU Guix is distributed in the hope that it will be useful, but
36;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38;;; GNU General Public License for more details.
39;;;
40;;; You should have received a copy of the GNU General Public License
41;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
1ffa7090 43(define-module (gnu packages python)
011b18c3 44 #:use-module ((guix licenses)
45203542 45 #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
63bcec71 46 gpl2 gpl2+ gpl3 gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ agpl3+
548d7165 47 isc mpl2.0 psfl public-domain repoze unlicense x11-style
7517e73c 48 zpl2.1))
bd3fa666 49 #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
3fdc99da 50 #:use-module (gnu packages)
8e451885 51 #:use-module (gnu packages algebra)
d79a343b 52 #:use-module (gnu packages adns)
89b2e0b0 53 #:use-module (gnu packages attr)
d96034ed 54 #:use-module (gnu packages backup)
1ffa7090 55 #:use-module (gnu packages compression)
4ed20663 56 #:use-module (gnu packages databases)
5e1c9367 57 #:use-module (gnu packages file)
4ed20663 58 #:use-module (gnu packages fontutils)
4ed20663
AE
59 #:use-module (gnu packages gcc)
60 #:use-module (gnu packages ghostscript)
61 #:use-module (gnu packages glib)
62 #:use-module (gnu packages gtk)
421a80a2 63 #:use-module (gnu packages icu4c)
c937562e 64 #:use-module (gnu packages image)
4ed20663 65 #:use-module (gnu packages imagemagick)
d79a343b 66 #:use-module (gnu packages libevent)
b10ab723 67 #:use-module (gnu packages libffi)
89b2e0b0 68 #:use-module (gnu packages linux)
0da98533 69 #:use-module (gnu packages maths)
4ed20663 70 #:use-module (gnu packages multiprecision)
45203542 71 #:use-module (gnu packages networking)
be7134bf 72 #:use-module (gnu packages ncurses)
c9b1b4f9 73 #:use-module (gnu packages pcre)
4ed20663 74 #:use-module (gnu packages perl)
b10ab723 75 #:use-module (gnu packages pkg-config)
4ed20663 76 #:use-module (gnu packages readline)
c9b1b4f9 77 #:use-module (gnu packages statistics)
8f9ac901 78 #:use-module (gnu packages tex)
1c65314c 79 #:use-module (gnu packages texinfo)
cc2b77df 80 #:use-module (gnu packages tls)
e25f0174 81 #:use-module (gnu packages version-control)
8d12be1e 82 #:use-module (gnu packages web)
ce0614dd 83 #:use-module (gnu packages base)
26b307e2 84 #:use-module (gnu packages xml)
6fa14469 85 #:use-module (gnu packages xorg)
0bdc1671 86 #:use-module (gnu packages xdisorg)
4ed20663 87 #:use-module (gnu packages zip)
afa181ff 88 #:use-module (gnu packages tcl)
63bcec71
DM
89 #:use-module (gnu packages bdw-gc)
90 #:use-module (gnu packages pcre)
a01b6da7
NK
91 #:use-module (guix packages)
92 #:use-module (guix download)
ea5456c8 93 #:use-module (guix git-download)
11bb85a1 94 #:use-module (guix utils)
acc26ff1 95 #:use-module (guix build-system gnu)
d8c4998f 96 #:use-module (guix build-system cmake)
898238b9 97 #:use-module (guix build-system python)
1c65314c
FB
98 #:use-module (guix build-system trivial)
99 #:use-module (srfi srfi-1))
a01b6da7 100
45848023 101(define-public python-2.7
a01b6da7
NK
102 (package
103 (name "python")
ff6f33cf 104 (version "2.7.10")
a01b6da7
NK
105 (source
106 (origin
107 (method url-fetch)
9b43a0ff 108 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
109 version "/Python-" version ".tar.xz"))
110 (sha256
111 (base32
6a20289d 112 "1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
fc1adab1
AK
113 (patches (search-patches
114 "python-2.7-search-paths.patch"
115 "python-2-deterministic-build-info.patch"
116 "python-2.7-source-date-epoch.patch"))))
02f0c3b2
LC
117 (outputs '("out"
118 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 119 (build-system gnu-build-system)
3fdc99da 120 (arguments
af807dea 121 `(#:tests? #f
ff6f33cf
ED
122 ;; 268 tests OK.
123 ;; 103 tests failed:
124 ;; test_distutils test_shutil test_signal test_site test_slice
125 ;; test_smtplib test_smtpnet test_socket test_socketserver
126 ;; test_softspace test_sort test_spwd test_sqlite test_ssl
127 ;; test_startfile test_stat test_str test_strftime test_string
128 ;; test_stringprep test_strop test_strptime test_strtod test_struct
129 ;; test_structmembers test_structseq test_subprocess test_sunau
130 ;; test_sunaudiodev test_sundry test_symtable test_syntax test_sys
131 ;; test_sys_setprofile test_sys_settrace test_sysconfig test_tarfile
132 ;; test_tcl test_telnetlib test_tempfile test_textwrap test_thread
133 ;; test_threaded_import test_threadedtempfile test_threading
134 ;; test_threading_local test_threadsignals test_time test_timeit
135 ;; test_timeout test_tk test_tokenize test_tools test_trace
136 ;; test_traceback test_transformer test_ttk_guionly test_ttk_textonly
137 ;; test_tuple test_typechecks test_ucn test_unary
138 ;; test_undocumented_details test_unicode test_unicode_file
139 ;; test_unicodedata test_univnewlines test_univnewlines2k test_unpack
140 ;; test_urllib test_urllib2 test_urllib2_localnet test_urllib2net
141 ;; test_urllibnet test_urlparse test_userdict test_userlist
142 ;; test_userstring test_uu test_uuid test_wait3 test_wait4
143 ;; test_warnings test_wave test_weakref test_weakset test_whichdb
144 ;; test_winreg test_winsound test_with test_wsgiref test_xdrlib
145 ;; test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc
146 ;; test_xpickle test_xrange test_zipfile test_zipfile64
147 ;; test_zipimport test_zipimport_support test_zlib
148 ;; 30 tests skipped:
149 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
150 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
151 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_crypt
152 ;; test_curses test_dl test_gdb test_gl test_idle test_imageop
153 ;; test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos
154 ;; test_macostools test_msilib test_nis test_ossaudiodev
155 ;; test_scriptpackages
156 ;; 6 skips unexpected on linux2:
157 ;; test_bsddb test_bsddb3 test_crypt test_gdb test_idle test_ioctl
158 ;; One of the typical errors:
159 ;; test_unicode
160 ;; test test_unicode crashed -- <type 'exceptions.OSError'>: [Errno 2] No
161 ;; such file or directory
af807dea 162 #:test-target "test"
3fdc99da 163 #:configure-flags
6a20289d
LC
164 (list "--enable-shared" ;allow embedding
165 "--with-system-ffi" ;build ctypes
166 (string-append "LDFLAGS=-Wl,-rpath="
167 (assoc-ref %outputs "out") "/lib"))
fd982732 168
d2cc9c7c
LC
169 #:modules ((ice-9 ftw) (ice-9 match)
170 (guix build utils) (guix build gnu-build-system))
fd982732 171 #:phases
46472ecd
MW
172 (modify-phases %standard-phases
173 (add-before
174 'configure 'patch-lib-shells
175 (lambda _
176 ;; Filter for existing files, since some may not exist in all
177 ;; versions of python that are built with this recipe.
178 (substitute* (filter file-exists?
179 '("Lib/subprocess.py"
180 "Lib/popen2.py"
181 "Lib/distutils/tests/test_spawn.py"
182 "Lib/test/test_subprocess.py"))
183 (("/bin/sh") (which "sh")))
dedc8320
LC
184
185 ;; Use zero as the timestamp in .pyc files so that builds are
186 ;; deterministic. TODO: Remove it when this variable is set in
187 ;; gnu-build-system.scm.
a665996f 188 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 189 #t))
5b4e2791
LC
190 (add-before 'configure 'do-not-record-configure-flags
191 (lambda* (#:key configure-flags #:allow-other-keys)
192 ;; Remove configure flags from the installed '_sysconfigdata.py'
193 ;; and 'Makefile' so we don't end up keeping references to the
194 ;; build tools.
195 ;;
196 ;; Preserve at least '--with-system-ffi' since otherwise the
197 ;; thing tries to build libffi, fails, and we end up with a
198 ;; Python that lacks ctypes.
199 (substitute* "configure"
200 (("^CONFIG_ARGS=.*$")
201 (format #f "CONFIG_ARGS='~a'\n"
202 (if (member "--with-system-ffi" configure-flags)
203 "--with-system-ffi"
204 ""))))
205 #t))
46472ecd
MW
206 (add-before
207 'check 'pre-check
208 (lambda _
209 ;; 'Lib/test/test_site.py' needs a valid $HOME
210 (setenv "HOME" (getcwd))
211 #t))
212 (add-after
213 'unpack 'set-source-file-times-to-1980
214 ;; XXX One of the tests uses a ZIP library to pack up some of the
215 ;; source tree, and fails with "ZIP does not support timestamps
216 ;; before 1980". Work around this by setting the file times in the
217 ;; source tree to sometime in early 1980.
218 (lambda _
219 (let ((circa-1980 (* 10 366 24 60 60)))
220 (ftw "." (lambda (file stat flag)
221 (utime file circa-1980 circa-1980)
222 #t))
02f0c3b2
LC
223 #t)))
224 (add-after 'install 'move-tk-inter
225 (lambda* (#:key outputs #:allow-other-keys)
226 ;; When Tkinter support is built move it to a separate output so
227 ;; that the main output doesn't contain a reference to Tcl/Tk.
228 (let ((out (assoc-ref outputs "out"))
229 (tk (assoc-ref outputs "tk")))
230 (when tk
231 (match (find-files out "tkinter.*\\.so")
232 ((tkinter.so)
233 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
234 ;; want it under TK/lib/pythonX.Y/site-packages.
235 (let* ((len (string-length out))
236 (target (string-append
237 tk "/"
238 (string-drop
239 (dirname (dirname tkinter.so))
240 len)
241 "/site-packages")))
242 (install-file tkinter.so target)
243 (delete-file tkinter.so)))))
244 #t))))))
a01b6da7 245 (inputs
3fdc99da
CR
246 `(("bzip2" ,bzip2)
247 ("gdbm" ,gdbm)
b10ab723 248 ("libffi" ,libffi) ; for ctypes
b88e1b0a 249 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 250 ("openssl" ,openssl)
3fdc99da 251 ("readline" ,readline)
afa181ff
LC
252 ("zlib" ,zlib)
253 ("tcl" ,tcl)
254 ("tk" ,tk))) ; for tkinter
b10ab723
CR
255 (native-inputs
256 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
257 (native-search-paths
258 (list (search-path-specification
259 (variable "PYTHONPATH")
af070955 260 (files '("lib/python2.7/site-packages")))))
a01b6da7 261 (home-page "http://python.org")
afa181ff 262 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
263 (description
264 "Python is a remarkably powerful dynamic programming language that
265is used in a wide variety of application domains. Some of its key
266distinguishing features include: clear, readable syntax; strong
267introspection capabilities; intuitive object orientation; natural
268expression of procedural code; full modularity, supporting hierarchical
269packages; exception-based error handling; and very high level dynamic
270data types.")
271 (license psfl)))
acc26ff1 272
45848023
HG
273;; Current 2.x version.
274(define-public python-2 python-2.7)
275
276(define-public python-3.4
b24d1cfc 277 (package (inherit python-2)
08c04509 278 (version "3.4.3")
717003e3
LC
279 (source (origin
280 (method url-fetch)
281 (uri (string-append "https://www.python.org/ftp/python/"
282 version "/Python-" version ".tar.xz"))
fc1adab1
AK
283 (patches (search-patches
284 "python-fix-tests.patch"
285 ;; XXX Try removing this patch for python > 3.4.3
286 "python-disable-ssl-test.patch"
287 "python-3-deterministic-build-info.patch"
288 "python-3-search-paths.patch"))
717003e3
LC
289 (patch-flags '("-p0"))
290 (sha256
291 (base32
08c04509 292 "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm"))))
1f434457
MW
293 (arguments (substitute-keyword-arguments (package-arguments python-2)
294 ((#:tests? _) #t)))
1aebc0cb
AE
295 (native-search-paths
296 (list (search-path-specification
297 (variable "PYTHONPATH")
0e05d01e
SB
298 (files (list (string-append "lib/python"
299 (version-major+minor version)
300 "/site-packages"))))))))
f26a77ff 301
45848023
HG
302;; Current 3.x version.
303(define-public python-3 python-3.4)
304
305;; Current major version.
306(define-public python python-3)
307
95288fcc
LC
308;; Minimal variants of Python, mostly used to break the cycle between Tk and
309;; Python (Tk -> libxcb -> Python.)
310
311(define-public python2-minimal
312 (package (inherit python-2)
313 (name "python-minimal")
02f0c3b2 314 (outputs '("out"))
95288fcc
LC
315 (arguments
316 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
317 ((#:configure-flags cf)
318 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
319 (inputs '()))) ;none of the optional dependencies
320
321(define-public python-minimal
898238b9 322 (package (inherit python)
95288fcc 323 (name "python-minimal")
02f0c3b2 324 (outputs '("out"))
95288fcc
LC
325 (arguments
326 (substitute-keyword-arguments (package-arguments python)
c5a05e31
LC
327 ((#:configure-flags cf)
328 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
329
330 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
331 ;; zlib is required by 'zipimport', used by pip.
332 (inputs `(("openssl" ,openssl)
333 ("zlib" ,zlib)))))
334
64cb064c
LC
335(define* (wrap-python3 python
336 #:optional
337 (name (string-append (package-name python) "-wrapper")))
898238b9 338 (package (inherit python)
95288fcc 339 (name name)
898238b9
AE
340 (source #f)
341 (build-system trivial-build-system)
02f0c3b2 342 (outputs '("out"))
3c0f2329 343 (propagated-inputs `(("python" ,python)))
898238b9
AE
344 (arguments
345 `(#:modules ((guix build utils))
346 #:builder
347 (begin
348 (use-modules (guix build utils))
349 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
350 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
351 (mkdir-p bin)
352 (for-each
353 (lambda (old new)
354 (symlink (string-append python old)
355 (string-append bin "/" new)))
b3546174
MW
356 `("python3" ,"pydoc3" ,"idle3")
357 `("python" ,"pydoc" ,"idle"))))))
0d56e3e1
LC
358 (synopsis "Wrapper for the Python 3 commands")
359 (description
360 "This package provides wrappers for the commands of Python@tie{}3.x such
361that they can be invoked under their usual name---e.g., @command{python}
362instead of @command{python3}.")))
363
95288fcc
LC
364(define-public python-wrapper (wrap-python3 python))
365(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 366
aaf625b8
RW
367(define-public python-psutil
368 (package
369 (name "python-psutil")
88535a44 370 (version "4.3.0")
aaf625b8
RW
371 (source
372 (origin
373 (method url-fetch)
f56777be 374 (uri (pypi-uri "psutil" version))
aaf625b8
RW
375 (sha256
376 (base32
88535a44 377 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8
RW
378 (build-system python-build-system)
379 (native-inputs
380 `(("python-setuptools" ,python-setuptools)))
88535a44 381 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
382 (synopsis "Library for retrieving information on running processes")
383 (description
384 "psutil (Python system and process utilities) is a library for retrieving
385information on running processes and system utilization (CPU, memory, disks,
386network) in Python. It is useful mainly for system monitoring, profiling and
387limiting process resources and management of running processes. It implements
388many functionalities offered by command line tools such as: ps, top, lsof,
389netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
390pidof, tty, taskset, pmap.")
391 (license bsd-3)))
392
393(define-public python2-psutil
394 (package-with-python2 python-psutil))
898238b9 395
f9da1d8a
ED
396(define-public python-passlib
397 (package
398 (name "python-passlib")
690e8c66 399 (version "1.6.5")
f9da1d8a
ED
400 (source
401 (origin
402 (method url-fetch)
690e8c66 403 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
404 (sha256
405 (base32
690e8c66 406 "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
f9da1d8a
ED
407 (build-system python-build-system)
408 (native-inputs
409 `(("python-nose" ,python-nose)
410 ("python-setuptools" ,python-setuptools)))
411 (inputs
412 `(("python-py-bcrypt" ,python-py-bcrypt)))
413 (arguments
414 `(#:phases
415 (alist-cons-before
416 'check 'set-PYTHON_EGG_CACHE
417 ;; some tests require access to "$HOME/.cython"
418 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
419 %standard-phases)))
420 (home-page "https://bitbucket.org/ecollins/passlib")
421 (synopsis
422 "Comprehensive password hashing framework")
423 (description
424 "Passlib is a password hashing library for Python 2 & 3, which provides
425cross-platform implementations of over 30 password hashing algorithms, as well
426as a framework for managing existing password hashes. It's designed to be
427useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
428to providing full-strength password hashing for multi-user application.")
429 (license bsd-3)))
430
431(define-public python2-passlib
432 (package-with-python2 python-passlib))
433
feb0d9c3
ED
434(define-public python-py-bcrypt
435 (package
436 (name "python-py-bcrypt")
437 (version "0.4")
438 (source
439 (origin
440 (method url-fetch)
441 (uri (string-append
442 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
443 version
444 ".tar.gz"))
445 (sha256
446 (base32
447 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
448 (build-system python-build-system)
449 (native-inputs
450 `(("python-setuptools" ,python-setuptools)))
451 (home-page "https://code.google.com/p/py-bcrypt")
452 (synopsis
453 "Bcrypt password hashing and key derivation")
454 (description
455 "A python wrapper of OpenBSD's Blowfish password hashing code. This
456system hashes passwords using a version of Bruce Schneier's Blowfish block
457cipher with modifications designed to raise the cost of off-line password
458cracking and frustrate fast hardware implementation. The computation cost of
459the algorithm is parametised, so it can be increased as computers get faster.
460The intent is to make a compromise of a password database less likely to
461result in an attacker gaining knowledge of the plaintext passwords (e.g. using
462John the Ripper).")
463 ;; "sha2.c" is under BSD-3;
464 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
465 ;; the rest is under ISC.
466 (license (list isc bsd-3 bsd-4))))
467
468(define-public python2-py-bcrypt
469 (package-with-python2 python-py-bcrypt))
470
471
429fdea1
ED
472(define-public python-paramiko
473 (package
474 (name "python-paramiko")
81b9bbbd 475 (version "1.16.0")
429fdea1
ED
476 (source
477 (origin
478 (method url-fetch)
81b9bbbd 479 (uri (pypi-uri "paramiko" version))
429fdea1
ED
480 (sha256
481 (base32
81b9bbbd 482 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1
ED
483 (build-system python-build-system)
484 (native-inputs
485 `(("python-setuptools" ,python-setuptools)))
a3fc12da
CR
486 (propagated-inputs
487 `(("python-pycrypto" ,python-pycrypto)))
429fdea1 488 (inputs
a3fc12da 489 `(("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
490 (home-page "http://www.paramiko.org/")
491 (synopsis "SSHv2 protocol library")
492 (description "Paramiko is a python implementation of the SSHv2 protocol,
493providing both client and server functionality. While it leverages a Python C
494extension for low level cryptography (PyCrypto), Paramiko itself is a pure
495Python interface around SSH networking concepts.")
496 (license lgpl2.1+)))
497
498(define-public python2-paramiko
499 (package-with-python2 python-paramiko))
500
501
de73dbf6
ED
502(define-public python-httplib2
503 (package
504 (name "python-httplib2")
286f1bac 505 (version "0.9.2")
de73dbf6
ED
506 (source
507 (origin
508 (method url-fetch)
286f1bac 509 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
510 (sha256
511 (base32
286f1bac 512 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6
ED
513 (build-system python-build-system)
514 (native-inputs
515 `(("python-setuptools" ,python-setuptools)))
286f1bac 516 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
517 (synopsis "Comprehensive HTTP client library")
518 (description
519 "A comprehensive HTTP client library supporting many features left out of
520other HTTP libraries.")
521 (license license:expat)))
522
523(define-public python2-httplib2
524 (package-with-python2 python-httplib2))
525
67039875
ED
526(define-public python-ecdsa
527 (package
528 (name "python-ecdsa")
529 (version "0.13")
530 (source
531 (origin
532 (method url-fetch)
533 (uri (string-append
534 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
535 version
536 ".tar.gz"))
537 (sha256
538 (base32
539 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
540 (build-system python-build-system)
541 (native-inputs
542 `(("python-setuptools" ,python-setuptools)))
543 (inputs
544 `(("openssl" ,openssl)))
545 (home-page
546 "http://github.com/warner/python-ecdsa")
547 (synopsis
548 "ECDSA cryptographic signature library (pure python)")
549 (description
550 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
551Curve Digital Signature Algorithm), implemented purely in Python. With this
552library, you can quickly create keypairs (signing key and verifying key), sign
553messages, and verify the signatures. The keys and signatures are very short,
554making them easy to handle and incorporate into other protocols.")
555 (license license:expat)))
556
557(define-public python2-ecdsa
558 (package-with-python2 python-ecdsa))
559
52323f32
ED
560(define-public python-ccm
561 (package
562 (name "python-ccm")
db5567f7 563 (version "2.1.6")
52323f32
ED
564 (source
565 (origin
566 (method url-fetch)
db5567f7 567 (uri (pypi-uri "ccm" version))
52323f32
ED
568 (sha256
569 (base32
db5567f7 570 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32
ED
571 (build-system python-build-system)
572 (native-inputs
573 `(("python-setuptools" ,python-setuptools)))
574 (inputs
575 `(("python-pyyaml" ,python-pyyaml)
576 ("python-six" ,python-six)))
577 (home-page "https://github.com/pcmanus/ccm")
578 (synopsis "Cassandra Cluster Manager")
579 (description "A script/library to create, launch and remove an Apache
580Cassandra cluster on localhost.")
581 (license asl2.0)))
582
583(define-public python2-ccm
584 (package-with-python2 python-ccm))
585
89114f39 586(define-public python-pytz
acc26ff1 587 (package
89114f39 588 (name "python-pytz")
61c9babb 589 (version "2016.3")
acc26ff1
CR
590 (source
591 (origin
592 (method url-fetch)
61c9babb 593 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
594 (sha256
595 (base32
61c9babb 596 "1mjmrkk4vc5xzppw7fm0pli1nnbj57cvqv7jjv5whcmccyhxz4y1"))))
acc26ff1 597 (build-system python-build-system)
8498b8cf 598 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 599 (home-page "http://pythonhosted.org/pytz")
9e771e3b 600 (synopsis "Python timezone library")
acc26ff1
CR
601 (description
602 "This library allows accurate and cross platform timezone calculations
603using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 604 (license license:expat)))
5ace6e2f 605
89114f39 606(define-public python2-pytz
11bb85a1 607 (package-with-python2 python-pytz))
89114f39 608
fc50e9c6 609
89114f39 610(define-public python-babel
5ace6e2f 611 (package
89114f39 612 (name "python-babel")
3f37db6b 613 (version "2.3.2")
5ace6e2f
CR
614 (source
615 (origin
616 (method url-fetch)
b850a6d8 617 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
618 (sha256
619 (base32
3f37db6b 620 "0k43pi0p1dwpds2w0km3fw92wixzxv2vw7p09capxmjz5cfh23lw"))))
5ace6e2f
CR
621 (build-system python-build-system)
622 (inputs
e1804763
AE
623 `(("python-pytz" ,python-pytz)
624 ("python-setuptools" ,python-setuptools)))
8498b8cf 625 (arguments `(#:tests? #f)) ; no test target
e1804763 626 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
627 (synopsis
628 "Tools for internationalizing Python applications")
629 (description
630 "Babel is composed of two major parts:
631- tools to build and work with gettext message catalogs
632- a Python interface to the CLDR (Common Locale Data Repository), providing
633access to various locale display names, localized number and date formatting,
634etc. ")
635 (license bsd-3)))
89114f39
AE
636
637(define-public python2-babel
11bb85a1 638 (package-with-python2 python-babel))
73adf220 639
ed377cc6
RW
640(define-public python2-backport-ssl-match-hostname
641 (package
642 (name "python2-backport-ssl-match-hostname")
f2d06d46 643 (version "3.5.0.1")
ed377cc6
RW
644 (source
645 (origin
646 (method url-fetch)
647 (uri (string-append
648 "https://pypi.python.org/packages/source/b/"
649 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
650 version ".tar.gz"))
651 (sha256
652 (base32
f2d06d46 653 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 654 (build-system python-build-system)
f2d06d46
EF
655 (arguments
656 `(#:python ,python-2
657 #:tests? #f)) ; no test target
ed377cc6
RW
658 (inputs
659 `(("python2-setuptools" ,python2-setuptools)))
f2d06d46
EF
660 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
661 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
662 (description
663 "This backport brings the ssl.match_hostname() function to users of
664earlier versions of Python. The function checks the hostname in the
665certificate returned by the server to which a connection has been established,
666and verifies that it matches the intended target hostname.")
667 (license psfl)))
668
ef5cbf9b
RW
669(define-public python-h5py
670 (package
671 (name "python-h5py")
fe147c41 672 (version "2.6.0")
ef5cbf9b
RW
673 (source
674 (origin
675 (method url-fetch)
fe147c41 676 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
677 (sha256
678 (base32
fe147c41 679 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 680 (build-system python-build-system)
797e1401
RW
681 (arguments
682 `(#:tests? #f ; no test target
683 #:phases
684 (modify-phases %standard-phases
685 (add-after 'unpack 'fix-hdf5-paths
686 (lambda* (#:key inputs #:allow-other-keys)
687 (let ((prefix (assoc-ref inputs "hdf5")))
688 (substitute* "setup_build.py"
689 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
690 (string-append "['" prefix "/lib" "']"))
691 (("'/opt/local/include', '/usr/local/include'")
692 (string-append "'" prefix "/include" "'")))
693 (substitute* "setup_configure.py"
694 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
695 (string-append "['" prefix "/lib" "']")))
696 #t))))))
3c4010b1
RW
697 (propagated-inputs
698 `(("python-numpy" ,python-numpy)))
ef5cbf9b 699 (inputs
fe147c41
EF
700 `(("hdf5" ,hdf5)
701 ("python-six" ,python-six)))
ef5cbf9b 702 (native-inputs
fe147c41
EF
703 `(("python-cython" ,python-cython)
704 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
705 (home-page "http://www.h5py.org/")
706 (synopsis "Read and write HDF5 files from Python")
707 (description
708 "The h5py package provides both a high- and low-level interface to the
709HDF5 library from Python. The low-level interface is intended to be a
710complete wrapping of the HDF5 API, while the high-level component supports
711access to HDF5 files, datasets and groups using established Python and NumPy
712concepts.")
fe147c41
EF
713 (license bsd-3)
714 (properties `((python2-variant . ,(delay python2-h5py))))))
ef5cbf9b
RW
715
716(define-public python2-h5py
fe147c41 717 (package-with-python2 (strip-python2-variant python-h5py)))
ef5cbf9b 718
c1448c69
EB
719(define-public python-lockfile
720 (package
721 (name "python-lockfile")
692add53 722 (version "0.12.2")
c1448c69
EB
723 (source
724 (origin
725 (method url-fetch)
726 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
727 "lockfile-" version ".tar.gz"))
728 (sha256
729 (base32
692add53 730 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
731 (build-system python-build-system)
732 (arguments '(#:test-target "check"))
692add53
BW
733 (native-inputs
734 `(("python-pbr" ,python-pbr)))
c1448c69
EB
735 (home-page "http://code.google.com/p/pylockfile/")
736 (synopsis "Platform-independent file locking module")
737 (description
738 "The lockfile package exports a LockFile class which provides a simple
739API for locking files.")
1804527a
BW
740 (license license:expat)
741 (properties `((python2-variant . ,(delay python2-lockfile))))))
c1448c69
EB
742
743(define-public python2-lockfile
1804527a
BW
744 (let ((base (package-with-python2 (strip-python2-variant python-lockfile))))
745 (package
692add53
BW
746 (inherit base)
747 (native-inputs `(("python2-setuptools" ,python2-setuptools)
748 ,@(package-native-inputs base))))))
c1448c69 749
5a1a4bf6
EB
750(define-public python-mock
751 (package
752 (name "python-mock")
753 (version "1.0.1")
754 (source
755 (origin
756 (method url-fetch)
757 (uri (string-append "https://pypi.python.org/packages/source/m/mock/"
758 "mock-" version ".tar.gz"))
759 (sha256
760 (base32
761 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
762 (build-system python-build-system)
763 (arguments '(#:test-target "check"))
07af3e5e 764 (home-page "http://code.google.com/p/mock/")
9e771e3b 765 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
766 (description
767 "Mock is a library for testing in Python. It allows you to replace parts
768of your system under test with mock objects and make assertions about how they
769have been used.")
bd3fa666 770 (license license:expat)))
5a1a4bf6
EB
771
772(define-public python2-mock
773 (package-with-python2 python-mock))
774
fc50e9c6 775
73adf220
AE
776(define-public python-setuptools
777 (package
778 (name "python-setuptools")
62a9a23b 779 (version "18.3.1")
73adf220
AE
780 (source
781 (origin
782 (method url-fetch)
783 (uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
784 version ".tar.gz"))
785 (sha256
786 (base32
62a9a23b 787 "0kc7rbav00ks6iaw14p38y81q12fx0lpkhgf5m97xc04f5r318ig"))))
73adf220 788 (build-system python-build-system)
d3d656c5
AE
789 ;; FIXME: Tests require pytest, which itself relies on setuptools.
790 ;; One could bootstrap with an internal untested setuptools.
73adf220 791 (arguments
824af8ca 792 `(#:tests? #f))
73adf220
AE
793 (home-page "https://pypi.python.org/pypi/setuptools")
794 (synopsis
795 "Library designed to facilitate packaging Python projects")
796 (description
797 "Setuptools is a fully-featured, stable library designed to facilitate
798packaging Python projects, where packaging includes:
799Python package and module definitions,
800distribution package metadata,
801test hooks,
802project installation,
803platform-specific details,
804Python 3 support.")
805 (license psfl)))
806
807(define-public python2-setuptools
808 (package-with-python2 python-setuptools))
fc50e9c6
AE
809
810
cafc3f5a
EB
811(define-public python-pycrypto
812 (package
813 (name "python-pycrypto")
814 (version "2.6.1")
815 (source
816 (origin
817 (method url-fetch)
818 (uri (string-append "https://pypi.python.org/packages/source/p/"
819 "pycrypto/pycrypto-" version ".tar.gz"))
820 (sha256
821 (base32
822 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
823 (build-system python-build-system)
824 (native-inputs
825 `(("python-setuptools" ,python-setuptools)))
826 (inputs
827 `(("python" ,python)
828 ("gmp" ,gmp)))
829 (arguments
830 `(#:phases
831 (alist-cons-before
832 'build 'set-build-env
833 ;; pycrypto runs an autoconf configure script behind the scenes
834 (lambda _
835 (setenv "CONFIG_SHELL" (which "bash")))
836 %standard-phases)))
837 (home-page "http://www.pycrypto.org/")
838 (synopsis "Cryptographic modules for Python")
839 (description
840 "Pycrypto is a collection of both secure hash functions (such as SHA256
841and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 842etc.). The package is structured to make adding new modules easy.")
cafc3f5a
EB
843 (license public-domain)))
844
345f0611 845(define-public python2-pycrypto
1c0059da
EF
846 (let ((pycrypto (package-with-python2 python-pycrypto)))
847 (package (inherit pycrypto)
848 (inputs
849 `(("python" ,python-2)
850 ,@(alist-delete
851 "python"
852 (package-inputs pycrypto)))))))
345f0611 853
cafc3f5a
EB
854(define-public python-keyring
855 (package
856 (name "python-keyring")
13f3ff35 857 (version "8.7")
cafc3f5a
EB
858 (source
859 (origin
860 (method url-fetch)
664e6c3a 861 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
862 (sha256
863 (base32
13f3ff35 864 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
865 (build-system python-build-system)
866 (native-inputs
13f3ff35 867 `(("python-setuptools-scm" ,python-setuptools-scm)))
cafc3f5a
EB
868 (inputs
869 `(("python-pycrypto" ,python-pycrypto)))
870 (arguments
664e6c3a 871 `(#:tests? #f)) ;TODO: tests require pytest
cafc3f5a
EB
872 (home-page "http://bitbucket.org/kang/python-keyring-lib")
873 (synopsis "Store and access your passwords safely")
874 (description
875 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 876service from python. It can be used in any application that needs safe
cafc3f5a
EB
877password storage.")
878 ;; "MIT" and PSF dual license
13f3ff35
EF
879 (license x11)
880 (properties `((python2-variant . ,(delay python2-keyring))))))
cafc3f5a 881
d7af1069 882(define-public python2-keyring
13f3ff35
EF
883 (let ((base (package-with-python2 (strip-python2-variant python-keyring))))
884 (package
885 (inherit base)
886 (native-inputs `(("python2-setuptools" ,python2-setuptools)
887 ,@(package-native-inputs base))))))
d7af1069 888
a480bc41
EB
889(define-public python-six
890 (package
891 (name "python-six")
b6ab89ef 892 (version "1.10.0")
a480bc41
EB
893 (source
894 (origin
895 (method url-fetch)
b6ab89ef 896 (uri (pypi-uri "six" version))
a480bc41
EB
897 (sha256
898 (base32
b6ab89ef 899 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41
EB
900 (build-system python-build-system)
901 (inputs
902 `(("python-setuptools" ,python-setuptools)))
903 (home-page "http://pypi.python.org/pypi/six/")
904 (synopsis "Python 2 and 3 compatibility utilities")
905 (description
35b9e423 906 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
907functions for smoothing over the differences between the Python versions with
908the goal of writing Python code that is compatible on both Python versions.
35b9e423 909Six supports every Python version since 2.5. It is contained in only one
a480bc41
EB
910Python file, so it can be easily copied into your project.")
911 (license x11)))
912
0c20025c
AE
913(define-public python2-six
914 (package-with-python2 python-six))
915
cafc3f5a
EB
916(define-public python-dateutil-2
917 (package
918 (name "python-dateutil")
394b8060 919 (version "2.5.2")
cafc3f5a
EB
920 (source
921 (origin
922 (method url-fetch)
394b8060 923 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
924 (sha256
925 (base32
394b8060 926 "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
cafc3f5a
EB
927 (build-system python-build-system)
928 (inputs
394b8060 929 `(("python-six" ,python-six)))
cafc3f5a
EB
930 (home-page "http://labix.org/python-dateutil")
931 (synopsis "Extensions to the standard datetime module")
932 (description
933 "The dateutil module provides powerful extensions to the standard
934datetime module, available in Python 2.3+.")
394b8060
EF
935 (license bsd-3)
936 (properties `((python2-variant . ,(delay python2-dateutil-2))))))
cafc3f5a
EB
937
938(define-public python2-dateutil-2
394b8060
EF
939 (let ((base (package-with-python2 (strip-python2-variant python-dateutil-2))))
940 (package
941 (inherit base)
942 (inputs `(("python2-setuptools" ,python2-setuptools)
943 ,@(package-inputs base))))))
cafc3f5a 944
fc50e9c6
AE
945(define-public python-dateutil
946 (package
947 (name "python-dateutil")
948 (version "1.5") ; last version for python < 3
949 (source
950 (origin
951 (method url-fetch)
cafc3f5a
EB
952 (uri (string-append "http://labix.org/download/python-dateutil/"
953 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
954 (sha256
955 (base32
956 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
957 (build-system python-build-system)
958 (inputs
959 `(("python-setuptools" ,python-setuptools)))
960 (home-page "http://labix.org/python-dateutil")
cafc3f5a 961 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
962 (description
963 "The dateutil module provides powerful extensions to the standard
964datetime module, available in Python 2.3+.")
965 (license psfl)))
966
967(define-public python2-dateutil
968 (package-with-python2 python-dateutil))
1d08c01f 969
cafc3f5a
EB
970(define-public python-parsedatetime
971 (package
972 (name "python-parsedatetime")
eebf6f01 973 (version "2.1")
cafc3f5a
EB
974 (source
975 (origin
976 (method url-fetch)
eebf6f01 977 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
978 (sha256
979 (base32
eebf6f01 980 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
981 (build-system python-build-system)
982 (native-inputs
eebf6f01
EF
983 `(("python-nose" ,python-nose)
984 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
985 (home-page "http://github.com/bear/parsedatetime/")
986 (synopsis
987 "Parse human-readable date/time text")
988 (description
e881752c 989 "Parse human-readable date/time text.")
eebf6f01
EF
990 (license asl2.0)
991 (properties `((python2-variant . ,(delay python2-parsedatetime))))))
cafc3f5a 992
38b8f9b2 993(define-public python2-parsedatetime
eebf6f01
EF
994 (let ((base (package-with-python2 (strip-python2-variant python-parsedatetime))))
995 (package
996 (inherit base)
997 (native-inputs `(("python2-setuptools" ,python2-setuptools)
998 ,@(package-native-inputs base))))))
38b8f9b2 999
d072efcb
RW
1000(define-public python-pandas
1001 (package
1002 (name "python-pandas")
7d0c3c8d 1003 (version "0.18.1")
d072efcb
RW
1004 (source
1005 (origin
1b96f069 1006 (method url-fetch)
7d0c3c8d
EF
1007 (uri (string-append
1008 "https://pypi.python.org/packages/11/09/"
1009 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1010 "pandas-" version ".tar.gz"))
1b96f069 1011 (sha256
7d0c3c8d 1012 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1013 (build-system python-build-system)
d072efcb 1014 (propagated-inputs
42603726
EF
1015 `(("python-numpy" ,python-numpy)))
1016 (inputs
1017 `(("python-pytz" ,python-pytz)
d072efcb
RW
1018 ("python-dateutil" ,python-dateutil-2)))
1019 (native-inputs
7d0c3c8d 1020 `(("python-nose" ,python-nose)))
d072efcb
RW
1021 (home-page "http://pandas.pydata.org")
1022 (synopsis "Data structures for data analysis, time series, and statistics")
1023 (description
1024 "Pandas is a Python package providing fast, flexible, and expressive data
1025structures designed to make working with structured (tabular,
1026multidimensional, potentially heterogeneous) and time series data both easy
1027and intuitive. It aims to be the fundamental high-level building block for
1028doing practical, real world data analysis in Python.")
7d0c3c8d
EF
1029 (license bsd-3)
1030 (properties `((python2-variant . ,(delay python2-pandas))))))
d072efcb
RW
1031
1032(define-public python2-pandas
7d0c3c8d
EF
1033 (let ((base (package-with-python2 (strip-python2-variant python-pandas))))
1034 (package
1035 (inherit base)
1036 (native-inputs `(("python2-setuptools" ,python2-setuptools)
dbd40ac1 1037 ,@(package-native-inputs base))))))
d072efcb 1038
cafc3f5a
EB
1039(define-public python-tzlocal
1040 (package
1041 (name "python-tzlocal")
ed80839b 1042 (version "1.2.2")
cafc3f5a
EB
1043 (source
1044 (origin
1045 (method url-fetch)
226d3331 1046 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1047 (sha256
1048 (base32
ed80839b 1049 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1050 (build-system python-build-system)
ed80839b 1051 (inputs `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1052 (home-page "https://github.com/regebro/tzlocal")
1053 (synopsis
35b9e423 1054 "Local timezone information for Python")
cafc3f5a
EB
1055 (description
1056 "Tzlocal returns a tzinfo object with the local timezone information.
1057This module attempts to fix a glaring hole in pytz, that there is no way to
1058get the local timezone information, unless you know the zoneinfo name, and
1059under several distributions that's hard or impossible to figure out.")
1060 (license cc0)))
1061
1d08c01f
AE
1062(define-public python2-pysqlite
1063 (package
1064 (name "python2-pysqlite")
fe476868 1065 (version "2.8.1")
1d08c01f
AE
1066 (source
1067 (origin
1068 (method url-fetch)
fe476868 1069 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1070 (sha256
1071 (base32
fe476868 1072 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1073 (build-system python-build-system)
1074 (inputs
1075 `(("sqlite" ,sqlite)))
1076 (arguments
1077 `(#:python ,python-2 ; incompatible with Python 3
1078 #:tests? #f)) ; no test target
fe476868 1079 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1080 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1081 (description
1082 "Pysqlite provides SQLite bindings for Python that comply to the
1083Database API 2.0T.")
ed0cdf83 1084 (license license:zlib)))
1d08c01f 1085
2875caf5
AE
1086
1087(define-public python2-mechanize
1088 (package
1089 (name "python2-mechanize")
1090 (version "0.2.5")
1091 (source
1092 (origin
1093 (method url-fetch)
1094 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1095 version ".tar.gz"))
1096 (sha256
1097 (base32
1098 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1099 (build-system python-build-system)
1100 (inputs
1101 `(("python2-setuptools" ,python2-setuptools)))
1102 (arguments
1103 `(#:python ,python-2 ; apparently incompatible with Python 3
1104 #:tests? #f))
1105 ;; test fails with message
1106 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1107 ;; (python-3.3.2) or
1108 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1109 ;; (python-2.7.5).
1110 ;; The source code is from March 2011 and probably not up-to-date
1111 ;; with respect to python unit tests.
1112 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1113 (synopsis
1114 "Stateful programmatic web browsing in Python")
1115 (description
1116 "Mechanize implements stateful programmatic web browsing in Python,
1117after Andy Lester’s Perl module WWW::Mechanize.")
166191b3 1118 (license (non-copyleft "file://COPYING"
e881752c 1119 "See COPYING in the distribution."))))
2875caf5 1120
0352532e
AE
1121
1122(define-public python-simplejson
1123 (package
1124 (name "python-simplejson")
988d1bad 1125 (version "3.8.2")
0352532e
AE
1126 (source
1127 (origin
1128 (method url-fetch)
988d1bad 1129 (uri (pypi-uri "simplejson" version))
0352532e
AE
1130 (sha256
1131 (base32
988d1bad 1132 "0zylrnax8b6r0ndgni4w9c599fi6wm9vx5g6k3ddqfj3932kk16m"))))
0352532e
AE
1133 (build-system python-build-system)
1134 (home-page "http://simplejson.readthedocs.org/en/latest/")
1135 (synopsis
1136 "Json library for Python")
1137 (description
e881752c
AK
1138 "JSON (JavaScript Object Notation) is a subset of JavaScript
1139syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1140format.
0352532e
AE
1141
1142Simplejson exposes an API familiar to users of the standard library marshal
1143and pickle modules. It is the externally maintained version of the json
1144library contained in Python 2.6, but maintains compatibility with Python 2.5
1145and (currently) has significant performance advantages, even without using
1146the optional C extension for speedups. Simplejson is also supported on
1147Python 3.3+.")
1148 (license x11)))
1149
1150(define-public python2-simplejson
1151 (package-with-python2 python-simplejson))
421a80a2
AE
1152
1153
ed07b08d 1154(define-public python-pyicu
421a80a2 1155 (package
ed07b08d 1156 (name "python-pyicu")
d3b29319 1157 (version "1.9.2")
421a80a2
AE
1158 (source
1159 (origin
1160 (method url-fetch)
1161 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1162 version ".tar.gz"))
1163 (sha256
1164 (base32
d3b29319 1165 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1166 (build-system python-build-system)
1167 (inputs
1168 `(("icu4c" ,icu4c)))
421a80a2 1169 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1170 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1171 (description
1172 "PyICU is a python extension wrapping the ICU C++ API.")
ed07b08d
LF
1173 (license x11)
1174 (properties `((python2-variant . ,(delay python2-pyicu))))))
1175
1176(define-public python2-pyicu
1177 (package
1178 (inherit (package-with-python2
1179 (strip-python2-variant python-pyicu)))
1180 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cc20a22a
LC
1181
1182(define-public python2-dogtail
1183 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1184 ;; spaces in indentation" with Python 3.
1185 (package
1186 (name "python2-dogtail")
1187 (version "0.8.2")
1188 (source (origin
1189 (method url-fetch)
1190 (uri (string-append
1191 "https://fedorahosted.org/released/dogtail/dogtail-"
1192 version ".tar.gz"))
1193 (sha256
1194 (base32
1195 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1196 (build-system python-build-system)
1197 (arguments `(#:python ,python-2
1198 #:tests? #f)) ; invalid command "test"
1199 (home-page "https://fedorahosted.org/dogtail/")
1200 (synopsis "GUI test tool and automation framework written in ​Python")
1201 (description
35b9e423 1202 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1203It uses Accessibility (a11y) technologies to communicate with desktop
1204applications. dogtail scripts are written in Python and executed like any
1205other Python program.")
1206 (license gpl2+)))
515e6878 1207
011b18c3
LC
1208(define-public python2-empy
1209 (package
1210 (name "python2-empy")
1211 (version "3.3")
1212 (source (origin
1213 (method url-fetch)
1214 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1215 version ".tar.gz"))
1216 (sha256
1217 (base32
1218 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1219 (build-system python-build-system)
1220 (arguments
1221 `(#:python ,python-2
1222 #:phases (alist-replace
1223 'check
1224 (lambda _
1225 (zero? (system* "./test.sh")))
1226 %standard-phases)))
1227 (home-page "http://www.alcyone.com/software/empy/")
1228 (synopsis "Templating system for Python")
1229 (description
1230 "EmPy is a system for embedding Python expressions and statements in
1231template text; it takes an EmPy source file, processes it, and produces
1232output. This is accomplished via expansions, which are special signals to the
1cd4027c 1233EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1234EmPy can expand arbitrary Python expressions and statements in this way, as
1235well as a variety of special forms. Textual data not explicitly delimited in
1236this way is sent unaffected to the output, allowing Python to be used in
1237effect as a markup language. Also supported are callbacks via hooks,
1238recording and playback via diversions, and dynamic, chainable filters. The
1239system is highly configurable via command line options and embedded
1240commands.")
1241 (license lgpl2.1+)))
1242
8deeda0c
LC
1243(define-public python2-element-tree
1244 (package
1245 (name "python2-element-tree")
1246 (version "1.2.6")
1247 (source (origin
1248 (method url-fetch)
1249 (uri (string-append
1250 "http://effbot.org/media/downloads/elementtree-"
1251 version "-20050316.tar.gz"))
1252 (sha256
1253 (base32
1254 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1255 (build-system python-build-system)
1256 (arguments
1257 `(#:python ,python-2 ; seems to be part of Python 3
1258 #:tests? #f)) ; no 'test' sub-command
1259 (synopsis "Toolkit for XML processing in Python")
1260 (description
1261 "ElementTree is a Python library supporting lightweight XML processing.")
1262 (home-page "http://effbot.org/zone/element-index.htm")
1263 (license (x11-style "http://docs.python.org/2/license.html"
1264 "Like \"CWI LICENSE AGREEMENT FOR PYTHON \
12650.9.0 THROUGH 1.2\"."))))
1266
1267(define-public python2-pybugz
1268 (package
1269 (name "python2-pybugz")
1270 (version "0.6.11")
1271 (source (origin
1272 (method url-fetch)
1273 (uri (string-append
1274 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1275 version ".tar.gz"))
1276 (sha256
1277 (base32
6f194a1e 1278 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1279 (patches (search-patches "pybugz-stty.patch"
1280 "pybugz-encode-error.patch"))))
8deeda0c
LC
1281 (build-system python-build-system)
1282 (arguments
1283 `(#:python ,python-2 ; SyntaxError with Python 3
1284 #:tests? #f)) ; no 'test' sub-command
1285 (inputs `(("element-tree" ,python2-element-tree)))
1286 (synopsis "Python and command-line interface to Bugzilla")
1287 (description
1288 "PyBugz is a Python library and command-line tool to query the Bugzilla
1289bug tracking system. It is meant as an aid to speed up interaction with the
1290bug tracker.")
1291 (home-page "http://www.liquidx.net/pybugz/")
1292 (license gpl2)))
1293
a480bc41
EB
1294(define-public python-enum34
1295 (package
1296 (name "python-enum34")
d39ae1e5 1297 (version "1.1.0")
a480bc41
EB
1298 (source
1299 (origin
1300 (method url-fetch)
d39ae1e5 1301 (uri (pypi-uri "enum34" version))
a480bc41
EB
1302 (sha256
1303 (base32
d39ae1e5 1304 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1305 (build-system python-build-system)
a480bc41
EB
1306 (arguments
1307 `(#:phases
1308 (alist-replace
1309 'check
1310 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1311 %standard-phases)))
1312 (home-page "https://pypi.python.org/pypi/enum34")
1313 (synopsis "Backported Python 3.4 Enum")
1314 (description
1315 "Enum34 is the new Python stdlib enum module available in Python 3.4
1316backported for previous versions of Python from 2.4 to 3.3.")
1317 (license bsd-3)))
1318
820acd1b
LF
1319(define-public python2-enum34
1320 (package-with-python2 python-enum34))
1321
a480bc41
EB
1322(define-public python-parse-type
1323 (package
1324 (name "python-parse-type")
1325 (version "0.3.4")
1326 (source
1327 (origin
1328 (method url-fetch)
1329 (uri (string-append "https://pypi.python.org/packages/source/p/"
1330 "parse_type/parse_type-" version ".tar.gz"))
1331 (sha256
1332 (base32
1333 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1334 (build-system python-build-system)
1335 (inputs
1336 `(("python-setuptools" ,python-setuptools)
1337 ("python-six" ,python-six)
68f1cdec 1338 ("python-parse" ,python-parse)))
a480bc41
EB
1339 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1340 (home-page "https://github.com/jenisys/parse_type")
1341 (synopsis "Extended parse module")
1342 (description
1343 "Parse_type extends the python parse module.")
1344 (license bsd-3)))
1345
1346(define-public python-parse
1347 (package
1348 (name "python-parse")
eb3d3503 1349 (version "1.6.6")
a480bc41
EB
1350 (source
1351 (origin
1352 (method url-fetch)
eb3d3503 1353 (uri (pypi-uri "parse" version))
a480bc41
EB
1354 (sha256
1355 (base32
eb3d3503 1356 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))))
a480bc41
EB
1357 (build-system python-build-system)
1358 (arguments
1359 `(#:phases
1360 (alist-replace
1361 'check
1362 (lambda _ (zero? (system* "python" "test_parse.py")))
1363 %standard-phases)))
1364 (home-page "https://github.com/r1chardj0n3s/parse")
1365 (synopsis "Parse strings")
1366 (description
1367 "Parse strings using a specification based on the Python format()
1368syntax.")
1369 (license x11)))
1370
1371
515e6878
LC
1372(define-public scons
1373 (package
1374 (name "scons")
a3f61425 1375 (version "2.3.4")
515e6878
LC
1376 (source (origin
1377 (method url-fetch)
1378 (uri (string-append "mirror://sourceforge/scons/scons-"
1379 version ".tar.gz"))
1380 (sha256
1381 (base32
a3f61425 1382 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1383 (build-system python-build-system)
1384 (arguments
1385 ;; With Python 3.x, fails to build with a syntax error.
1386 `(#:python ,python-2
1387 #:tests? #f)) ; no 'python setup.py test' command
1388 (home-page "http://scons.org/")
1389 (synopsis "Software construction tool written in Python")
1390 (description
1391 "SCons is a software construction tool. Think of SCons as an improved,
1392cross-platform substitute for the classic Make utility with integrated
1393functionality similar to autoconf/automake and compiler caches such as ccache.
1394In short, SCons is an easier, more reliable and faster way to build
1395software.")
1396 (license x11)))
011b18c3 1397
c15a5c0e
DT
1398(define-public python-extras
1399 (package
1400 (name "python-extras")
1401 (version "0.0.3")
1402 (source
1403 (origin
1404 (method url-fetch)
1405 (uri (string-append
1406 "https://pypi.python.org/packages/source/e/extras/extras-"
1407 version ".tar.gz"))
1408 (sha256
1409 (base32
1410 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1411 (build-system python-build-system)
1412 (inputs
1413 `(("python-setuptools" ,python-setuptools)))
1414 (arguments
1415 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1416 '(#:tests? #f))
1417 (home-page "https://github.com/testing-cabal/extras")
1418 (synopsis "Useful extensions to the Python standard library")
1419 (description
1420 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1421 (license license:expat)))
c15a5c0e
DT
1422
1423(define-public python2-extras
1424 (package-with-python2 python-extras))
1425
56ea0efd
DT
1426(define-public python-mimeparse
1427 (package
1428 (name "python-mimeparse")
1429 (version "0.1.4")
1430 (source
1431 (origin
1432 (method url-fetch)
1433 (uri (string-append
1434 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1435 version ".tar.gz"))
1436 (sha256
1437 (base32
1438 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1439 (build-system python-build-system)
1440 (inputs
1441 `(("python-setuptools" ,python-setuptools)))
1442 (arguments
1443 '(#:tests? #f)) ; no setup.py test command
1444 (home-page
1445 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1446 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1447 (description
1448 "Mimeparse provides basic functions for parsing MIME type names and
1449matching them against a list of media-ranges.")
bd3fa666 1450 (license license:expat)))
56ea0efd
DT
1451
1452(define-public python2-mimeparse
1453 (package-with-python2 python-mimeparse))
1454
4435427e
DT
1455(define-public python-nose
1456 (package
1457 (name "python-nose")
f7cb9841 1458 (version "1.3.7")
4435427e
DT
1459 (source
1460 (origin
1461 (method url-fetch)
f7cb9841 1462 (uri (pypi-uri "nose" version))
4435427e
DT
1463 (sha256
1464 (base32
f7cb9841 1465 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e
DT
1466 (build-system python-build-system)
1467 (inputs
1468 `(("python-setuptools" ,python-setuptools)))
1469 (arguments
1470 '(#:tests? #f)) ; FIXME: test suite fails
1471 (home-page "http://readthedocs.org/docs/nose/")
1472 (synopsis "Python testing library")
1473 (description
1474 "Nose extends the unittest library to make testing easier.")
1475 (license lgpl2.0+)))
1476
1477(define-public python2-nose
1478 (package-with-python2 python-nose))
1479
6cd9c356
DT
1480(define-public python-unittest2
1481 (package
1482 (name "python-unittest2")
1483 (version "0.5.1")
1484 (source
1485 (origin
1486 (method url-fetch)
1487 (uri (string-append
1488 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1489 version ".tar.gz"))
1490 (sha256
1491 (base32
1492 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1493 (build-system python-build-system)
1494 (inputs
1495 `(("python-setuptools" ,python-setuptools)))
1496 (home-page "http://pypi.python.org/pypi/unittest2")
1497 (synopsis "Python unit testing library")
1498 (description
1499 "Unittest2 is a replacement for the unittest module in the Python
1500standard library.")
1501 (license psfl)))
1502
1503(define-public python2-unittest2
1504 (package (inherit python-unittest2)
1505 (name "python2-unittest2")
1506 (version "0.5.1")
1507 (source
1508 (origin
1509 (method url-fetch)
1510 (uri (string-append
1511 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1512 version ".tar.gz"))
1513 (sha256
1514 (base32
1515 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1516 (inputs
7957fe6c 1517 `(("python2-setuptools" ,python2-setuptools)))
6cd9c356
DT
1518 (arguments
1519 `(#:python ,python-2
1520 #:tests? #f)))) ; no setup.py test command
1521
542ad60f
DT
1522(define-public python-py
1523 (package
1524 (name "python-py")
71c8a804 1525 (version "1.4.31")
542ad60f
DT
1526 (source
1527 (origin
1528 (method url-fetch)
71c8a804 1529 (uri (pypi-uri "py" version))
542ad60f
DT
1530 (sha256
1531 (base32
71c8a804 1532 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f
DT
1533 (build-system python-build-system)
1534 (inputs
1535 `(("python-setuptools" ,python-setuptools)))
1536 (home-page "http://pylib.readthedocs.org/")
1537 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1538 (description
1539 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1540code introspection, and logging.")
bd3fa666 1541 (license license:expat)))
542ad60f
DT
1542
1543(define-public python2-py
1544 (package-with-python2 python-py))
1545
855d4761
DT
1546(define-public python-pytest
1547 (package
1548 (name "python-pytest")
61a4332d 1549 (version "2.7.3")
855d4761
DT
1550 (source
1551 (origin
1552 (method url-fetch)
1553 (uri (string-append
1554 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1555 version ".tar.gz"))
1556 (sha256
1557 (base32
61a4332d 1558 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1559 (modules '((guix build utils)))
1560 (snippet
1561 ;; One of the tests involves the /usr directory, so it fails.
1562 '(substitute* "testing/test_argcomplete.py"
1563 (("def test_remove_dir_prefix\\(self\\):")
1564 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1565 (build-system python-build-system)
1566 (inputs
1567 `(("python-setuptools" ,python-setuptools)
1568 ("python-py" ,python-py)
1569 ("python-nose" ,python-nose)
1570 ("python-mock" ,python-mock)))
1571 (home-page "http://pytest.org")
1572 (synopsis "Python testing library")
1573 (description
1574 "Pytest is a testing tool that provides auto-discovery of test modules
1575and functions, detailed info on failing assert statements, modular fixtures,
1576and many external plugins.")
bd3fa666 1577 (license license:expat)))
855d4761
DT
1578
1579(define-public python2-pytest
1580 (package-with-python2 python-pytest))
1581
358c3d61
EF
1582(define-public python-pytest-cov
1583 (package
1584 (name "python-pytest-cov")
545f4a1c 1585 (version "2.2.1")
358c3d61
EF
1586 (source
1587 (origin
1588 (method url-fetch)
1589 (uri (pypi-uri "pytest-cov" version))
1590 (sha256
545f4a1c
EF
1591 (base32
1592 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1593 (build-system python-build-system)
545f4a1c 1594 (inputs
10468636
EF
1595 `(("python-coverage" ,python-coverage)
1596 ("python-pytest" ,python-pytest)))
10468636
EF
1597 (home-page "https://github.com/pytest-dev/pytest-cov")
1598 (synopsis "Pytest plugin for measuring coverage")
1599 (description
1600 "Pytest-cov produces coverage reports. It supports centralised testing and
1601distributed testing in both @code{load} and @code{each} modes. It also
1602supports coverage of subprocesses.")
545f4a1c
EF
1603 (license license:expat)
1604 (properties `((python2-variant . ,(delay python2-pytest-cov))))))
358c3d61
EF
1605
1606(define-public python2-pytest-cov
545f4a1c
EF
1607 (let ((base (package-with-python2 (strip-python2-variant python-pytest-cov))))
1608 (package
1609 (inherit base)
1610 (inputs `(("python2-setuptools" ,python2-setuptools)
1611 ,@(package-inputs base))))))
358c3d61 1612
6784f2e3
RW
1613(define-public python-pytest-runner
1614 (package
1615 (name "python-pytest-runner")
1616 (version "2.6.2")
1617 (source
1618 (origin
1619 (method url-fetch)
54cd239b 1620 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1621 (sha256
1622 (base32
1623 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1624 (build-system python-build-system)
1625 (arguments
1626 `(#:phases
1627 (modify-phases %standard-phases
1628 ;; The fancy way of setting the version with setuptools_scm does not
1629 ;; seem to work here.
1630 (add-after 'unpack 'set-version
1631 (lambda _
1632 (substitute* "docs/conf.py"
1633 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1634 (string-append "version = \"" ,version "\"")))
1635 #t)))))
1636 (native-inputs
1637 `(("python-pytest" ,python-pytest)
1638 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1639 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1640 (synopsis "Invoke py.test as a distutils command")
1641 (description
1642 "This package provides a @command{pytest-runner} command that
1643@file{setup.py} files can use to run tests.")
54cd239b
EF
1644 (license license:expat)
1645 (properties `((python2-variant . ,(delay python2-pytest-runner))))))
1646
1647(define-public python2-pytest-runner
1648 (let ((base (package-with-python2
1649 (strip-python2-variant python-pytest-runner))))
1650 (package
1651 (inherit base)
1652 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1653 ,@(package-native-inputs base))))))
6784f2e3
RW
1654
1655(define-public python2-pytest-runner
1656 (package-with-python2 python-pytest-runner))
1657
8fa58fc9
CAW
1658(define-public python-pytest-xdist
1659 (package
1660 (name "python-pytest-xdist")
1661 (version "1.14")
1662 (source
1663 (origin
1664 (method url-fetch)
1665 (uri (pypi-uri "pytest-xdist" version ".zip"))
1666 (sha256
1667 (base32
1668 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))))
1669 (build-system python-build-system)
1670 (native-inputs
1671 `(("unzip" ,unzip)
8fa58fc9 1672 ("python-setuptools-scm" ,python-setuptools-scm)))
fbe9abcc
EF
1673 (inputs
1674 `(("python-apipkg" ,python-apipkg)
1675 ("python-execnet" ,python-execnet)
8fa58fc9
CAW
1676 ("python-pytest" ,python-pytest)
1677 ("python-py" ,python-py)))
1678 (home-page
1679 "https://github.com/pytest-dev/pytest-xdist")
1680 (synopsis
1681 "Plugin for py.test with distributed testing and loop-on-failing modes")
1682 (description
1683 "The pytest-xdist plugin extends py.test with some unique test execution
1684modes: parallelization, running tests in boxed subprocesses, the ability
1685to run tests repeatedly when failed, and the ability to run tests on multiple
1686Python interpreters or platforms. It uses rsync to copy the existing
1687program code to a remote location, executes there, and then syncs the
1688result back.")
fbe9abcc
EF
1689 (license license:expat)
1690 (properties `((python2-variant . ,(delay python2-pytest-xdist))))))
8fa58fc9
CAW
1691
1692(define-public python2-pytest-xdist
fbe9abcc
EF
1693 (let ((base (package-with-python2
1694 (strip-python2-variant python-pytest-xdist))))
1695 (package
1696 (inherit base)
1697 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1698 ,@(package-native-inputs base))))))
8fa58fc9 1699
84d24017
DT
1700(define-public python-scripttest
1701 (package
1702 (name "python-scripttest")
1703 (version "1.3")
1704 (source
1705 (origin
1706 (method url-fetch)
1707 (uri (string-append
1708 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1709 version ".tar.gz"))
1710 (sha256
1711 (base32
1712 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1713 (build-system python-build-system)
1714 (inputs
1715 `(("python-setuptools" ,python-setuptools)
1716 ("python-pytest" ,python-pytest)))
1717 (home-page "http://pythonpaste.org/scripttest/")
1718 (synopsis "Python library to test command-line scripts")
1719 (description "Scripttest is a Python helper library for testing
1720interactive command-line applications. With it you can run a script in a
1721subprocess and see the output as well as any file modifications.")
bd3fa666 1722 (license license:expat)))
84d24017
DT
1723
1724(define-public python2-scripttest
1725 (package-with-python2 python-scripttest))
1726
d8fa80e1
DT
1727(define-public python-testtools
1728 (package
1729 (name "python-testtools")
1730 (version "1.0.0")
1731 (source
1732 (origin
1733 (method url-fetch)
1734 (uri (string-append
1735 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1736 version ".tar.gz"))
1737 (sha256
1738 (base32
1739 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1740 (build-system python-build-system)
0e88cbf8
CR
1741 (propagated-inputs
1742 `(("python-mimeparse" ,python-mimeparse)))
d8fa80e1
DT
1743 (inputs
1744 `(("python-setuptools" ,python-setuptools)
d8fa80e1
DT
1745 ("python-extras" ,python-extras)))
1746 (home-page "https://github.com/testing-cabal/testtools")
1747 (synopsis
1748 "Extensions to the Python standard library unit testing framework")
1749 (description
1750 "Testtools extends the Python standard library unit testing framework to
1751provide matchers, more debugging information, and cross-Python
1752compatibility.")
1753 (license psfl)))
1754
1755(define-public python2-testtools
1756 (package-with-python2 python-testtools))
1757
5bf3afea
DT
1758(define-public python-testscenarios
1759 (package
1760 (name "python-testscenarios")
1761 (version "0.4")
1762 (source
1763 (origin
1764 (method url-fetch)
1765 (uri (string-append
1766 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1767 version ".tar.gz"))
1768 (sha256
1769 (base32
1770 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1771 (build-system python-build-system)
1772 (inputs
1773 `(("python-setuptools" ,python-setuptools)
1774 ("python-testtools" ,python-testtools)
1775 ("python-mimeparse" ,python-mimeparse)))
1776 (home-page "https://launchpad.net/testscenarios")
1777 (synopsis "Pyunit extension for dependency injection")
1778 (description
1779 "Testscenarios provides clean dependency injection for Python unittest
1780style tests.")
1781 (license (list bsd-3 asl2.0)))) ; at the user's option
1782
1783(define-public python2-testscenarios
1784 (package-with-python2 python-testscenarios))
1785
dac79ecc
DT
1786(define-public python-testresources
1787 (package
1788 (name "python-testresources")
1789 (version "0.2.7")
1790 (source
1791 (origin
1792 (method url-fetch)
1793 (uri (string-append
1794 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1795 version ".tar.gz"))
1796 (sha256
1797 (base32
1798 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1799 (build-system python-build-system)
1800 (inputs
1801 `(("python-setuptools" ,python-setuptools)))
1802 (home-page "https://launchpad.net/testresources")
1803 (synopsis
1804 "Pyunit extension for managing test resources")
1805 (description
1806 "Testresources is an extension to Python's unittest to allow declarative
1807use of resources by test cases.")
1808 (license (list bsd-3 asl2.0)))) ; at the user's option
1809
1810(define-public python2-testresources
1811 (package-with-python2 python-testresources))
1812
070ab058
DT
1813(define-public python-subunit
1814 (package
1815 (name "python-subunit")
1816 (version "0.0.21")
1817 (source
1818 (origin
1819 (method url-fetch)
1820 (uri (string-append
1821 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1822 version ".tar.gz"))
1823 (sha256
1824 (base32
1825 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1826 (build-system python-build-system)
1827 (inputs
1828 `(("python-setuptools" ,python-setuptools)
1829 ("python-testtools" ,python-testtools)
1830 ("python-mimeparse" ,python-mimeparse)
1831 ("python-testscenarios" ,python-testscenarios)))
1832 (home-page "http://launchpad.net/subunit")
1833 (synopsis "Python implementation of the subunit protocol")
1834 (description
1835 "Python-subunit is a Python implementation of the subunit test streaming
1836protocol.")
1837 (license (list bsd-3 asl2.0)))) ; at the user's option
1838
1839(define-public python2-subunit
1840 (package-with-python2 python-subunit))
1841
7787ef76
CR
1842;; Recent versions of python-fixtures need a recent version of python-pbr,
1843;; which needs a recent version of python-fixtures. To fix this circular
1844;; dependency, we keep old versions of python-fixtures and python-pbr to
1845;; bootstrap the whole thing:
1846;; - python-fixtures-0.3.16 is used to build python-pbr-0.11
1847;; - python-pbr-0.11 is used to build python-fixtures
1848;; - python-fixtures is used to build python-pbr
1849(define-public python-fixtures-0.3.16
cd49454b
DT
1850 (package
1851 (name "python-fixtures")
1852 (version "0.3.16")
1853 (source
1854 (origin
1855 (method url-fetch)
1856 (uri (string-append
1857 "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
1858 version ".tar.gz"))
1859 (sha256
1860 (base32
1861 "0x9r2gwilcig5g54k60bxzg96zabizq1855lrprlb4zckalp9asc"))))
1862 (build-system python-build-system)
1863 (inputs
1864 `(("python-setuptools" ,python-setuptools)))
1865 (arguments
1866 '(#:tests? #f)) ; no setup.py test command
1867 (home-page "https://launchpad.net/python-fixtures")
1868 (synopsis "Python test fixture library")
1869 (description
1870 "Fixtures provides a way to create reusable state, useful when writing
1871Python tests.")
1872 (license (list bsd-3 asl2.0)))) ; at user's option
1873
7787ef76
CR
1874(define-public python2-fixtures-0.3.16
1875 (package-with-python2 python-fixtures-0.3.16))
1876
1877(define-public python-pbr-0.11
1878 (package
1879 (name "python-pbr")
1880 (version "0.11.0")
1881 (source
1882 (origin
1883 (method url-fetch)
1884 (uri (string-append
1885 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1886 version ".tar.gz"))
1887 (sha256
1888 (base32
1889 "0v9gb7gyqf7q9s99l0nnjj9ww9b0jvyqlwm4d56pcyinxydddw6p"))))
1890 (build-system python-build-system)
1891 (arguments
1892 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1893 (inputs
1894 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
1895 ("python-pip" ,python-pip)
1896 ("python-setuptools" ,python-setuptools)))
1897 (home-page "https://launchpad.net/pbr")
1898 (synopsis "Change the default behavior of Python’s setuptools")
1899 (description
1900 "Python Build Reasonableness (PBR) is a library that injects some useful
1901and sensible default behaviors into your setuptools run.")
1902 (license asl2.0)))
1903
1904(define-public python2-pbr-0.11
1905 (package-with-python2 python-pbr-0.11))
1906
1ef09c0c 1907(define-public python-pbr
e25f0174
BW
1908 (package
1909 (name "python-pbr")
1ef09c0c
BW
1910 (version "1.8.1")
1911 (source
e25f0174
BW
1912 (origin
1913 (method url-fetch)
1914 (uri (string-append
1915 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1916 version
1917 ".tar.gz"))
1918 (sha256
1919 (base32
1920 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
1ef09c0c 1921 (build-system python-build-system)
e25f0174
BW
1922 (arguments
1923 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1924 (propagated-inputs
1925 `(("python-testrepository" ,python-testrepository)
1926 ("git" ,git))) ;; pbr actually uses the "git" binary.
1ef09c0c 1927 (inputs
e25f0174
BW
1928 `(("python-fixtures" ,python-fixtures)
1929 ("python-mimeparse" ,python-mimeparse)
1930 ("python-mock" ,python-mock)
1931 ("python-setuptools" ,python-setuptools)
1932 ("python-six" ,python-six)
1933 ("python-sphinx" ,python-sphinx)
1934 ("python-testrepository" ,python-testrepository)
1935 ("python-testresources" ,python-testresources)
1936 ("python-testscenarios" ,python-testscenarios)
1937 ("python-testtools" ,python-testtools)
1938 ("python-virtualenv" ,python-virtualenv)))
1939 (home-page "https://launchpad.net/pbr")
1940 (synopsis "Change the default behavior of Python’s setuptools")
1941 (description
1942 "Python Build Reasonableness (PBR) is a library that injects some useful
1943and sensible default behaviors into your setuptools run.")
1944 (license asl2.0)))
1ef09c0c
BW
1945
1946(define-public python2-pbr
e25f0174 1947 (package-with-python2 python-pbr))
1ef09c0c 1948
7787ef76
CR
1949(define-public python-fixtures
1950 (package
1951 (name "python-fixtures")
13fcc6df 1952 (version "1.4.0")
7787ef76
CR
1953 (source
1954 (origin
1955 (method url-fetch)
13fcc6df 1956 (uri (pypi-uri "fixtures" version))
7787ef76
CR
1957 (sha256
1958 (base32
13fcc6df 1959 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
1960 (build-system python-build-system)
1961 (propagated-inputs
1962 `(("python-six" ,python-six)
1963 ("python-pbr-0.11" ,python-pbr-0.11)))
1964 (inputs
1965 `(("python-pip" ,python-pip)
1966 ("python-setuptools" ,python-setuptools)
1967 ;; Tests
1968 ("python-testtools" ,python-testtools)))
1969 (arguments
1970 '(#:tests? #f)) ; no setup.py test command
1971 (home-page "https://launchpad.net/python-fixtures")
1972 (synopsis "Python test fixture library")
1973 (description
1974 "Fixtures provides a way to create reusable state, useful when writing
1975Python tests.")
1976 (license (list bsd-3 asl2.0)))) ; at user's option
1977
cd49454b
DT
1978(define-public python2-fixtures
1979 (package-with-python2 python-fixtures))
1980
b24a0c00
DT
1981(define-public python-testrepository
1982 (package
1983 (name "python-testrepository")
1984 (version "0.0.20")
1985 (source
1986 (origin
1987 (method url-fetch)
1988 (uri (string-append
1989 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
1990 version ".tar.gz"))
1991 (sha256
1992 (base32
1993 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
1994 (build-system python-build-system)
05de40c5 1995 (propagated-inputs
7787ef76 1996 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
05de40c5 1997 ("python-testtools" ,python-testtools)))
b24a0c00
DT
1998 (inputs
1999 `(("python-setuptools" ,python-setuptools)
b24a0c00 2000 ("python-subunit" ,python-subunit)
b24a0c00
DT
2001 ("python-mimeparse" ,python-mimeparse)))
2002 (home-page "https://launchpad.net/testrepository")
2003 (synopsis "Database for Python test results")
2004 (description "Testrepository provides a database of test results which can
2005be used as part of a developer's workflow to check things such as what tests
2006have failed since the last commit or what tests are currently failing.")
2007 (license (list bsd-3 asl2.0)))) ; at user's option
2008
2009(define-public python2-testrepository
2010 (package-with-python2 python-testrepository))
2011
243a009a
DT
2012(define-public python-coverage
2013 (package
2014 (name "python-coverage")
4d4cf3dd 2015 (version "4.1")
243a009a
DT
2016 (source
2017 (origin
2018 (method url-fetch)
82a3c582 2019 (uri (pypi-uri "coverage" version))
243a009a
DT
2020 (sha256
2021 (base32
4d4cf3dd 2022 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a
DT
2023 (build-system python-build-system)
2024 (inputs
2025 `(("python-setuptools" ,python-setuptools)))
2026 (home-page "http://nedbatchelder.com/code/coverage")
2027 (synopsis "Code coverage measurement for Python")
2028 (description
2029 "Coverage measures code coverage, typically during test execution. It
2030uses the code analysis tools and tracing hooks provided in the Python standard
2031library to determine which lines are executable, and which have been
2032executed.")
2033 (license bsd-3)))
2034
2035(define-public python2-coverage
2036 (package-with-python2 python-coverage))
2037
041358fb
DT
2038(define-public python-discover
2039 (package
2040 (name "python-discover")
2041 (version "0.4.0")
2042 (source
2043 (origin
2044 (method url-fetch)
2045 (uri (string-append
2046 "https://pypi.python.org/packages/source/d/discover/discover-"
2047 version ".tar.gz"))
2048 (sha256
2049 (base32
2050 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2051 (build-system python-build-system)
2052 (inputs
2053 `(("python-setuptools" ,python-setuptools)))
2054 (home-page "http://pypi.python.org/pypi/discover/")
2055 (synopsis
2056 "Python test discovery for unittest")
2057 (description
2058 "Discover provides test discovery for unittest, a feature that has been
e881752c 2059backported from Python 2.7 for Python 2.4+.")
041358fb
DT
2060 (license bsd-3)))
2061
2062(define-public python2-discover
2063 (package-with-python2 python-discover))
2064
a480bc41
EB
2065(define-public behave
2066 (package
2067 (name "behave")
287cfd1a 2068 (version "1.2.5")
a480bc41
EB
2069 (source (origin
2070 (method url-fetch)
287cfd1a 2071 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2072 (sha256
2073 (base32
287cfd1a 2074 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41
EB
2075 (build-system python-build-system)
2076 (inputs
2077 `(("python-setuptools" ,python-setuptools)
2078 ("python-six" ,python-six)
a480bc41
EB
2079 ("python-parse" ,python-parse)
2080 ("python-parse-type" ,python-parse-type)))
2081 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2082 ;PyHamcrest>=1.8
2083 (home-page "http://github.com/behave/behave")
2084 (synopsis "Python behavior-driven development")
2085 (description
2086 "Behave is a tool for behavior-driven development in python.
2087Behavior-driven development (or BDD) is an agile software development
2088technique that encourages collaboration between developers, QA and
2089non-technical or business participants in a software project. Behave uses
2090tests written in a natural language style, backed up by Python code.")
2091 (license x11)))
c7303d3c
DT
2092
2093(define-public python-exif-read
2094 (package
2095 (name "python-exif-read")
2a2d0981 2096 (version "2.1.2")
c7303d3c
DT
2097 (source (origin
2098 (method url-fetch)
2a2d0981 2099 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2100 (sha256
2101 (base32
2a2d0981 2102 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c
DT
2103 (build-system python-build-system)
2104 (inputs
2105 `(("python-setuptools" ,python-setuptools)))
2106 (arguments `(#:tests? #f)) ; no tests
2107 (home-page "https://github.com/ianare/exif-py")
2108 (synopsis "Python library to extract EXIF data from image files")
2109 (description
2110 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2111files.")
2112 (license bsd-3)))
2113
2114(define-public python2-exif-read
2115 (package-with-python2 python-exif-read))
d5f89b22
DT
2116
2117(define-public python-pyld
2118 (package
2119 (name "python-pyld")
af1ab773 2120 (version "0.6.8")
d5f89b22
DT
2121 (source (origin
2122 (method url-fetch)
af1ab773 2123 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2124 (sha256
2125 (base32
af1ab773 2126 "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
d5f89b22
DT
2127 (build-system python-build-system)
2128 (inputs
2129 `(("python-setuptools" ,python-setuptools)))
2130 (arguments `(#:tests? #f)) ; no tests
2131 (home-page "http://github.com/digitalbazaar/pyld")
2132 (synopsis "Python implementation of the JSON-LD specification")
2133 (description
2134 "PyLD is an implementation of the JSON-LD specification.")
2135 (license bsd-3)))
2136
2137(define-public python2-pyld
2138 (package-with-python2 python-pyld))
3a1f9a68
DT
2139
2140(define-public python-certifi
2141 (package
2142 (name "python-certifi")
9a41f443 2143 (version "2015.11.20.1")
3a1f9a68
DT
2144 (source (origin
2145 (method url-fetch)
9a41f443 2146 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2147 (sha256
2148 (base32
9a41f443 2149 "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h"))))
3a1f9a68
DT
2150 (build-system python-build-system)
2151 (inputs
2152 `(("python-setuptools" ,python-setuptools)))
2153 (arguments `(#:tests? #f)) ; no tests
2154 (home-page "http://python-requests.org/")
2155 (synopsis "Python CA certificate bundle")
2156 (description
2157 "Certifi is a Python library that contains a CA certificate bundle, which
2158is used by the Requests library to verify HTTPS requests.")
2159 (license asl2.0)))
2160
2161(define-public python2-certifi
2162 (package-with-python2 python-certifi))
e6cfbd36 2163
12c270dd
RW
2164(define-public python-click
2165 (package
2166 (name "python-click")
43accb58 2167 (version "6.6")
12c270dd
RW
2168 (source
2169 (origin
2170 (method url-fetch)
43accb58
LF
2171 (uri (string-append
2172 "https://pypi.python.org/packages/"
2173 "7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/"
2174 "click-" version ".tar.gz"))
12c270dd 2175 (sha256
43accb58
LF
2176 (base32
2177 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
12c270dd
RW
2178 (build-system python-build-system)
2179 (native-inputs
2180 `(("python-setuptools" ,python-setuptools)))
2181 (home-page "http://click.pocoo.org")
2182 (synopsis "Command line library for Python")
2183 (description
2184 "Click is a Python package for creating command line interfaces in a
2185composable way with as little code as necessary. Its name stands for
2186\"Command Line Interface Creation Kit\". It's highly configurable but comes
2187with sensible defaults out of the box.")
2188 (license bsd-3)))
2189
2190(define-public python2-click
2191 (package-with-python2 python-click))
2192
addc808d
EF
2193(define-public python-wheel
2194 (package
2195 (name "python-wheel")
40981b5c 2196 (version "0.29.0")
e1ba0749
EF
2197 (source
2198 (origin
2199 (method url-fetch)
2200 (uri (pypi-uri "wheel" version))
2201 (sha256
2202 (base32
40981b5c 2203 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2204 (build-system python-build-system)
2205 (native-inputs
2206 `(("python-setuptools" ,python-setuptools)
2207 ("python-jsonschema" ,python-jsonschema)
2208 ("python-pytest-cov" ,python-pytest-cov)))
2209 (home-page "https://bitbucket.org/pypa/wheel/")
2210 (synopsis "Format for built Python packages")
2211 (description
2212 "A wheel is a ZIP-format archive with a specially formatted filename and
2213the @code{.whl} extension. It is designed to contain all the files for a PEP
2214376 compatible install in a way that is very close to the on-disk format. Many
2215packages will be properly installed with only the @code{Unpack} step and the
2216unpacked archive preserves enough information to @code{Spread} (copy data and
2217scripts to their final locations) at any later time. Wheel files can be
2218installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2219 (license license:expat)
2220 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2221
2222(define-public python2-wheel
8ad4ae20
LF
2223 (let ((wheel (package-with-python2
2224 (strip-python2-variant python-wheel))))
264ae686 2225 (package (inherit wheel)
8ad4ae20
LF
2226 (native-inputs `(("python2-functools32" ,python2-functools32)
2227 ,@(package-native-inputs wheel))))))
2228
addc808d 2229
ae641128 2230(define-public python-requests
e6cfbd36 2231 (package
ae641128 2232 (name "python-requests")
74a066f9 2233 (version "2.9.1")
e6cfbd36
DT
2234 (source (origin
2235 (method url-fetch)
5d691657 2236 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2237 (sha256
2238 (base32
74a066f9 2239 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2240 (build-system python-build-system)
5d691657 2241 (native-inputs
6a308947
EF
2242 `(("python-setuptools" ,python-setuptools)
2243 ("python-py" ,python-py)
5d691657
EF
2244 ("python-pytest" ,python-pytest)
2245 ("python-pytest-cov" ,python-pytest-cov)
2246 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2247 (home-page "http://python-requests.org/")
2248 (synopsis "Python HTTP library")
2249 (description
2250 "Requests is a Python HTTP client library. It aims to be easier to use
2251than Python’s urllib2 library.")
2252 (license asl2.0)))
864b5211 2253
e9005180
DT
2254;; Some software requires an older version of Requests, notably Docker
2255;; Compose.
2256(define-public python-requests-2.7
2257 (package (inherit python-requests)
2258 (version "2.7.0")
2259 (source (origin
2260 (method url-fetch)
2261 (uri (pypi-uri "requests" version))
2262 (sha256
2263 (base32
2264 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2265
ae641128 2266(define-public python2-requests
8ad4ae20 2267 (package-with-python2 python-requests))
ae641128 2268
ea521b42
DT
2269(define-public python-vcversioner
2270 (package
2271 (name "python-vcversioner")
2272 (version "2.14.0.0")
2273 (source
2274 (origin
2275 (method url-fetch)
2276 (uri (pypi-uri "vcversioner" version))
2277 (sha256
2278 (base32
2279 "11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
2280 (build-system python-build-system)
2281 (inputs
2282 `(("python-setuptools" ,python-setuptools)))
2283 (synopsis "Python library for version number discovery")
2284 (description "Vcversioner is a Python library that inspects tagging
2285information in a variety of version control systems in order to discover
2286version numbers.")
2287 (home-page "https://github.com/habnabit/vcversioner")
2288 (license isc)))
2289
2290(define-public python2-vcversioner
2291 (package-with-python2 python-vcversioner))
ae641128 2292
864b5211
DT
2293(define-public python-jsonschema
2294 (package
2295 (name "python-jsonschema")
b3667afb 2296 (version "2.5.1")
864b5211
DT
2297 (source (origin
2298 (method url-fetch)
2299 (uri
2300 (string-append
2301 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2302 version ".tar.gz"))
2303 (sha256
2304 (base32
b3667afb 2305 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211
DT
2306 (build-system python-build-system)
2307 (inputs
b3667afb
DT
2308 `(("python-setuptools" ,python-setuptools)
2309 ("python-vcversioner" ,python-vcversioner)))
864b5211
DT
2310 (home-page "http://github.com/Julian/jsonschema")
2311 (synopsis "Implementation of JSON Schema for Python")
2312 (description
2313 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2314 (license license:expat)
2315 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2316
2317(define-public python2-jsonschema
a14600ec
LF
2318 (let ((jsonschema (package-with-python2
2319 (strip-python2-variant python-jsonschema))))
264ae686
EF
2320 (package (inherit jsonschema)
2321 (inputs
2322 `(("python2-functools32" ,python2-functools32)
2323 ,@(package-inputs jsonschema))))))
850189b8
DT
2324
2325(define-public python-unidecode
2326 (package
2327 (name "python-unidecode")
8925d4f3 2328 (version "0.04.18")
850189b8
DT
2329 (source (origin
2330 (method url-fetch)
8925d4f3 2331 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2332 (sha256
2333 (base32
8925d4f3 2334 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8
DT
2335 (build-system python-build-system)
2336 (inputs
2337 `(("python-setuptools" ,python-setuptools)))
2338 (home-page "https://pypi.python.org/pypi/Unidecode")
2339 (synopsis "ASCII transliterations of Unicode text")
2340 (description
2341 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2342useful when integrating with legacy code that doesn't support Unicode, or for
2343ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2344machine identifiers from human-readable Unicode strings that should still be
2345somewhat intelligeble.")
2346 (license gpl2+)))
2347
2348(define-public python2-unidecode
2349 (package-with-python2 python-unidecode))
6d45fef4
DT
2350
2351(define-public python-pyjwt
2352 (package
2353 (name "python-pyjwt")
eb31d4b4 2354 (version "1.4.0")
6d45fef4
DT
2355 (source
2356 (origin
2357 (method url-fetch)
eb31d4b4 2358 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2359 (sha256
2360 (base32
eb31d4b4 2361 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2362 (build-system python-build-system)
eb31d4b4
EF
2363 (native-inputs
2364 `(("python-setuptools" ,python-setuptools)
2365 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2366 (arguments
2367 '(#:tests? #f)) ; test suite doesn't work
2368 (home-page "http://github.com/progrium/pyjwt")
2369 (synopsis "JSON Web Token implementation in Python")
2370 (description
2371 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2372 (license license:expat)))
6d45fef4
DT
2373
2374(define-public python2-pyjwt
2375 (package-with-python2 python-pyjwt))
2376
2cec1f6f
DT
2377(define-public python-oauthlib
2378 (package
2379 (name "python-oauthlib")
bde2171d 2380 (version "1.0.3")
2cec1f6f
DT
2381 (source (origin
2382 (method url-fetch)
bde2171d 2383 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2384 (sha256
2385 (base32
bde2171d 2386 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2387 (build-system python-build-system)
bde2171d 2388 (native-inputs
59f151ec 2389 `(("python-coverage" ,python-coverage)
2cec1f6f
DT
2390 ("python-nose" ,python-nose)
2391 ("python-mock" ,python-mock)))
bde2171d
EF
2392 (inputs
2393 `(("python-blinker" ,python-blinker)
2394 ("python-cryptography" ,python-cryptography)
2395 ("python-pyjwt" ,python-pyjwt)))
2cec1f6f
DT
2396 (home-page "https://github.com/idan/oauthlib")
2397 (synopsis "OAuth implementation for Python")
2398 (description
2399 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2400OAuth request-signing logic.")
59f151ec
EF
2401 (license bsd-3)
2402 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2403
2404(define-public python2-oauthlib
59f151ec 2405 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2406 (package
2407 (inherit base)
59f151ec
EF
2408 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2409 ("python2-unittest2" ,python2-unittest2)
2410 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2411
2412(define-public python-itsdangerous
2413 (package
2414 (name "python-itsdangerous")
2415 (version "0.24")
2416 (source
2417 (origin
2418 (method url-fetch)
2419 (uri (string-append
2420 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2421 version ".tar.gz"))
2422 (sha256
2423 (base32
2424 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2425 (build-system python-build-system)
ec5dbb5c
DT
2426 (home-page "http://github.com/mitsuhiko/itsdangerous")
2427 (synopsis "Python library for passing data to/from untrusted environments")
2428 (description
2429 "Itsdangerous provides various helpers to pass trusted data to untrusted
2430environments and back.")
194d0d98
EF
2431 (license bsd-3)
2432 (properties `((python2-variant . ,(delay python2-itsdangerous))))))
ec5dbb5c
DT
2433
2434(define-public python2-itsdangerous
194d0d98
EF
2435 (let ((base (package-with-python2
2436 (strip-python2-variant python-itsdangerous))))
2437 (package
2438 (inherit base)
2439 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2440 ,@(package-native-inputs base))))))
5731cae3 2441
8d12be1e
RW
2442(define-public python-pyyaml
2443 (package
2444 (name "python-pyyaml")
2445 (version "3.11")
2446 (source
2447 (origin
2448 (method url-fetch)
2449 (uri (string-append
2450 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2451 version ".tar.gz"))
2452 (sha256
2453 (base32
2454 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2455 (build-system python-build-system)
2456 (inputs
2457 `(("libyaml" ,libyaml)))
2458 (native-inputs
2459 `(("python-setuptools" ,python-setuptools)))
2460 (home-page "http://pyyaml.org/wiki/PyYAML")
2461 (synopsis "YAML parser and emitter for Python")
2462 (description
2463 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2464complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2465API, and sensible error messages. PyYAML supports standard YAML tags and
2466provides Python-specific tags that allow to represent an arbitrary Python
2467object.")
2468 (license license:expat)))
2469
2470(define-public python2-pyyaml
2471 (package-with-python2 python-pyyaml))
2472
5731cae3
DT
2473(define-public python-virtualenv
2474 (package
2475 (name "python-virtualenv")
17804240 2476 (version "13.1.2")
5731cae3
DT
2477 (source
2478 (origin
2479 (method url-fetch)
17804240 2480 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2481 (sha256
2482 (base32
17804240 2483 "1p732accxwqfjbdna39k8w8lp9gyw91vr4kzkhm8mgfxikqqxg5a"))))
5731cae3 2484 (build-system python-build-system)
17804240
EF
2485 (arguments
2486 `(#:phases
2487 (modify-phases %standard-phases
2488 (replace 'check
2489 (lambda _ (zero? (system* "py.test")))))))
5731cae3
DT
2490 (inputs
2491 `(("python-setuptools" ,python-setuptools)
2492 ("python-mock" ,python-mock)
17804240 2493 ("python-pytest" ,python-pytest)))
5731cae3
DT
2494 (home-page "https://virtualenv.pypa.io/")
2495 (synopsis "Virtual Python environment builder")
2496 (description
2497 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2498 (license license:expat)))
5731cae3
DT
2499
2500(define-public python2-virtualenv
2501 (package-with-python2 python-virtualenv))
8176d4d5
DT
2502
2503(define-public python-markupsafe
2504 (package
2505 (name "python-markupsafe")
2506 (version "0.23")
2507 (source
2508 (origin
2509 (method url-fetch)
2510 (uri (string-append
2511 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2512 version ".tar.gz"))
2513 (sha256
2514 (base32
2515 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2516 (build-system python-build-system)
2517 (inputs
2518 `(("python-setuptools" ,python-setuptools)))
2519 (home-page "http://github.com/mitsuhiko/markupsafe")
2520 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2521 (description
2522 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2523for Python.")
2524 (license bsd-3)))
2525
2526(define-public python2-markupsafe
2527 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2528
2529(define-public python-jinja2
2530 (package
2531 (name "python-jinja2")
e98149b3 2532 (version "2.8")
fe34f0d1
DT
2533 (source
2534 (origin
2535 (method url-fetch)
e98149b3 2536 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2537 (sha256
2538 (base32
e98149b3 2539 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1
DT
2540 (build-system python-build-system)
2541 (inputs
2542 `(("python-setuptools" ,python-setuptools)
2543 ("python-markupsafe" ,python-markupsafe)))
2544 (home-page "http://jinja.pocoo.org/")
2545 (synopsis "Python template engine")
2546 (description
2547 "Jinja2 is a small but fast and easy to use stand-alone template engine
2548written in pure Python.")
2549 (license bsd-3)))
2550
2551(define-public python2-jinja2
2552 (package-with-python2 python-jinja2))
3580ab8b 2553
f7d17ac7
EE
2554(define-public python-pystache
2555 (package
2556 (name "python-pystache")
2557 (version "0.5.4")
2558 (source (origin
2559 (method url-fetch)
2560 (uri (pypi-uri "pystache" version))
2561 (sha256
2562 (base32
2563 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2564 (build-system python-build-system)
2565 (native-inputs
2566 `(("python-setuptools" ,python-setuptools)))
2567 (home-page "http://defunkt.io/pystache/")
2568 (synopsis "Python logic-less template engine")
2569 (description
2570 "Pystache is a Python implementation of the framework agnostic,
2571logic-free templating system Mustache.")
2572 (license license:expat)))
2573
2574(define-public python2-pystache
2575 (package-with-python2 python-pystache))
2576
1285119b
RW
2577(define-public python-joblib
2578 (package
2579 (name "python-joblib")
2580 (version "0.9.0b4")
2581 (source (origin
2582 (method url-fetch)
2583 (uri (string-append "https://pypi.python.org/packages/source/"
2584 "j/joblib/joblib-" version ".tar.gz"))
2585 (sha256
2586 (base32
2587 "1dvw3f8jgj6h0fxkghbgyclvdzc7l0ig7n0vis70awb5kczb9bs3"))))
2588 (build-system python-build-system)
2589 (native-inputs
2590 `(("python-setuptools" ,python-setuptools)
2591 ("python-nose" ,python-nose)))
2592 (home-page "http://pythonhosted.org/joblib/")
2593 (synopsis "Using Python functions as pipeline jobs")
2594 (description
2595 "Joblib is a set of tools to provide lightweight pipelining in Python.
2596In particular, joblib offers: transparent disk-caching of the output values
2597and lazy re-evaluation (memoize pattern), easy simple parallel computing
2598logging and tracing of the execution.")
2599 (license bsd-3)))
2600
2601(define-public python2-joblib
2602 (package-with-python2 python-joblib))
2603
3580ab8b
DT
2604(define-public python-docutils
2605 (package
2606 (name "python-docutils")
2607 (version "0.12")
2608 (source
2609 (origin
2610 (method url-fetch)
2611 (uri (string-append
2612 "https://pypi.python.org/packages/source/d/docutils/docutils-"
2613 version ".tar.gz"))
2614 (sha256
2615 (base32
2616 "1ylnjnw1x4b2y7blr6x35ncdzn69k253kw4cdkv6asdb21w73ny7"))))
2617 (build-system python-build-system)
2618 (inputs
2619 `(("python-setuptools" ,python-setuptools)))
2620 (arguments
2621 '(#:tests? #f)) ; no setup.py test command
2622 (home-page "http://docutils.sourceforge.net/")
2623 (synopsis "Python Documentation Utilities")
2624 (description
2625 "Docutils is a modular system for processing documentation into useful
2626formats, such as HTML, XML, and LaTeX. For input Docutils supports
2627reStructuredText.")
2628 ;; Most of the source code is public domain, but some source files are
2629 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
2630 (license (list public-domain psfl bsd-2 gpl3+))))
2631
2632(define-public python2-docutils
2633 (package-with-python2 python-docutils))
fb35b7c0
DT
2634
2635(define-public python-pygments
2636 (package
2637 (name "python-pygments")
9f442285 2638 (version "2.0.2")
fb35b7c0
DT
2639 (source
2640 (origin
2641 (method url-fetch)
9f442285 2642 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2643 (sha256
2644 (base32
9f442285 2645 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0
DT
2646 (build-system python-build-system)
2647 (inputs
2648 `(("python-setuptools" ,python-setuptools)))
2649 (home-page "http://pygments.org/")
2650 (synopsis "Syntax highlighting")
2651 (description
2652 "Pygments is a syntax highlighting package written in Python.")
2653 (license bsd-2)))
2654
2655(define-public python2-pygments
2656 (package-with-python2 python-pygments))
9dd6078d
DT
2657
2658(define-public python-sphinx
2659 (package
2660 (name "python-sphinx")
2661 (version "1.2.3")
2662 (source
2663 (origin
2664 (method url-fetch)
2665 (uri (string-append
2666 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2667 version ".tar.gz"))
2668 (sha256
2669 (base32
2670 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2671 (build-system python-build-system)
2672 (inputs
2673 `(("python-setuptools" ,python-setuptools)
2674 ("python-jinja2" ,python-jinja2)
2675 ("python-docutils" ,python-docutils)
2676 ("python-pygments" ,python-pygments)))
2677 (home-page "http://sphinx-doc.org/")
2678 (synopsis "Python documentation generator")
2679 (description "Sphinx is a tool that makes it easy to create documentation
2680for Python projects or other documents consisting of multiple reStructuredText
2681sources.")
2682 (license bsd-3)))
2683
2684(define-public python2-sphinx
2685 (package-with-python2 python-sphinx))
6888830b 2686
ad320b20
RW
2687(define-public python-sphinx-rtd-theme
2688 (package
2689 (name "python-sphinx-rtd-theme")
2690 (version "0.1.6")
2691 (source
2692 (origin
2693 (method url-fetch)
2694 (uri (string-append "https://pypi.python.org/packages/source/s/"
2695 "sphinx_rtd_theme/sphinx_rtd_theme-"
2696 version ".tar.gz"))
2697 (sha256
2698 (base32
2699 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2700 (build-system python-build-system)
2701 (arguments
2702 `(;; With standard flags, the install phase attempts to create a zip'd
2703 ;; egg file, and fails with an error: 'ZIP does not support timestamps
2704 ;; before 1980'
2705 #:configure-flags '("--single-version-externally-managed"
2706 "--record=sphinx-rtd-theme.txt")))
2707 (native-inputs
2708 `(("python-setuptools" ,python-setuptools)))
2709 (inputs
2710 `(("python-docutils" ,python-docutils)
2711 ("python-sphinx" ,python-sphinx)))
2712 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2713 (synopsis "ReadTheDocs.org theme for Sphinx")
2714 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2715 (license license:expat)))
ad320b20
RW
2716
2717(define-public python2-sphinx-rtd-theme
2718 (package-with-python2 python-sphinx-rtd-theme))
2719
f4de5b3b
CAW
2720(define-public python-feedgenerator
2721 (package
2722 (name "python-feedgenerator")
f0412aa2 2723 (version "1.8")
f4de5b3b 2724 (source
f4de5b3b 2725 (origin
f0412aa2
EF
2726 (method url-fetch)
2727 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2728 (sha256
2729 (base32
f0412aa2 2730 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))))
f4de5b3b 2731 (build-system python-build-system)
f0412aa2 2732 (native-inputs
f4de5b3b
CAW
2733 `(("python-setuptools" ,python-setuptools)
2734 ("python-pytz" ,python-pytz)
2735 ("python-six" ,python-six)))
f0412aa2 2736 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
2737 (synopsis
2738 "Standalone version of Django's Atom/RSS feed generator")
2739 (description
2740 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2741which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
2742 (license bsd-3)))
2743
2744(define-public python2-feedgenerator
2745 (package-with-python2 python-feedgenerator))
2746
59ad30e3
CAW
2747(define-public python-blinker
2748 (package
2749 (name "python-blinker")
7fb9ff4d 2750 (version "1.4")
59ad30e3
CAW
2751 (source
2752 (origin
2753 (method url-fetch)
7fb9ff4d 2754 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
2755 (sha256
2756 (base32
7fb9ff4d 2757 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3
CAW
2758 (build-system python-build-system)
2759 (native-inputs
2760 `(("python-setuptools" ,python-setuptools)))
2761 ;; No "test" command supplied to setuptools, so unless there's another way
2762 ;; to run tests, we're skipping them!
2763 (arguments '(#:tests? #f))
2764 (home-page "http://pythonhosted.org/blinker/")
2765 (synopsis "Fast, simple object-to-object and broadcast signaling")
2766 (description
2767 "Blinker provides a fast dispatching system that allows any number of
2768interested parties to subscribe to events, or \"signals\".")
2769 (license license:expat)))
2770
2771(define-public python2-blinker
2772 (package-with-python2 python-blinker))
2773
b8050e71
CAW
2774(define-public pelican
2775 (package
2776 (name "pelican")
11f97c27 2777 (version "3.6.3")
b8050e71
CAW
2778 (source
2779 (origin
2780 (method url-fetch)
11f97c27 2781 (uri (pypi-uri "pelican" version))
b8050e71
CAW
2782 (sha256
2783 (base32
11f97c27 2784 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 2785 (build-system python-build-system)
d9f2dece 2786 (inputs
b8050e71
CAW
2787 `(("python-feedgenerator" ,python-feedgenerator)
2788 ("python-jinja2" ,python-jinja2)
2789 ("python-pygments" ,python-pygments)
2790 ("python-docutils" ,python-docutils)
2791 ("python-pytz" ,python-pytz)
2792 ("python-blinker" ,python-blinker)
2793 ("python-unidecode" ,python-unidecode)
2794 ("python-six" ,python-six)
2795 ("python-dateutil-2" ,python-dateutil-2)))
2796 (home-page "http://getpelican.com/")
2797 (arguments
2798 `(;; XXX Requires a lot more packages to do unit tests :P
2799 #:tests? #f
2800 #:phases (modify-phases %standard-phases
2801 (add-before
2802 'install 'adjust-requires
2803 ;; Since feedgenerator is installed from git, it doesn't
2804 ;; conform to the version requirements.
2805 ;;
2806 ;; We *do have* "feedgenerator >= 1.6", but strip off the
2807 ;; version requirement so setuptools doesn't get confused.
2808 (lambda _
2809 (substitute* "setup.py"
2810 (("['\"]feedgenerator.*?['\"]")
2811 "'feedgenerator'")))))))
2812 (synopsis "Python-based static site publishing system")
2813 (description
2814 "Pelican is a tool to generate a static blog from reStructuredText,
2815Markdown input files, and more. Pelican uses Jinja2 for templating
2816and is very extensible.")
2817 (license agpl3+)))
2818
240ca4aa
RW
2819(define-public python-scikit-learn
2820 (package
2821 (name "python-scikit-learn")
be0a4c26 2822 (version "0.16.1")
240ca4aa
RW
2823 (source
2824 (origin
2825 (method url-fetch)
2826 (uri (string-append
2827 "https://github.com/scikit-learn/scikit-learn/archive/"
2828 version ".tar.gz"))
2829 (sha256
2830 (base32
be0a4c26 2831 "140skabifgc7lvvj873pnzlwx0ni6q8qkrsyad2ccjb3h8rxzkih"))))
240ca4aa
RW
2832 (build-system python-build-system)
2833 (arguments
2834 `(#:phases
2835 (alist-cons-before
2f6b3d2e
RW
2836 'check 'set-HOME
2837 ;; some tests require access to "$HOME"
2838 (lambda _ (setenv "HOME" "/tmp"))
2839 ;; Tests can only be run after the library has been installed and not
2840 ;; within the source directory.
2841 (alist-cons-after
2842 'install 'check
2843 (lambda _
2844 (with-directory-excursion "/tmp"
2845 ;; With Python 3 one test of 3334 fails
2846 ;; (sklearn.tests.test_common.test_transformers); see
2847 ;; https://github.com/scikit-learn/scikit-learn/issues/3693
2848 (system* "nosetests" "-v" "sklearn")))
2849 (alist-delete 'check %standard-phases)))))
240ca4aa 2850 (inputs
2f6b3d2e 2851 `(("openblas" ,openblas)
240ca4aa
RW
2852 ("python-nose" ,python-nose)))
2853 (propagated-inputs
2854 `(("python-numpy" ,python-numpy)
2855 ("python-scipy" ,python-scipy)))
2856 (home-page "http://scikit-learn.org/")
2857 (synopsis "Machine Learning in Python")
2858 (description
2859 "Scikit-learn provides simple and efficient tools for data
2860mining and data analysis.")
2861 (license bsd-3)))
2862
2863(define-public python2-scikit-learn
2864 (let ((scikit (package-with-python2 python-scikit-learn)))
2865 (package (inherit scikit)
2866 (propagated-inputs
2867 `(("python2-numpy" ,python2-numpy)
2868 ("python2-scipy" ,python2-scipy)
2869 ,@(alist-delete
2870 "python-numpy"
2871 (alist-delete
2872 "python-scipy" (package-propagated-inputs scikit))))))))
2873
12f8f9bb
RW
2874(define-public python-scikit-image
2875 (package
2876 (name "python-scikit-image")
2877 (version "0.11.3")
2878 (source
2879 (origin
2880 (method url-fetch)
2881 (uri (string-append
2882 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
2883 version ".tar.gz"))
2884 (sha256
2885 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
2886 (build-system python-build-system)
2887 (propagated-inputs
2888 `(("python-matplotlib" ,python-matplotlib)
2889 ("python-networkx" ,python-networkx)
2890 ("python-numpy" ,python-numpy)
2891 ("python-scipy" ,python-scipy)
2892 ("python-six" ,python-six)
2893 ("python-pillow" ,python-pillow)))
2894 (native-inputs
2895 `(("python-cython" ,python-cython)
2896 ("python-setuptools" ,python-setuptools)))
2897 (home-page "http://scikit-image.org/")
2898 (synopsis "Image processing in Python")
2899 (description
e881752c 2900 "Scikit-image is a collection of algorithms for image processing.")
12f8f9bb
RW
2901 (license bsd-3)))
2902
2903(define-public python2-scikit-image
2904 (let ((scikit-image (package-with-python2 python-scikit-image)))
2905 (package (inherit scikit-image)
2906 (native-inputs
2907 `(("python2-mock" ,python2-mock)
2908 ,@(package-native-inputs scikit-image)))
2909 (propagated-inputs
2910 `(("python2-pytz" ,python2-pytz)
d9bc0bf8
FB
2911 ("python2-matplotlib" ,python2-matplotlib)
2912 ("python2-numpy" ,python2-numpy)
2913 ("python2-scipy" ,python2-scipy)
2914 ,@(fold alist-delete (package-propagated-inputs scikit-image)
2915 '("python-matplotlib" "python-numpy" "python-scipy")))))))
12f8f9bb 2916
5394a6a6
RW
2917(define-public python-redis
2918 (package
2919 (name "python-redis")
2920 (version "2.10.3")
2921 (source
2922 (origin
2923 (method url-fetch)
2924 (uri (string-append
2925 "https://pypi.python.org/packages/source/r/redis/redis-"
2926 version ".tar.gz"))
2927 (sha256
2928 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
2929 (build-system python-build-system)
2930 ;; Tests require a running Redis server
2931 (arguments '(#:tests? #f))
2932 (native-inputs
2933 `(("python-setuptools" ,python-setuptools)
2934 ("python-pytest" ,python-pytest)))
2935 (home-page "https://github.com/andymccurdy/redis-py")
2936 (synopsis "Redis Python client")
2937 (description
2938 "This package provides a Python interface to the Redis key-value store.")
2939 (license license:expat)))
2940
2941(define-public python2-redis
2942 (package-with-python2 python-redis))
2943
748cef5b
RW
2944(define-public python-rq
2945 (package
2946 (name "python-rq")
2947 (version "0.5.2")
2948 (source
2949 (origin
2950 (method url-fetch)
2951 (uri (string-append
2952 "https://pypi.python.org/packages/source/r/rq/rq-"
2953 version ".tar.gz"))
2954 (sha256
2955 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
2956 (build-system python-build-system)
2957 (propagated-inputs
2958 `(("python-click" ,python-click)
2959 ("python-redis" ,python-redis)))
2960 (native-inputs
2961 `(("python-setuptools" ,python-setuptools)))
2962 (home-page "http://python-rq.org/")
2963 (synopsis "Simple job queues for Python")
2964 (description
2965 "RQ (Redis Queue) is a simple Python library for queueing jobs and
2966processing them in the background with workers. It is backed by Redis and it
2967is designed to have a low barrier to entry.")
2968 (license bsd-2)))
2969
2970(define-public python2-rq
2971 (package-with-python2 python-rq))
2972
6888830b
FB
2973(define-public python-cython
2974 (package
2975 (name "python-cython")
435a0462 2976 (version "0.24")
6888830b
FB
2977 (source
2978 (origin
2979 (method url-fetch)
56918e26 2980 (uri (pypi-uri "Cython" version))
6888830b
FB
2981 (sha256
2982 (base32
435a0462 2983 "1wd3q97gia3zhsgcdlvxh26hkrf3m53i6r1l4g0yya119264vr3d"))))
6888830b
FB
2984 (build-system python-build-system)
2985 ;; we need the full python package and not just the python-wrapper
2986 ;; because we need libpython3.3m.so
2987 (inputs
2988 `(("python" ,python)))
2989 (arguments
2990 `(#:phases
2991 (alist-cons-before
2992 'check 'set-HOME
2993 ;; some tests require access to "$HOME/.cython"
2994 (lambda* _ (setenv "HOME" "/tmp"))
2995 (alist-replace
2996 'check
2997 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))
2998 %standard-phases))))
2999 (home-page "http://cython.org/")
3000 (synopsis "C extensions for Python")
3001 (description "Cython is an optimising static compiler for both the Python
3002programming language and the extended Cython programming language. It makes
3003writing C extensions for Python as easy as Python itself.")
48b311b1
LC
3004 (license asl2.0)
3005 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3006
3007(define-public python2-cython
48b311b1
LC
3008 (package (inherit (package-with-python2
3009 (strip-python2-variant python-cython)))
6888830b
FB
3010 (name "python2-cython")
3011 (inputs
3012 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533
FB
3013
3014;; This version of numpy is missing the documentation and is only used to
3015;; build matplotlib which is required to build numpy's documentation.
3016(define python-numpy-bootstrap
3017 (package
3018 (name "python-numpy-bootstrap")
ef9b4c04 3019 (version "1.10.4")
0da98533
FB
3020 (source
3021 (origin
3022 (method url-fetch)
3023 (uri (string-append "mirror://sourceforge/numpy"
3024 "/numpy-" version ".tar.gz"))
3025 (sha256
3026 (base32
ef9b4c04 3027 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3028 (build-system python-build-system)
3029 (inputs
3030 `(("python-nose" ,python-nose)
cba256f8
RW
3031 ("openblas" ,openblas)
3032 ("lapack" ,lapack)))
0da98533 3033 (native-inputs
19afbea1 3034 `(("gfortran" ,gfortran)))
0da98533
FB
3035 (arguments
3036 `(#:phases
3037 (alist-cons-before
3038 'build 'set-environment-variables
3039 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3040 (call-with-output-file "site.cfg"
3041 (lambda (port)
cba256f8
RW
3042 (format port
3043 "[openblas]
dbdfe515
RW
3044libraries = openblas
3045library_dirs = ~a/lib
3046include_dirs = ~a/include
cba256f8
RW
3047
3048[lapack]
3049lapack_libs = lapack
3050library_dirs = ~a/lib
3051include_dirs = ~a/include
3052"
3053 (assoc-ref inputs "openblas")
3054 (assoc-ref inputs "openblas")
3055 (assoc-ref inputs "lapack")
3056 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3057 ;; Use "gcc" executable, not "cc".
3058 (substitute* "numpy/distutils/system_info.py"
3059 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3060 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3061 #t)
6a843168
FB
3062 ;; Tests can only be run after the library has been installed and not
3063 ;; within the source directory.
3064 (alist-cons-after
3065 'install 'check
89b5c60e 3066 (lambda _
6a843168 3067 (with-directory-excursion "/tmp"
89b5c60e 3068 (zero? (system* "python" "-c"
6a843168 3069 "import numpy; numpy.test(verbose=2)"))))
89b5c60e
AE
3070 (alist-delete
3071 'check
6a843168 3072 %standard-phases)))))
0da98533
FB
3073 (home-page "http://www.numpy.org/")
3074 (synopsis "Fundamental package for scientific computing with Python")
3075 (description "NumPy is the fundamental package for scientific computing
e881752c 3076with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3077object, sophisticated (broadcasting) functions, tools for integrating C/C++
3078and Fortran code, useful linear algebra, Fourier transform, and random number
3079capabilities.")
3080 (license bsd-3)))
3081
3082(define python2-numpy-bootstrap
3083 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3084
3a1bfe18
RW
3085(define-public python2-fastlmm
3086 (package
3087 (name "python2-fastlmm")
b074e7d4 3088 (version "0.2.21")
3a1bfe18
RW
3089 (source
3090 (origin
3091 (method url-fetch)
b074e7d4 3092 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3093 (sha256
3094 (base32
b074e7d4 3095 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3096 (build-system python-build-system)
3097 (arguments
3098 `(#:python ,python-2)) ; only Python 2.7 is supported
3099 (propagated-inputs
3100 `(("python2-numpy" ,python2-numpy)
3101 ("python2-scipy" ,python2-scipy)
3102 ("python2-matplotlib" ,python2-matplotlib)
3103 ("python2-pandas" ,python2-pandas)
3104 ("python2-scikit-learn" ,python2-scikit-learn)
3105 ("python2-cython" ,python2-cython)
3106 ("python2-pysnptools" ,python2-pysnptools)))
3107 (native-inputs
3108 `(("unzip" ,unzip)
3109 ("python2-mock" ,python2-mock)
3110 ("python2-setuptools" ,python2-setuptools)))
3111 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3112 (synopsis "Perform genome-wide association studies on large data sets")
3113 (description
3114 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3115Models, is a program for performing both single-SNP and SNP-set genome-wide
3116association studies (GWAS) on extremely large data sets.")
3117 (license asl2.0)))
3118
2ee8869a
FB
3119(define-public python-numpy
3120 (package (inherit python-numpy-bootstrap)
3121 (name "python-numpy")
3122 (outputs '("out" "doc"))
89b5c60e 3123 (inputs
2ee8869a
FB
3124 `(("which" ,which)
3125 ("python-setuptools" ,python-setuptools)
3126 ("python-matplotlib" ,python-matplotlib)
3127 ("python-sphinx" ,python-sphinx)
3128 ("python-pyparsing" ,python-pyparsing)
3129 ("python-numpydoc" ,python-numpydoc)
3130 ,@(package-inputs python-numpy-bootstrap)))
3131 (native-inputs
3132 `(("pkg-config" ,pkg-config)
3133 ("texlive" ,texlive)
3134 ("texinfo" ,texinfo)
3135 ("perl" ,perl)
3136 ,@(package-native-inputs python-numpy-bootstrap)))
3137 (arguments
89b5c60e 3138 `(,@(substitute-keyword-arguments
2ee8869a
FB
3139 (package-arguments python-numpy-bootstrap)
3140 ((#:phases phases)
3141 `(alist-cons-after
3142 'install 'install-doc
3143 (lambda* (#:key outputs #:allow-other-keys)
3144 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3145 (doc (string-append
3146 data "/doc/" ,name "-"
2ee8869a
FB
3147 ,(package-version python-numpy-bootstrap)))
3148 (info (string-append data "/info"))
3149 (html (string-append doc "/html"))
3150 (pyver ,(string-append "PYVER=")))
3151 (with-directory-excursion "doc"
3152 (mkdir-p html)
3153 (system* "make" "html" pyver)
3154 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3155 (system* "make" "-C" "build/latex"
2ee8869a
FB
3156 "all-pdf" "PAPER=a4" pyver)
3157 ;; FIXME: Generation of the info file fails.
3158 ;; (system* "make" "info" pyver)
3159 ;; (mkdir-p info)
3160 ;; (copy-file "build/texinfo/numpy.info"
3161 ;; (string-append info "/numpy.info"))
3162 (for-each (lambda (file)
3163 (copy-file (string-append "build/latex" file)
3164 (string-append doc file)))
3165 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3166 (with-directory-excursion "build/html"
3167 (for-each (lambda (file)
3168 (let* ((dir (dirname file))
3169 (tgt-dir (string-append html "/" dir)))
3170 (unless (equal? "." dir)
3171 (mkdir-p tgt-dir))
96c46210 3172 (install-file file html)))
2ee8869a
FB
3173 (find-files "." ".*"))))))
3174 ,phases)))))))
3175
764c077b 3176(define-public python2-numpy
57b7b8cd 3177 (package-with-python2 python-numpy))
2ee8869a 3178
15bfe6d6
FB
3179(define-public python-pyparsing
3180 (package
3181 (name "python-pyparsing")
e0669289 3182 (version "2.0.3")
15bfe6d6
FB
3183 (source
3184 (origin
3185 (method url-fetch)
3186 (uri (string-append "mirror://sourceforge/pyparsing"
3187 "/pyparsing-" version ".tar.gz"))
3188 (sha256
3189 (base32
e0669289 3190 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3191 (build-system python-build-system)
3192 (outputs '("out" "doc"))
3193 (arguments
3194 `(#:tests? #f ; no test target
3195 #:modules ((guix build python-build-system)
3196 (guix build utils))
3197 #:phases
3198 (alist-cons-after
3199 'install 'install-doc
3200 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3201 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3202 "/share/doc/" ,name "-" ,version))
3203 (html-doc (string-append doc "/html"))
3204 (examples (string-append doc "/examples")))
3205 (mkdir-p html-doc)
3206 (mkdir-p examples)
89b5c60e 3207 (for-each
15bfe6d6 3208 (lambda (dir tgt)
89b5c60e 3209 (map (lambda (file)
96c46210 3210 (install-file file tgt))
15bfe6d6
FB
3211 (find-files dir ".*")))
3212 (list "docs" "htmldoc" "examples")
3213 (list doc html-doc examples))))
3214 %standard-phases)))
3215 (home-page "http://pyparsing.wikispaces.com")
3216 (synopsis "Python parsing class library")
3217 (description
3218 "The pyparsing module is an alternative approach to creating and
3219executing simple grammars, vs. the traditional lex/yacc approach, or the use
3220of regular expressions. The pyparsing module provides a library of classes
3221that client code uses to construct the grammar directly in Python code.")
bd3fa666 3222 (license license:expat)))
15bfe6d6
FB
3223
3224(define-public python2-pyparsing
3225 (package-with-python2 python-pyparsing))
3226
ec00de35
FB
3227(define-public python-numpydoc
3228 (package
3229 (name "python-numpydoc")
3230 (version "0.5")
3231 (source
3232 (origin
3233 (method url-fetch)
89b5c60e 3234 (uri (string-append
ec00de35
FB
3235 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3236 version ".tar.gz"))
3237 (sha256
3238 (base32
5e4d8f67
AE
3239 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3240 (modules '((guix build utils)))
3241 (snippet
3242 '(begin
3243 ;; Drop a test requiring matplotlib, which we cannot add as an
3244 ;; input since it would create a circular dependency: Extend the
3245 ;; test for Python 3, where it is already dropped, to Python 2.
3246 (substitute* "numpydoc/tests/test_plot_directive.py"
3247 (("3") "2"))))))
ec00de35
FB
3248 (build-system python-build-system)
3249 (inputs
3250 `(("python-setuptools" ,python-setuptools)
3251 ("python-docutils" ,python-docutils)
3252 ("python-sphinx" ,python-sphinx)
3253 ("python-nose" ,python-nose)))
3254 (home-page "https://pypi.python.org/pypi/numpydoc")
3255 (synopsis
3256 "Numpy's Sphinx extensions")
3257 (description
3258 "Sphinx extension to support docstrings in Numpy format.")
3259 (license bsd-2)))
3260
3261(define-public python2-numpydoc
5e4d8f67 3262 (package-with-python2 python-numpydoc))
1c65314c 3263
1e656049
RW
3264(define-public python-numexpr
3265 (package
3266 (name "python-numexpr")
26112c0a 3267 (version "2.6.0")
1e656049
RW
3268 (source
3269 (origin
3270 (method url-fetch)
26112c0a 3271 (uri (pypi-uri "numexpr" version))
1e656049
RW
3272 (sha256
3273 (base32
26112c0a 3274 "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag"))))
1e656049
RW
3275 (build-system python-build-system)
3276 (arguments `(#:tests? #f)) ; no tests included
3277 (propagated-inputs
3278 `(("python-numpy" ,python-numpy)))
3279 (home-page "https://github.com/pydata/numexpr")
3280 (synopsis "Fast numerical expression evaluator for NumPy")
3281 (description
3282 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3283expressions that operate on arrays are accelerated and use less memory than
3284doing the same calculation in Python. In addition, its multi-threaded
3285capabilities can make use of all your cores, which may accelerate
3286computations, most specially if they are not memory-bounded (e.g. those using
3287transcendental functions).")
3288 (license license:expat)))
3289
3290(define-public python2-numexpr
3291 (let ((numexpr (package-with-python2 python-numexpr)))
3292 (package (inherit numexpr)
3293 ;; Make sure to use special packages for Python 2 instead
3294 ;; of those automatically rewritten by package-with-python2.
3295 (propagated-inputs
3296 `(("python2-numpy" ,python2-numpy)
3297 ,@(alist-delete "python-numpy"
3298 (package-propagated-inputs numexpr)))))))
3299
1c65314c
FB
3300(define-public python-matplotlib
3301 (package
3302 (name "python-matplotlib")
1bbc659f 3303 (version "1.4.3")
1c65314c
FB
3304 (source
3305 (origin
3306 (method url-fetch)
3307 (uri (string-append "mirror://sourceforge/matplotlib"
3308 "/matplotlib-" version ".tar.gz"))
3309 (sha256
3310 (base32
1bbc659f 3311 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3312 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3313 (build-system python-build-system)
3314 (outputs '("out" "doc"))
25f9a068
FB
3315 (propagated-inputs ; the following packages are all needed at run time
3316 `(("python-pyparsing" ,python-pyparsing)
3317 ("python-pygobject" ,python-pygobject)
3318 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3319 ("python-tkinter" ,python "tk")
25f9a068
FB
3320 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3321 ;; from 'gtk+') provides the required 'typelib' files used by
3322 ;; 'gobject-introspection'. The location of these files is set with the
3323 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3324 ;; is done automatically by a 'native-search-path' procedure. However,
3325 ;; at run-time the user must set this variable as follows:
3326 ;;
3327 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3328 ("gtk+" ,gtk+)
3329 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3330 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3331 ;; object. For this reason we need to import both libraries.
3332 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3333 ("python-pycairo" ,python-pycairo)
3334 ("python-cairocffi" ,python-cairocffi)))
1c65314c
FB
3335 (inputs
3336 `(("python-setuptools" ,python-setuptools)
3337 ("python-dateutil" ,python-dateutil-2)
1c65314c
FB
3338 ("python-six" ,python-six)
3339 ("python-pytz" ,python-pytz)
3340 ("python-numpy" ,python-numpy-bootstrap)
3341 ("python-sphinx" ,python-sphinx)
3342 ("python-numpydoc" ,python-numpydoc)
3343 ("python-nose" ,python-nose)
3344 ("python-mock" ,python-mock)
3345 ("libpng" ,libpng)
3346 ("imagemagick" ,imagemagick)
3347 ("freetype" ,freetype)
25f9a068
FB
3348 ("cairo" ,cairo)
3349 ("glib" ,glib)
4e7a137a 3350 ("python-pillow" ,python-pillow)
1c65314c 3351 ;; FIXME: Add backends when available.
1c65314c
FB
3352 ;("python-wxpython" ,python-wxpython)
3353 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3354 ("tcl" ,tcl)
3355 ("tk" ,tk)))
1c65314c
FB
3356 (native-inputs
3357 `(("pkg-config" ,pkg-config)
3358 ("texlive" ,texlive)
3359 ("texinfo" ,texinfo)))
3360 (arguments
3361 `(#:phases
25f9a068
FB
3362 (alist-cons-before
3363 'build 'configure-environment
3364 (lambda* (#:key outputs inputs #:allow-other-keys)
3365 (let ((cairo (assoc-ref inputs "cairo"))
3366 (gtk+ (assoc-ref inputs "gtk+")))
3367 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3368 ;; has not effect.
25f9a068
FB
3369 (setenv "LD_LIBRARY_PATH"
3370 (string-append cairo "/lib:" gtk+ "/lib"))
3371 (setenv "HOME" (getcwd))
3372 (call-with-output-file "setup.cfg"
3373 (lambda (port)
1bbc659f
FB
3374 (format port "[directories]~%
3375basedirlist = ~a,~a~%
57b7b8cd 3376 [rc_options]~%
1bbc659f
FB
3377backend = TkAgg~%"
3378 (assoc-ref inputs "tcl")
3379 (assoc-ref inputs "tk"))))))
25f9a068
FB
3380 (alist-cons-after
3381 'install 'install-doc
3382 (lambda* (#:key outputs #:allow-other-keys)
3383 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3384 (doc (string-append data "/doc/" ,name "-" ,version))
3385 (info (string-append data "/info"))
3386 (html (string-append doc "/html")))
3387 (with-directory-excursion "doc"
25f9a068
FB
3388 ;; Produce pdf in 'A4' format.
3389 (substitute* (find-files "." "conf\\.py")
3390 (("latex_paper_size = 'letter'")
3391 "latex_paper_size = 'a4'"))
3392 (mkdir-p html)
3393 (mkdir-p info)
3394 ;; The doc recommends to run the 'html' target twice.
3395 (system* "python" "make.py" "html")
3396 (system* "python" "make.py" "html")
18b31516 3397 (copy-recursively "build/html" html)
25f9a068
FB
3398 (system* "python" "make.py" "latex")
3399 (system* "python" "make.py" "texinfo")
18b31516
FB
3400 (symlink (string-append html "/_images")
3401 (string-append info "/matplotlib-figures"))
3402 (with-directory-excursion "build/texinfo"
3403 (substitute* "matplotlib.texi"
3404 (("@image\\{([^,]*)" all file)
3405 (string-append "@image{matplotlib-figures/" file)))
3406 (symlink (string-append html "/_images")
3407 "./matplotlib-figures")
3408 (system* "makeinfo" "--no-split"
3409 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3410 (copy-file "build/texinfo/matplotlib.info"
3411 (string-append info "/matplotlib.info"))
3412 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3413 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3414 %standard-phases))))
1c65314c
FB
3415 (home-page "http://matplotlib.org")
3416 (synopsis "2D plotting library for Python")
3417 (description
3418 "Matplotlib is a Python 2D plotting library which produces publication
3419quality figures in a variety of hardcopy formats and interactive environments
3420across platforms. Matplotlib can be used in Python scripts, the python and
3421ipython shell, web application servers, and six graphical user interface
3422toolkits.")
57b7b8cd
LC
3423 (license psfl)
3424 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3425
764c077b 3426(define-public python2-matplotlib
57b7b8cd
LC
3427 (let ((matplotlib (package-with-python2
3428 (strip-python2-variant python-matplotlib))))
764c077b 3429 (package (inherit matplotlib)
88c26834
AE
3430 ;; Make sure to use special packages for Python 2 instead
3431 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3432 (propagated-inputs
7ca0dbc3 3433 `(("python2-pycairo" ,python2-pycairo)
764c077b 3434 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3435 ("python2-tkinter" ,python-2 "tk")
3436 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3437 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3438
0dde6232
RW
3439(define-public python2-pysnptools
3440 (package
3441 (name "python2-pysnptools")
a800018e 3442 (version "0.3.9")
0dde6232
RW
3443 (source
3444 (origin
3445 (method url-fetch)
3f2e9675 3446 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3447 (sha256
3448 (base32
a800018e 3449 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3450 (build-system python-build-system)
3451 (arguments
3452 `(#:python ,python-2)) ; only Python 2.7 is supported
3453 (propagated-inputs
3454 `(("python2-numpy" ,python2-numpy)
3455 ("python2-scipy" ,python2-scipy)
a800018e 3456 ("python2-pytz" ,python2-pytz)
0dde6232 3457 ("python2-cython" ,python2-cython)))
a800018e
EF
3458 (inputs
3459 `(("python2-dateutil-2" ,python2-dateutil-2)
3460 ("python2-pandas" ,python2-pandas)
3461 ("python2-six" ,python2-six)))
0dde6232
RW
3462 (native-inputs
3463 `(("unzip" ,unzip)
3464 ("python2-setuptools" ,python2-setuptools)))
3465 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3466 (synopsis "Library for reading and manipulating genetic data")
3467 (description
3468 "PySnpTools is a library for reading and manipulating genetic data. It
3469can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3470those files. It can also efficiently manipulate ranges of integers using set
3471operators such as union, intersection, and difference.")
3472 (license asl2.0)))
3473
c9b1b4f9
RW
3474(define-public python-rpy2
3475 (package
3476 (name "python-rpy2")
ec3bcbc7 3477 (version "2.7.6")
c9b1b4f9
RW
3478 (source
3479 (origin
3480 (method url-fetch)
ec3bcbc7 3481 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3482 (sha256
3483 (base32
ec3bcbc7 3484 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9
RW
3485 (build-system python-build-system)
3486 (inputs
3487 `(("python-six" ,python-six)
3488 ("readline" ,readline)
3489 ("icu4c" ,icu4c)
3490 ("pcre" ,pcre)
3491 ("r" ,r)))
3492 (native-inputs
5ff6575b
RW
3493 `(("python-setuptools" ,python-setuptools)
3494 ("zlib" ,zlib)))
c9b1b4f9
RW
3495 (home-page "http://rpy.sourceforge.net/")
3496 (synopsis "Python interface to the R language")
3497 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3498low-level interface to R from Python, a proposed high-level interface,
3499including wrappers to graphical libraries, as well as R-like structures and
3500functions.")
3501 (license gpl3+)))
3502
3503(define-public python2-rpy2
3504 (let ((rpy2 (package-with-python2 python-rpy2)))
3505 (package (inherit rpy2)
3506 (native-inputs
3507 `(("python2-singledispatch" ,python2-singledispatch)
3508 ,@(package-native-inputs rpy2))))))
3509
bb986599
FB
3510(define-public python-scipy
3511 (package
3512 (name "python-scipy")
ba8a0824 3513 (version "0.16.0")
bb986599
FB
3514 (source
3515 (origin
3516 (method url-fetch)
3517 (uri (string-append "mirror://sourceforge/scipy"
da6ce3f1 3518 "/scipy-" version ".tar.xz"))
bb986599
FB
3519 (sha256
3520 (base32
ba8a0824 3521 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3522 (build-system python-build-system)
dd86c0d1 3523 (propagated-inputs
bb986599
FB
3524 `(("python-numpy" ,python-numpy)
3525 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3526 ("python-pyparsing" ,python-pyparsing)))
3527 (inputs
3528 `(("lapack" ,lapack)
719b01c1 3529 ("openblas" ,openblas)))
bb986599 3530 (native-inputs
dd86c0d1
RW
3531 `(("python-nose" ,python-nose)
3532 ("python-sphinx" ,python-sphinx)
5248d49e 3533 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3534 ("gfortran" ,gfortran)
bb986599
FB
3535 ("texlive" ,texlive)
3536 ("perl" ,perl)))
3537 (outputs '("out" "doc"))
3538 (arguments
3539 `(#:phases
3540 (alist-cons-before
719b01c1 3541 'build 'configure-openblas
bb986599 3542 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3543 (call-with-output-file "site.cfg"
3544 (lambda (port)
3545 (format port
3546 "[blas]
3547libraries = openblas
3548library_dirs = ~a/lib
3549include_dirs = ~a/include
3550[atlas]
3551library_dirs = ~a/lib
3552atlas_libs = openblas
3553"
3554 (assoc-ref inputs "openblas")
3555 (assoc-ref inputs "openblas")
3556 (assoc-ref inputs "openblas"))))
3557 #t)
bb986599
FB
3558 (alist-cons-after
3559 'install 'install-doc
3560 (lambda* (#:key outputs #:allow-other-keys)
3561 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3562 (doc (string-append data "/doc/" ,name "-" ,version))
3563 (html (string-append doc "/html"))
3564 (pyver ,(string-append "PYVER=")))
3565 (with-directory-excursion "doc"
bb986599
FB
3566 ;; Fix generation of images for mathematical expressions.
3567 (substitute* (find-files "source" "conf\\.py")
3568 (("pngmath_use_preview = True")
3569 "pngmath_use_preview = False"))
3570 (mkdir-p html)
3571 (system* "make" "html" pyver)
3572 (system* "make" "latex" "PAPER=a4" pyver)
3573 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3574 (copy-file "build/latex/scipy-ref.pdf"
3575 (string-append doc "/scipy-ref.pdf"))
3576 (with-directory-excursion "build/html"
3577 (for-each (lambda (file)
3578 (let* ((dir (dirname file))
3579 (tgt-dir (string-append html "/" dir)))
96c46210 3580 (install-file file html)))
bb986599
FB
3581 (find-files "." ".*"))))))
3582 ;; Tests can only be run after the library has been installed and not
3583 ;; within the source directory.
3584 (alist-cons-after
3585 'install 'check
89b5c60e 3586 (lambda _
bb986599
FB
3587 (with-directory-excursion "/tmp"
3588 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3589 (alist-delete
3590 'check
4f9ff21e
RW
3591 (alist-cons-after
3592 'unpack 'fix-tests
3593 (lambda _
3594 (substitute* "scipy/integrate/tests/test_quadpack.py"
3595 (("libm.so") "libm.so.6"))
3596 #t)
3597 %standard-phases)))))))
bb986599
FB
3598 (home-page "http://www.scipy.org/")
3599 (synopsis "The Scipy library provides efficient numerical routines")
3600 (description "The SciPy library is one of the core packages that make up
3601the SciPy stack. It provides many user-friendly and efficient numerical
3602routines such as routines for numerical integration and optimization.")
3603 (license bsd-3)))
3604
764c077b 3605(define-public python2-scipy
57b7b8cd 3606 (package-with-python2 python-scipy))
bb986599 3607
94914805
EB
3608(define-public python-sqlalchemy
3609 (package
3610 (name "python-sqlalchemy")
a4ba286b 3611 (version "1.0.12")
94914805
EB
3612 (source
3613 (origin
3614 (method url-fetch)
3615 (uri (string-append "https://pypi.python.org/packages/source/S/"
3616 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3617 (sha256
3618 (base32
a4ba286b 3619 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3620 (build-system python-build-system)
3621 (native-inputs
3622 `(("python-cython" ,python-cython) ;for c extensions
3623 ("python-pytest" ,python-pytest)
3624 ("python-mock" ,python-mock))) ;for tests
3625 (arguments
3626 `(#:phases (alist-replace
3627 'check
3628 (lambda _ (zero? (system* "py.test")))
3629 %standard-phases)))
3630 (home-page "http://www.sqlalchemy.org")
3631 (synopsis "Database abstraction library")
3632 (description
3633 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3634gives application developers the full power and flexibility of SQL. It
3635provides a full suite of well known enterprise-level persistence patterns,
3636designed for efficient and high-performing database access, adapted into a
3637simple and Pythonic domain language.")
3638 (license x11)))
3639
3640(define-public python2-sqlalchemy
3641 (package-with-python2 python-sqlalchemy))
c937562e 3642
af5a4602
CAW
3643(define-public python-alembic
3644 (package
3645 (name "python-alembic")
3646 (version "0.8.4")
3647 (source
3648 (origin
3649 (method url-fetch)
3650 (uri (pypi-uri "alembic" version))
3651 (sha256
3652 (base32
3653 "0jk23a852l3ybv7gfz81xzslyrnqnpjds5x15zd234y9rh9gq1w5"))))
3654 (build-system python-build-system)
3655 (native-inputs
3656 `(("python-mock" ,python-mock)
3657 ("python-pytest-cov" ,python-pytest-cov)))
3658 (propagated-inputs
3659 `(("python-sqlalchemy" ,python-sqlalchemy)
3660 ("python-mako" ,python-mako)
3661 ("python-editor" ,python-editor)))
3662 (home-page "http://bitbucket.org/zzzeek/alembic")
3663 (synopsis
3664 "Database migration tool for SQLAlchemy")
3665 (description
3666 "Alembic is a lightweight database migration tool for usage with the
3667SQLAlchemy Database Toolkit for Python.")
3668 (license license:expat)
3669 (properties `((python2-variant . ,(delay python2-alembic))))))
3670
3671(define-public python2-alembic
3672 (let ((alembic (package-with-python2
3673 (strip-python2-variant python-alembic))))
3674 (package
3675 (inherit alembic)
3676 (native-inputs `(("python2-setuptools" ,python2-setuptools)
3677 ,@(package-native-inputs alembic))))))
3678
1671c07c
EB
3679(define-public python-distutils-extra
3680 (package
3681 (name "python-distutils-extra")
3682 (version "2.38")
3683 (source
3684 (origin
3685 (method url-fetch)
3686 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
3687 version "/+download/python-distutils-extra-"
3688 version ".tar.gz"))
3689 (sha256
3690 (base32
3691 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
3692 (build-system python-build-system)
3693 (native-inputs
3694 `(("python-setuptools" ,python-setuptools)))
3695 (home-page "https://launchpad.net/python-distutils-extra/")
3696 (synopsis "Enhancements to Python's distutils")
3697 (description
3698 "The python-distutils-extra module enables you to easily integrate
3699gettext support, themed icons, and scrollkeeper-based documentation into
3700Python's distutils.")
3701 (license gpl2)))
3702
3703(define-public python2-distutils-extra
3704 (package-with-python2 python-distutils-extra))
ea5456c8
EB
3705
3706(define-public python2-elib.intl
3707 (package
3708 (name "python2-elib.intl")
3709 (version "0.0.3")
3710 (source
3711 (origin
3712 ;; This project doesn't tag releases or publish tarballs, so we take
3713 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
3714 (method git-fetch)
3715 (uri (git-reference
3716 (url "https://github.com/dieterv/elib.intl.git")
3717 (commit "d09997cfef")))
3718 (sha256
3719 (base32
3720 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
3721 (build-system python-build-system)
3722 (native-inputs
3723 `(("python2-setuptools" ,python2-setuptools)))
3724 (arguments
3725 ;; incompatible with Python 3 (exception syntax)
3726 `(#:python ,python-2
3727 #:tests? #f
3728 ;; With standard flags, the install phase attempts to create a zip'd
3729 ;; egg file, and fails with an error: 'ZIP does not support timestamps
3730 ;; before 1980'
3731 #:configure-flags '("--single-version-externally-managed"
3732 "--record=elib.txt")))
3733 (home-page "https://github.com/dieterv/elib.intl")
3734 (synopsis "Enhanced internationalization for Python")
3735 (description
3736 "The elib.intl module provides enhanced internationalization (I18N)
3737services for your Python modules and applications.")
3738 (license lgpl3+)))
3739
c937562e
EB
3740(define-public python-pillow
3741 (package
3742 (name "python-pillow")
16095d27 3743 (version "3.1.1")
c937562e
EB
3744 (source
3745 (origin
3746 (method url-fetch)
f1d9231d 3747 (uri (pypi-uri "Pillow" version))
c937562e
EB
3748 (sha256
3749 (base32
16095d27 3750 "1zwzakr5v0skdh0azp5cd6fwzbll5305dsk33k5jk570vv6lqvs8"))))
c937562e
EB
3751 (build-system python-build-system)
3752 (native-inputs
3753 `(("python-setuptools" ,python-setuptools)
3754 ("python-nose" ,python-nose)))
3755 (inputs
5ff408d9
SB
3756 `(("freetype" ,freetype)
3757 ("lcms" ,lcms)
c937562e
EB
3758 ("zlib" ,zlib)
3759 ("libjpeg" ,libjpeg)
3760 ("openjpeg" ,openjpeg)
5ff408d9
SB
3761 ("libtiff" ,libtiff)
3762 ("libwebp" ,libwebp)))
c937562e
EB
3763 (propagated-inputs
3764 `(;; Used at runtime for pkg_resources
3765 ("python-setuptools" ,python-setuptools)))
3766 (arguments
e5358a6b
LC
3767 `(#:phases (modify-phases %standard-phases
3768 (add-before
3769 'install 'disable-egg-compression
3770 (lambda _
3771 ;; Leave the .egg uncompressed since compressing it would
3772 ;; prevent the GC from identifying run-time dependencies.
3773 ;; See <http://bugs.gnu.org/20765>.
3774 (let ((port (open-file "setup.cfg" "a")))
3775 (display "\n[easy_install]\nzip_ok = 0\n"
3776 port)
3777 (close-port port)
3778 #t)))
3779 (add-after
3780 'install 'check-installed
3781 (lambda _
3782 (begin
3783 (setenv "HOME" (getcwd))
3784 (and (zero? (system* "python" "selftest.py"
3785 "--installed"))
3786 (zero? (system* "python" "test-installed.py"))))))
3787 (delete 'check))))
c937562e
EB
3788 (home-page "https://pypi.python.org/pypi/Pillow")
3789 (synopsis "Fork of the Python Imaging Library")
3790 (description
3791 "The Python Imaging Library adds image processing capabilities to your
3792Python interpreter. This library provides extensive file format support, an
3793efficient internal representation, and fairly powerful image processing
3794capabilities. The core image library is designed for fast access to data
3795stored in a few basic pixel formats. It should provide a solid foundation for
3796a general image processing tool.")
3797 (license (x11-style
3798 "http://www.pythonware.com/products/pil/license.htm"
3799 "The PIL Software License"))))
3800
3801(define-public python2-pillow
3802 (package-with-python2 python-pillow))
bb986599 3803
a415f036
FB
3804(define-public python-pycparser
3805 (package
3806 (name "python-pycparser")
38eb6919 3807 (version "2.14")
a415f036
FB
3808 (source
3809 (origin
3810 (method url-fetch)
38eb6919 3811 (uri (pypi-uri "pycparser" version))
a415f036
FB
3812 (sha256
3813 (base32
38eb6919 3814 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
3815 (outputs '("out" "doc"))
3816 (build-system python-build-system)
3817 (native-inputs
3818 `(("pkg-config" ,pkg-config)
3819 ("python-setuptools" ,python-setuptools)))
3820 (arguments
89b5c60e 3821 `(#:phases
a415f036
FB
3822 (alist-replace
3823 'check
3824 (lambda _
3825 (with-directory-excursion "tests"
3826 (zero? (system* "python" "all_tests.py"))))
3827 (alist-cons-after
3828 'install 'install-doc
3829 (lambda* (#:key outputs #:allow-other-keys)
3830 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3831 (doc (string-append data "/doc/" ,name "-" ,version))
3832 (examples (string-append doc "/examples")))
3833 (mkdir-p examples)
3834 (for-each (lambda (file)
3835 (copy-file (string-append "." file)
3836 (string-append doc file)))
3837 '("/README.rst" "/CHANGES" "/LICENSE"))
3838 (copy-recursively "examples" examples)))
3839 %standard-phases))))
3840 (home-page "https://github.com/eliben/pycparser")
3841 (synopsis "C parser in Python")
3842 (description
3843 "Pycparser is a complete parser of the C language, written in pure Python
3844using the PLY parsing library. It parses C code into an AST and can serve as
3845a front-end for C compilers or analysis tools.")
3846 (license bsd-3)))
3847
3848(define-public python2-pycparser
3849 (package-with-python2 python-pycparser))
57c3f716
FB
3850
3851(define-public python-cffi
3852 (package
3853 (name "python-cffi")
2d3a437c 3854 (version "1.4.2")
57c3f716
FB
3855 (source
3856 (origin
3857 (method url-fetch)
2d3a437c 3858 (uri (pypi-uri "cffi" version))
89b5c60e 3859 (sha256
2d3a437c 3860 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
3861 (build-system python-build-system)
3862 (outputs '("out" "doc"))
3863 (inputs
3864 `(("libffi" ,libffi)))
3865 (propagated-inputs ; required at run-time
3866 `(("python-pycparser" ,python-pycparser)))
3867 (native-inputs
3868 `(("pkg-config" ,pkg-config)
3869 ("python-sphinx" ,python-sphinx)
4179f952 3870 ("python-pytest" ,python-pytest)
57c3f716
FB
3871 ("python-setuptools" ,python-setuptools)))
3872 (arguments
4179f952 3873 `(#:phases
57c3f716
FB
3874 (alist-cons-after
3875 'install 'install-doc
3876 (lambda* (#:key outputs #:allow-other-keys)
3877 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3878 (doc (string-append data "/doc/" ,name "-" ,version))
3879 (html (string-append doc "/html")))
3880 (with-directory-excursion "doc"
3881 (system* "make" "html")
3882 (mkdir-p html)
3883 (copy-recursively "build/html" html))
3884 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
3885 %standard-phases)))
3886 (home-page "http://cffi.readthedocs.org")
3887 (synopsis "Foreign function interface for Python")
3888 (description
3889 "Foreign Function Interface for Python calling C code.")
bd3fa666 3890 (license license:expat)))
57c3f716
FB
3891
3892(define-public python2-cffi
3893 (package-with-python2 python-cffi))
6fa14469
FB
3894
3895(define-public python-xcffib
3896 (package
3897 (name "python-xcffib")
3898 (version "0.1.9")
3899 (source
3900 (origin
3901 (method url-fetch)
3902 (uri (string-append "https://pypi.python.org/packages/source/x/"
3903 "xcffib/xcffib-" version ".tar.gz"))
3904 (sha256
3905 (base32
3906 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
3907 (build-system python-build-system)
3908 (inputs
3909 `(("libxcb" ,libxcb)
3910 ("python-six" ,python-six)))
3911 (native-inputs
3912 `(("python-setuptools" ,python-setuptools)))
3913 (propagated-inputs
3914 `(("python-cffi" ,python-cffi))) ; used at run time
3915 (arguments
89b5c60e 3916 `(#:phases
6fa14469
FB
3917 (alist-cons-after
3918 'install 'install-doc
3919 (lambda* (#:key outputs #:allow-other-keys)
3920 (let ((doc (string-append (assoc-ref outputs "out") "/share"
3921 "/doc/" ,name "-" ,version)))
3922 (mkdir-p doc)
3923 (copy-file "README.md"
3924 (string-append doc "/README.md"))))
3925 %standard-phases)))
3926 (home-page "https://github.com/tych0/xcffib")
3927 (synopsis "XCB Python bindings")
3928 (description
3929 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
3930support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 3931 (license license:expat)))
6fa14469
FB
3932
3933(define-public python2-xcffib
3934 (package-with-python2 python-xcffib))
3935
9e099723
FB
3936(define-public python-cairocffi
3937 (package
3938 (name "python-cairocffi")
3939 (version "0.6")
3940 (source
3941 (origin
3942 (method url-fetch)
3943 ;; The archive on pypi is missing the 'utils' directory!
3944 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
3945 version ".tar.gz"))
f586c877 3946 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
3947 (sha256
3948 (base32
3949 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
3950 (build-system python-build-system)
3951 (outputs '("out" "doc"))
3952 (inputs
3953 `(("gdk-pixbuf" ,gdk-pixbuf)
3954 ("cairo" ,cairo)))
3955 (native-inputs
3956 `(("pkg-config" ,pkg-config)
3957 ("python-sphinx" ,python-sphinx)
3958 ("python-docutils" ,python-docutils)
3959 ("python-setuptools" ,python-setuptools)))
3960 (propagated-inputs
3961 `(("python-xcffib" ,python-xcffib))) ; used at run time
3962 (arguments
89b5c60e 3963 `(#:phases
9e099723
FB
3964 (alist-cons-after
3965 'install 'install-doc
3966 (lambda* (#:key inputs outputs #:allow-other-keys)
3967 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3968 (doc (string-append data "/doc/" ,name "-" ,version))
3969 (html (string-append doc "/html")))
89b5c60e 3970 (setenv "LD_LIBRARY_PATH"
9e099723
FB
3971 (string-append (assoc-ref inputs "cairo") "/lib" ":"
3972 (assoc-ref inputs "gdk-pixbuf") "/lib"))
3973 (setenv "LANG" "en_US.UTF-8")
3974 (mkdir-p html)
3975 (for-each (lambda (file)
3976 (copy-file (string-append "." file)
3977 (string-append doc file)))
3978 '("/README.rst" "/CHANGES" "/LICENSE"))
3979 (system* "python" "setup.py" "build_sphinx")
3980 (copy-recursively "docs/_build/html" html)))
3981 %standard-phases)))
3982 (home-page "https://github.com/SimonSapin/cairocffi")
3983 (synopsis "Python bindings and object-oriented API for Cairo")
3984 (description
3985 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
3986Python bindings and object-oriented API for cairo. Cairo is a 2D vector
3987graphics library with support for multiple backends including image buffers,
3988PNG, PostScript, PDF, and SVG file output.")
3989 (license bsd-3)))
3990
3991(define-public python2-cairocffi
3992 (package-with-python2 python-cairocffi))
3993
3cff95cb
RW
3994(define-public python-decorator
3995 (package
3996 (name "python-decorator")
eb6e2e81 3997 (version "4.0.9")
3cff95cb
RW
3998 (source
3999 (origin
4000 (method url-fetch)
e21338be 4001 (uri (pypi-uri "decorator" version))
3cff95cb 4002 (sha256
eb6e2e81 4003 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
4004 (build-system python-build-system)
4005 (arguments '(#:tests? #f)) ; no test target
4006 (native-inputs
4007 `(("python-setuptools" ,python-setuptools)))
eb6e2e81 4008 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4009 (synopsis "Python module to simplify usage of decorators")
4010 (description
4011 "The aim of the decorator module is to simplify the usage of decorators
4012for the average programmer, and to popularize decorators usage giving examples
4013of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4014etc. The core of this module is a decorator factory.")
4015 (license license:expat)))
4016
4017(define-public python2-decorator
4018 (package-with-python2 python-decorator))
4019
2c0499ad
RW
4020(define-public python-drmaa
4021 (package
4022 (name "python-drmaa")
4023 (version "0.7.6")
4024 (source
4025 (origin
4026 (method url-fetch)
4027 (uri (string-append
4028 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4029 version ".tar.gz"))
4030 (sha256
4031 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4032 (build-system python-build-system)
4033 ;; The test suite requires libdrmaa which is provided by the cluster
4034 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4035 ;; should be set to the path of the libdrmaa library.
4036 (arguments '(#:tests? #f))
4037 (native-inputs
4038 `(("python-nose" ,python-nose)
4039 ("python-setuptools" ,python-setuptools)))
4040 (home-page "https://pypi.python.org/pypi/drmaa")
4041 (synopsis "Python bindings for the DRMAA library")
4042 (description
4043 "A Python package for Distributed Resource Management (DRM) job
4044submission and control. This package is an implementation of the DRMAA 1.0
4045Python language binding specification.")
4046 (license bsd-3)))
4047
4048(define-public python2-drmaa
4049 (package-with-python2 python-drmaa))
4050
d05c6da0
RW
4051(define-public python-gridmap
4052 (package
4053 (name "python-gridmap")
4054 (version "0.13.0")
4055 (source
4056 (origin
4057 (method url-fetch)
4058 (uri (string-append
4059 "https://github.com/pygridtools/gridmap/archive/v"
4060 version ".tar.gz"))
4061 (file-name (string-append name "-" version ".tar.gz"))
4062 (sha256
4063 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4064 (build-system python-build-system)
4065 (inputs
4066 `(("python-psutil" ,python-psutil)
4067 ("python-drmaa" ,python-drmaa)
4068 ("python-pyzmq" ,python-pyzmq)))
4069 (native-inputs
4070 `(("python-setuptools" ,python-setuptools)))
4071 (home-page "https://github.com/pygridtools/gridmap")
4072 (synopsis "Create jobs on a cluster directly from Python")
4073 (description
4074 "Gridmap is a Python package to allow you to easily create jobs on the
4075cluster directly from Python. You can directly map Python functions onto the
4076cluster without needing to write any wrapper code yourself.")
4077 (license gpl3+)))
4078
4079(define-public python2-gridmap
4080 (package-with-python2 python-gridmap))
4081
cb6d5c54
RW
4082(define-public python-pexpect
4083 (package
4084 (name "python-pexpect")
4085 (version "3.3")
4086 (source
4087 (origin
4088 (method url-fetch)
4089 (uri (string-append "https://pypi.python.org/packages/source/p/"
4090 "pexpect/pexpect-" version ".tar.gz"))
4091 (sha256
4092 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4093 (build-system python-build-system)
4094 (arguments
4095 `(#:phases
4096 (modify-phases %standard-phases
4097 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4098 (native-inputs
4099 `(("python-nose" ,python-nose)))
4100 (home-page "http://pexpect.readthedocs.org/")
4101 (synopsis "Controlling interactive console applications")
4102 (description
4103 "Pexpect is a pure Python module for spawning child applications;
4104controlling them; and responding to expected patterns in their output.
4105Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4106child application and control it as if a human were typing commands.")
4107 (license isc)))
4108
4109(define-public python2-pexpect
4110 (package-with-python2 python-pexpect))
4111
229ad120
RW
4112(define-public python-setuptools-scm
4113 (package
4114 (name "python-setuptools-scm")
42d6d0d0 4115 (version "1.11.1")
229ad120
RW
4116 (source (origin
4117 (method url-fetch)
383af6b0 4118 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4119 (sha256
4120 (base32
42d6d0d0 4121 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120 4122 (build-system python-build-system)
383af6b0 4123 (native-inputs `(("python-setuptools" ,python-setuptools)))
229ad120
RW
4124 (home-page "https://github.com/pypa/setuptools_scm/")
4125 (synopsis "Manage Python package versions in SCM metadata")
4126 (description
383af6b0 4127 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4128@dfn{software configuration management} (SCM) metadata instead of declaring
4129them as the version argument or in a SCM managed file.")
4130 (license license:expat)))
4131
4132(define-public python2-setuptools-scm
4133 (package-with-python2 python-setuptools-scm))
4134
b74270ee
RW
4135(define-public python-pathpy
4136 (package
4137 (name "python-pathpy")
4138 (version "8.1.1")
4139 (source
4140 (origin
4141 (method url-fetch)
4142 (uri (string-append "https://pypi.python.org/packages/source/p/"
4143 "path.py/path.py-" version ".tar.gz"))
4144 (sha256
4145 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
4146 (build-system python-build-system)
4147 (propagated-inputs
4148 `(("python-appdirs" ,python-appdirs)))
4149 (native-inputs
553b709b
EF
4150 `(("python-setuptools" ,python-setuptools)
4151 ("python-setuptools-scm" ,python-setuptools-scm)
b74270ee
RW
4152 ("python-pytest" ,python-pytest)
4153 ("python-pytest-runner" ,python-pytest-runner)))
4154 (home-page "http://github.com/jaraco/path.py")
4155 (synopsis "Python module wrapper for built-in os.path")
4156 (description
4157 "@code{path.py} implements path objects as first-class entities, allowing
4158common operations on files to be invoked on those path objects directly.")
4159 (license license:expat)))
4160
4161(define-public python2-pathpy
4162 (package-with-python2 python-pathpy))
4163
0d34e01b
RW
4164(define-public python-pickleshare
4165 (package
4166 (name "python-pickleshare")
4167 (version "0.5")
4168 (source
4169 (origin
4170 (method url-fetch)
4171 (uri (string-append "https://pypi.python.org/packages/source/p/"
4172 "pickleshare/pickleshare-" version ".tar.gz"))
4173 (sha256
4174 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4175 (build-system python-build-system)
4176 (propagated-inputs
4177 `(("python-pathpy" ,python-pathpy)))
b72a4410
EF
4178 (native-inputs
4179 `(("python-setuptools" ,python-setuptools)))
0d34e01b
RW
4180 (home-page "https://github.com/vivainio/pickleshare")
4181 (synopsis "Tiny key value database with concurrency support")
4182 (description
4183 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4184Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4185shelve, many processes can access the database simultaneously. Changing a
4186value in database is immediately visible to other processes accessing the same
4187database. Concurrency is possible because the values are stored in separate
4188files. Hence the “database” is a directory where all files are governed by
4189PickleShare.")
4190 (license license:expat)))
4191
4192(define-public python2-pickleshare
4193 (package-with-python2 python-pickleshare))
4194
cd6e5189
RW
4195(define-public python-simplegeneric
4196 (package
4197 (name "python-simplegeneric")
4198 (version "0.8.1")
4199 (source
4200 (origin
4201 (method url-fetch)
4202 (uri (string-append "https://pypi.python.org/packages/source/s/"
4203 "simplegeneric/simplegeneric-" version ".zip"))
4204 (sha256
4205 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4206 (build-system python-build-system)
4207 (native-inputs
69b96e5e
RW
4208 `(("python-setuptools" ,python-setuptools)
4209 ("unzip" ,unzip)))
cd6e5189
RW
4210 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4211 (synopsis "Python module for simple generic functions")
4212 (description
4213 "The simplegeneric module lets you define simple single-dispatch generic
4214functions, akin to Python’s built-in generic functions like @code{len()},
4215@code{iter()} and so on. However, instead of using specially-named methods,
4216these generic functions use simple lookup tables, akin to those used by
4217e.g. @code{pickle.dump()} and other generic functions found in the Python
4218standard library.")
4219 (license zpl2.1)))
4220
4221(define-public python2-simplegeneric
4222 (package-with-python2 python-simplegeneric))
4223
ddc7d8ed
RW
4224(define-public python-ipython-genutils
4225 (package
4226 (name "python-ipython-genutils")
4227 (version "0.1.0")
4228 (source
4229 (origin
4230 (method url-fetch)
4231 (uri (string-append "https://pypi.python.org/packages/source/i/"
4232 "ipython_genutils/ipython_genutils-"
4233 version ".tar.gz"))
4234 (sha256
4235 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4236 (build-system python-build-system)
4237 (arguments `(#:tests? #f)) ; no tests
4238 (home-page "http://ipython.org")
4239 (synopsis "Vestigial utilities from IPython")
4240 (description
4241 "This package provides retired utilities from IPython.")
4242 (license bsd-3)))
4243
4244(define-public python2-ipython-genutils
4245 (package-with-python2 python-ipython-genutils))
4246
2b10eb48
RW
4247(define-public python-traitlets
4248 (package
4249 (name "python-traitlets")
cc0c4fde 4250 (version "4.1.0")
2b10eb48
RW
4251 (source
4252 (origin
4253 (method url-fetch)
cc0c4fde 4254 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4255 (sha256
4256 (base32
cc0c4fde 4257 "0nxgj8jxlm1kqf8cx2x7vjid05zdgbxpqhjbdl46r8njlpgkh3j4"))))
2b10eb48
RW
4258 (build-system python-build-system)
4259 (arguments
4260 `(#:phases
4261 (modify-phases %standard-phases
4262 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4263 (propagated-inputs
4264 `(("python-ipython-genutils" ,python-ipython-genutils)
4265 ("python-decorator" ,python-decorator)))
4266 (native-inputs
cc0c4fde
EF
4267 `(("python-mock" ,python-mock)
4268 ("python-nose" ,python-nose)))
2b10eb48
RW
4269 (home-page "http://ipython.org")
4270 (synopsis "Configuration system for Python applications")
4271 (description
4272 "Traitlets is a framework that lets Python classes have attributes with
4273type checking, dynamically calculated default values, and ‘on change’
4274callbacks. The package also includes a mechanism to use traitlets for
4275configuration, loading values from files or from command line arguments. This
4276is a distinct layer on top of traitlets, so you can use traitlets in your code
4277without using the configuration machinery.")
4278 (license bsd-3)))
4279
4280(define-public python2-traitlets
4281 (package-with-python2 python-traitlets))
4282
ae1ab9fe
FB
4283(define-public python-ipython
4284 (package
4285 (name "python-ipython")
3a0b1b9a 4286 (version "3.2.1")
ae1ab9fe
FB
4287 (source
4288 (origin
fceac880 4289 (method url-fetch)
fc1adab1 4290 (patches (search-patches "python-ipython-inputhook-ctype.patch"))
fceac880
FB
4291 (uri (string-append "https://pypi.python.org/packages/source/i/"
4292 "ipython/ipython-" version ".tar.gz"))
4293 (sha256
4294 (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9"))))
ae1ab9fe
FB
4295 (build-system python-build-system)
4296 (outputs '("out" "doc"))
3a0b1b9a
FB
4297 (propagated-inputs
4298 `(("python-pyzmq" ,python-pyzmq)
4299 ("python-terminado" ,python-terminado)))
ae1ab9fe
FB
4300 (inputs
4301 `(("readline" ,readline)
3a0b1b9a 4302 ("which" ,which)
ae1ab9fe 4303 ("python-matplotlib" ,python-matplotlib)
5d26e542 4304 ("python-numpy" ,python-numpy)
ae1ab9fe 4305 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4306 ("python-jinja2" ,python-jinja2)
4307 ("python-mistune" ,python-mistune)
4308 ("python-jsonschema" ,python-jsonschema)
4309 ("python-pygments" ,python-pygments)
4310 ("python-requests" ,python-requests) ;; for tests
ae1ab9fe
FB
4311 ("python-nose" ,python-nose)))
4312 (native-inputs
4313 `(("pkg-config" ,pkg-config)
4314 ("python-sphinx" ,python-sphinx)
4315 ("texlive" ,texlive)
4316 ("texinfo" ,texinfo)
4317 ("python-setuptools" ,python-setuptools)))
4318 (arguments
89b5c60e 4319 `(#:phases
3a0b1b9a
FB
4320 (modify-phases %standard-phases
4321 (add-after
4322 'install 'install-doc
4323 (lambda* (#:key inputs outputs #:allow-other-keys)
4324 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4325 (doc (string-append data "/doc/" ,name "-" ,version))
4326 (html (string-append doc "/html"))
4327 (man1 (string-append data "/man/man1"))
4328 (info (string-append data "/info"))
4329 (examples (string-append doc "/examples")))
afd3d931 4330 (setenv "LANG" "en_US.utf8")
3a0b1b9a
FB
4331 (with-directory-excursion "docs"
4332 ;; FIXME: html and pdf fail to build
4333 ;; (system* "make" "html")
4334 ;; (system* "make" "pdf" "PAPER=a4")
4335 (system* "make" "info"))
4336 (copy-recursively "docs/man" man1)
4337 (copy-recursively "examples" examples)
4338 ;; (copy-recursively "docs/build/html" html)
4339 ;; (copy-file "docs/build/latex/ipython.pdf"
4340 ;; (string-append doc "/ipython.pdf"))
4341 (mkdir-p info)
4342 (copy-file "docs/build/texinfo/ipython.info"
4343 (string-append info "/ipython.info"))
4344 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4345 ;; Tests can only be run after the library has been installed and not
4346 ;; within the source directory.
4347 (delete 'check)
4348 (add-after
4349 'install 'check
4350 (lambda* (#:key outputs tests? #:allow-other-keys)
4351 (if tests?
4352 (with-directory-excursion "/tmp"
4353 (setenv "HOME" "/tmp/") ;; required by a test
4354 (zero? (system* (string-append (assoc-ref outputs "out")
4355 "/bin/iptest"))))
4356 #t)))
4357 (add-before
4358 'install 'fix-tests
4359 (lambda* (#:key inputs #:allow-other-keys)
4360 (substitute* "./IPython/utils/_process_posix.py"
4361 (("/usr/bin/env', 'which") (which "which")))
4362 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4363 (("#!/usr/bin/env python")
4364 (string-append "#!" (which "python"))))
4365 ;; Disable 1 failing test
4366 (substitute* "./IPython/core/tests/test_magic.py"
4367 (("def test_dirops\\(\\):" all)
4368 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4369 (home-page "http://ipython.org")
4370 (synopsis "IPython is a tool for interactive computing in Python")
4371 (description
4372 "IPython provides a rich architecture for interactive computing with:
4373Powerful interactive shells, a browser-based notebook, support for interactive
4374data visualization, embeddable interpreters and tools for parallel
4375computing.")
4376 (license bsd-3)))
4377
4378(define-public python2-ipython
4379 (let ((ipython (package-with-python2 python-ipython)))
3a0b1b9a
FB
4380 (package
4381 (inherit ipython)
4382 ;; FIXME: some tests are failing
4383 (arguments
4384 `(#:tests? #f ,@(package-arguments ipython)))
ae1ab9fe 4385 ;; Make sure we use custom python2-NAME packages.
3a0b1b9a 4386 ;; FIXME: add pyreadline once available.
667d90df
RW
4387 (propagated-inputs
4388 `(("python2-terminado" ,python2-terminado)
4389 ,@(alist-delete "python-terminado"
4390 (package-propagated-inputs ipython))))
89b5c60e 4391 (inputs
264ae686
EF
4392 `(("python2-jsonschema" ,python2-jsonschema)
4393 ("python2-mock" ,python2-mock)
3a0b1b9a 4394 ("python2-matplotlib" ,python2-matplotlib)
5587253a 4395 ("python2-numpy" ,python2-numpy)
264ae686 4396 ("python2-requests" ,python2-requests)
5587253a 4397 ,@(fold alist-delete (package-inputs ipython)
264ae686 4398 '("python-jsonschema" "python-matplotlib" "python-numpy" "python-requests")))))))
03411993
AE
4399
4400(define-public python-isodate
4401 (package
4402 (name "python-isodate")
b6785c2e 4403 (version "0.5.4")
03411993
AE
4404 (source
4405 (origin
4406 (method url-fetch)
b6785c2e 4407 (uri (pypi-uri "isodate" version))
03411993
AE
4408 (sha256
4409 (base32
b6785c2e 4410 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993
AE
4411 (build-system python-build-system)
4412 (inputs
4413 `(("python-setuptools" ,python-setuptools)))
4414 (home-page
4415 "http://cheeseshop.python.org/pypi/isodate")
4416 (synopsis
4417 "Python date parser and formatter")
4418 (description
4419 "Python-isodate is a python module for parsing and formatting
4420ISO 8601 dates, time and duration.")
4421 (license bsd-3)))
4422
4423(define-public python2-isodate
4424 (package-with-python2 python-isodate))
673ab897
AE
4425
4426(define-public python-html5lib
4427 (package
4428 (name "python-html5lib")
fee04c19 4429 (version "1.0b8")
673ab897
AE
4430 (source
4431 (origin
4432 (method url-fetch)
fee04c19 4433 (uri (pypi-uri "html5lib" version))
673ab897
AE
4434 (sha256
4435 (base32
fee04c19 4436 "1lknq5j3nh11xrl268ks76zaj0gyzh34v94n5vbf6dk8llzxdx0q"))))
673ab897 4437 (build-system python-build-system)
3dd75476
AE
4438 (propagated-inputs
4439 `(("python-six" ,python-six))) ; required to "import html5lib"
673ab897
AE
4440 (inputs
4441 `(("python-setuptools" ,python-setuptools)))
4442 (arguments
4443 `(#:test-target "check"))
4444 (home-page
4445 "https://github.com/html5lib/html5lib-python")
4446 (synopsis
4447 "Python HTML parser based on the WHATWG HTML specifcation")
4448 (description
4449 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4450and written in Python.")
bd3fa666 4451 (license license:expat)))
673ab897
AE
4452
4453(define-public python2-html5lib
4454 (package-with-python2 python-html5lib))
e99f4211
MW
4455
4456(define-public python-urwid
4457 (package
4458 (name "python-urwid")
4459 (version "1.3.0")
4460 (source
4461 (origin
4462 (method url-fetch)
b97c1bfd 4463 (uri (pypi-uri "urwid" version))
e99f4211
MW
4464 (sha256
4465 (base32
4466 "18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
4467 (build-system python-build-system)
b97c1bfd
LF
4468 (arguments
4469 `(#:phases
4470 (modify-phases %standard-phases
4471 ;; Disable failing test. Bug filed upstream:
4472 ;; https://github.com/wardi/urwid/issues/164
4473 ;; TODO: check again for python-urwid > 1.3.0 or python > 3.4.3.
4474 (add-after 'unpack 'disable-failing-test
4475 (lambda _
4476 (substitute* "urwid/tests/test_event_loops.py"
4477 (("test_remove_watch_file")
4478 "disable_remove_watch_file")))))))
e99f4211
MW
4479 (native-inputs `(("python-setuptools" ,python-setuptools)))
4480 (home-page "http://urwid.org")
4481 (synopsis "Console user interface library for Python")
4482 (description
4483 "Urwid is a curses-based UI/widget library for Python. It includes many
4484features useful for text console applications.")
4485 (license lgpl2.1+)))
4486
4487(define-public python2-urwid
4488 (package-with-python2 python-urwid))
d95a56c6 4489
47d0b292
TS
4490(define-public python-urwidtrees
4491 (package
4492 (name "python-urwidtrees")
4493 (version "1.0.1.1")
4494 (source
4495 (origin
4496 (method url-fetch)
4497 (uri (pypi-uri "urwidtrees" version))
4498 (sha256
4499 (base32
4500 "1zcvy12s7h3fazf33d6y7b4v19p8hg95xqwhqlmw6jz9fq76v9h8"))))
4501 (build-system python-build-system)
4502 (arguments
4503 '(#:tests? #f)) ; no tests
4504 (inputs `(("python-urwid" ,python-urwid)))
4505 (home-page "https://github.com/pazz/urwidtrees")
4506 (synopsis "Tree widgets for urwid")
4507 (description "Urwidtrees is a Widget Container API for the @code{urwid}
4508toolkit. Use it to build trees of widgets.")
4509 (license gpl3+)))
4510
4511(define-public python2-urwidtrees
4512 (package-with-python2 python-urwidtrees))
4513
d95a56c6
PAR
4514(define-public python-dbus
4515 (package
4516 (name "python-dbus")
4517 (version "1.2.0")
4518 (source
4519 (origin
4520 (method url-fetch)
4521 (uri (string-append
5cc3096c 4522 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
4523 version ".tar.gz"))
4524 (sha256
4525 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
4526 (build-system gnu-build-system)
6717c879
SB
4527 (arguments
4528 '(#:phases
4529 (modify-phases %standard-phases
4530 (add-before
4531 'check 'pre-check
4532 (lambda _
4533 ;; XXX: For the missing '/etc/machine-id'.
4534 (substitute* "test/run-test.sh"
4535 (("DBUS_FATAL_WARNINGS=1")
4536 "DBUS_FATAL_WARNINGS=0"))
4537 #t)))))
d95a56c6
PAR
4538 (native-inputs
4539 `(("pkg-config" ,pkg-config)))
4540 (inputs
4541 `(("python" ,python)
2e88d113 4542 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
4543 (synopsis "Python bindings for D-bus")
4544 (description "python-dbus provides bindings for libdbus, the reference
4545implementation of D-Bus.")
4546 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 4547 (license license:expat)))
b52af02b
MW
4548
4549(define-public python2-dbus
4550 (package (inherit python-dbus)
4551 (name "python2-dbus")
4552 (inputs `(("python" ,python-2)
4553 ,@(alist-delete "python"
4554 (package-inputs python-dbus)
4555 equal?)))
4556 ;; FIXME: on Python 2, the test_utf8 fails with:
4557 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
4558 (arguments `(#:tests? #f))))
a6ac8332
AE
4559
4560(define-public python-apsw
4561 (package
4562 (name "python-apsw")
917708c2 4563 (version "3.9.2-r1")
a6ac8332
AE
4564 (source
4565 (origin
4566 (method url-fetch)
917708c2 4567 (uri (pypi-uri "apsw" version))
a6ac8332
AE
4568 (sha256
4569 (base32
917708c2 4570 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
4571 (build-system python-build-system)
4572 (inputs
4573 `(("python-setuptools" ,python-setuptools)
4574 ("sqlite" ,sqlite)))
4575 (arguments
4576 `(#:phases
4577 ;; swap check and install phases
4578 (alist-cons-after
4579 'install 'check
4580 (assoc-ref %standard-phases 'check)
4581 (alist-delete
4582 'check
4583 %standard-phases))))
4584 (home-page "https://github.com/rogerbinns/apsw/")
4585 (synopsis "Another Python SQLite Wrapper")
4586 (description "APSW is a Python wrapper for the SQLite
4587embedded relational database engine. In contrast to other wrappers such as
4588pysqlite it focuses on being a minimal layer over SQLite attempting just to
4589translate the complete SQLite API into Python.")
abde5f37 4590 (license license:zlib)))
a6ac8332
AE
4591
4592(define-public python2-apsw
4593 (package-with-python2 python-apsw))
26b307e2
AE
4594
4595(define-public python-lxml
4596 (package
4597 (name "python-lxml")
d58a3203 4598 (version "3.6.0")
26b307e2
AE
4599 (source
4600 (origin
4601 (method url-fetch)
97bbc480 4602 (uri (pypi-uri "lxml" version))
26b307e2 4603 (sha256
d58a3203
EF
4604 (base32
4605 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
4606 (build-system python-build-system)
4607 (inputs
4608 `(("libxml2" ,libxml2)
4609 ("libxslt" ,libxslt)
4610 ("python-setuptools" ,python-setuptools)))
4611 (home-page "http://lxml.de/")
4612 (synopsis
4613 "Python XML processing library")
4614 (description
4615 "The lxml XML toolkit is a Pythonic binding for the C libraries
4616libxml2 and libxslt.")
4617 (license bsd-3))) ; and a few more, see LICENSES.txt
4618
4619(define-public python2-lxml
4620 (package-with-python2 python-lxml))
4ed20663 4621
b32a1e47
CAW
4622;; beautifulsoup4 has a totally different namespace than 3.x,
4623;; and pypi seems to put it under its own name, so I guess we should too
4624(define-public python-beautifulsoup4
4625 (package
4626 (name "python-beautifulsoup4")
4627 (version "4.4.1")
4628 (source
4629 (origin
4630 (method url-fetch)
4631 (uri (pypi-uri "beautifulsoup4" version))
4632 (sha256
4633 (base32
4634 "1d36lc4pfkvl74fmzdib2nqnvknm0jddgf2n9yd7im150qyh3m47"))))
4635 (build-system python-build-system)
4636 (home-page
4637 "http://www.crummy.com/software/BeautifulSoup/bs4/")
4638 (synopsis
4639 "Python screen-scraping library")
4640 (description
4641 "Beautiful Soup is a Python library designed for rapidly setting up
4642screen-scraping projects. It offers Pythonic idioms for navigating,
4643searching, and modifying a parse tree, providing a toolkit for
4644dissecting a document and extracting what you need. It automatically
4645converts incoming documents to Unicode and outgoing documents to UTF-8.")
4646 (license license:expat)
4647 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
4648
4649(define-public python2-beautifulsoup4
4650 (package
4651 (inherit (package-with-python2
4652 (strip-python2-variant python-beautifulsoup4)))
4653 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
4654
092e86f5
AE
4655(define-public python2-cssutils
4656 (package
4657 (name "python2-cssutils")
58d1d816 4658 (version "1.0.1")
092e86f5
AE
4659 (source
4660 (origin
4661 (method url-fetch)
58d1d816 4662 (uri (pypi-uri "cssutils" version))
092e86f5 4663 (sha256
58d1d816
EF
4664 (base32
4665 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
4666 (build-system python-build-system)
4667 (native-inputs
4668 `(("python2-mock" ,python2-mock) ; for the tests
4669 ("unzip" ,unzip))) ; for unpacking the source
4670 (inputs
4671 `(("python2-setuptools" ,python2-setuptools)))
4672 (arguments
4673 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
4674 #:tests? #f ; The tests apparently download an external URL.
da6dd842 4675 ))
092e86f5
AE
4676 (home-page "http://cthedot.de/cssutils/")
4677 (synopsis
4678 "CSS Cascading Style Sheets library for Python")
4679 (description
4680 "Cssutils is a Python package for parsing and building CSS
4681Cascading Style Sheets. Currently it provides a DOM only and no rendering
4682options.")
4683 (license lgpl3+)))
880ff77c
AE
4684
4685(define-public python-cssselect
4686 (package
4687 (name "python-cssselect")
d5ccd9ab 4688 (version "0.9.2")
880ff77c
AE
4689 (source
4690 (origin
4691 (method url-fetch)
d5ccd9ab 4692 (uri (pypi-uri "cssselect" version))
880ff77c 4693 (sha256
d5ccd9ab
EF
4694 (base32
4695 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c
AE
4696 (build-system python-build-system)
4697 (inputs
4698 `(("python-setuptools" ,python-setuptools)))
4699 (arguments
4700 ;; tests fail with message
4701 ;; AttributeError: 'module' object has no attribute 'tests'
4702 `(#:tests? #f))
4703 (home-page
4704 "https://pythonhosted.org/cssselect/")
4705 (synopsis
4706 "CSS3 selector parser and translator to XPath 1.0")
4707 (description
4708 "Cssselect ia a Python module that parses CSS3 Selectors and translates
4709them to XPath 1.0 expressions. Such expressions can be used in lxml or
4710another XPath engine to find the matching elements in an XML or HTML document.")
4711 (license bsd-3)))
4712
4713(define-public python2-cssselect
4714 (package-with-python2 python-cssselect))
60357f99
AE
4715
4716(define-public python-netifaces
4717 (package
4718 (name "python-netifaces")
4719 (version "0.10.4")
4720 (source
4721 (origin
4722 (method url-fetch)
4723 (uri (string-append
4724 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
4725 version
4726 ".tar.gz"))
4727 (sha256
4728 (base32
4729 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
4730 (build-system python-build-system)
4731 (inputs
4732 `(("python-setuptools" ,python-setuptools)))
4733 (home-page
4734 "https://bitbucket.org/al45tair/netifaces")
4735 (synopsis
4736 "Python module for portable network interface information")
4737 (description
4738 "Netifaces is a Python module providing information on network
4739interfaces in an easy and portable manner.")
4740 (license license:expat)))
4741
4742(define-public python2-netifaces
4743 (package-with-python2 python-netifaces))
92cb152b 4744
32f77c04
RW
4745(define-public python-networkx
4746 (package
4747 (name "python-networkx")
a4d9609c 4748 (version "1.11")
32f77c04
RW
4749 (source
4750 (origin
4751 (method url-fetch)
a4d9609c 4752 (uri (pypi-uri "networkx" version))
32f77c04 4753 (sha256
a4d9609c 4754 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
4755 (build-system python-build-system)
4756 ;; python-decorator is needed at runtime
4757 (propagated-inputs
4758 `(("python-decorator" ,python-decorator)))
4759 (native-inputs
4760 `(("python-setuptools" ,python-setuptools)
4761 ("python-nose" ,python-nose)))
4762 (home-page "http://networkx.github.io/")
4763 (synopsis "Python module for creating and manipulating graphs and networks")
4764 (description
4765 "NetworkX is a Python package for the creation, manipulation, and study
4766of the structure, dynamics, and functions of complex networks.")
4767 (license bsd-3)))
4768
4769(define-public python2-networkx
4770 (package-with-python2 python-networkx))
4771
92cb152b
RW
4772(define-public snakemake
4773 (package
4774 (name "snakemake")
4775 (version "3.2.1")
4776 (source
4777 (origin
4778 (method url-fetch)
4779 (uri (string-append
4780 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
4781 version ".tar.gz"))
4782 (sha256
4783 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
4784 (build-system python-build-system)
4785 (inputs `(("python-setuptools" ,python-setuptools)))
4786 (home-page "https://bitbucket.org/johanneskoester/snakemake")
4787 (synopsis "Python-based execution environment for make-like workflows")
4788 (description
4789 "Snakemake aims to reduce the complexity of creating workflows by
4790providing a clean and modern domain specific specification language (DSL) in
4791Python style, together with a fast and comfortable execution environment.")
4792 (license license:expat)))
a1920bc9 4793
35de1fbd
RW
4794(define-public python-seaborn
4795 (package
4796 (name "python-seaborn")
fc899d4f 4797 (version "0.7.0")
35de1fbd
RW
4798 (source
4799 (origin
4800 (method url-fetch)
fc899d4f 4801 (uri (pypi-uri "seaborn" version))
35de1fbd 4802 (sha256
fc899d4f 4803 (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
35de1fbd
RW
4804 (build-system python-build-system)
4805 (propagated-inputs
4806 `(("python-pandas" ,python-pandas)
4807 ("python-matplotlib" ,python-matplotlib)
4808 ("python-scipy" ,python-scipy)))
35de1fbd
RW
4809 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
4810 (synopsis "Statistical data visualization")
4811 (description
4812 "Seaborn is a library for making attractive and informative statistical
4813graphics in Python. It is built on top of matplotlib and tightly integrated
4814with the PyData stack, including support for numpy and pandas data structures
4815and statistical routines from scipy and statsmodels.")
fc899d4f
EF
4816 (license bsd-3)
4817 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
4818
4819(define-public python2-seaborn
fc899d4f
EF
4820 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
4821 (package
4822 (inherit base)
4823 (propagated-inputs `(("python2-pytz" ,python2-pytz)
4824 ,@(package-propagated-inputs base)))
4825 (native-inputs `(("python2-setuptools" ,python2-setuptools)
4826 ,@(package-native-inputs base))))))
35de1fbd 4827
90fc547f
RW
4828(define-public python-sympy
4829 (package
4830 (name "python-sympy")
4831 (version "0.7.6")
4832 (source
4833 (origin
4834 (method url-fetch)
4835 (uri (string-append
4836 "https://github.com/sympy/sympy/releases/download/sympy-"
4837 version "/sympy-" version ".tar.gz"))
4838 (sha256
4839 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
4840 (build-system python-build-system)
4841 (native-inputs
4842 `(("python-setuptools" ,python-setuptools)))
4843 (home-page "http://www.sympy.org/")
4844 (synopsis "Python library for symbolic mathematics")
4845 (description
4846 "SymPy is a Python library for symbolic mathematics. It aims to become a
4847full-featured computer algebra system (CAS) while keeping the code as simple
4848as possible in order to be comprehensible and easily extensible.")
4849 (license bsd-3)))
4850
4851(define-public python2-sympy
4852 (package-with-python2 python-sympy))
4853
a1920bc9
FB
4854(define-public python-testlib
4855 (package
4856 (name "python-testlib")
4857 (version "0.6.5")
4858 (source
4859 (origin
4860 (method url-fetch)
4861 (uri (string-append
4862 "https://pypi.python.org/packages/source/t/testlib/testlib-"
4863 version ".zip"))
4864 (sha256
4865 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
4866 (build-system python-build-system)
4867 (inputs
4868 `(("python-setuptools" ,python-setuptools)))
4869 (native-inputs
4870 `(("unzip" ,unzip)))
4871 (arguments
4872 `(#:phases
4873 (alist-replace
4874 'unpack
4875 (lambda* (#:key inputs outputs #:allow-other-keys)
4876 (let ((unzip (string-append (assoc-ref inputs "unzip")
4877 "/bin/unzip"))
4878 (source (assoc-ref inputs "source")))
4879 (and (zero? (system* unzip source))
4880 (chdir (string-append "testlib-" ,version)))))
4881 %standard-phases)))
4882 (synopsis "Python micro test suite harness")
4883 (description "A micro unittest suite harness for Python.")
4884 (home-page "https://github.com/trentm/testlib")
1cb9c006 4885 (license license:expat)))
a1920bc9
FB
4886
4887(define-public python2-testlib
4888 (package-with-python2 python-testlib))
db62afa5
LC
4889
4890(define-public python2-xlib
4891 (package
4892 (name "python2-xlib")
4893 (version "0.14")
4894 (source (origin
4895 (method url-fetch)
4896 (uri (string-append "mirror://sourceforge/python-xlib/"
4897 "python-xlib-" version ".tar.gz"))
4898 (sha256
4899 (base32
4900 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
4901 (build-system python-build-system)
4902 (arguments
4903 `(#:python ,python-2 ;Python 2 only
4904 #:tests? #f)) ;no tests
4905 (inputs
4906 `(("python-setuptools" ,python-setuptools)))
4907 (home-page "http://python-xlib.sourceforge.net/")
4908 (synopsis "Python X11 client library")
4909 (description
4910 "The Python X Library is intended to be a fully functional X client
4911library for Python programs. It is useful to implement low-level X clients.
4912It is written entirely in Python.")
4913 (license gpl2+)))
0234ca06
DT
4914
4915(define-public python-singledispatch
4916 (package
4917 (name "python-singledispatch")
4918 (version "3.4.0.3")
4919 (source
4920 (origin
4921 (method url-fetch)
bdb67d84 4922 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
4923 (sha256
4924 (base32
4925 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
4926 (build-system python-build-system)
4927 (native-inputs
4928 `(("python-setuptools" ,python-setuptools)))
bdb67d84 4929 (inputs
0234ca06
DT
4930 `(("python-six" ,python-six)))
4931 (home-page
4932 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
4933 (synopsis "Backport of singledispatch feature from Python 3.4")
4934 (description
4935 "This library brings functools.singledispatch from Python 3.4 to Python
49362.6-3.3.")
4937 (license license:expat)))
4938
4939(define-public python2-singledispatch
4940 (package-with-python2 python-singledispatch))
feaae484 4941
310d218f
RW
4942(define-public python-tornado
4943 (package
4944 (name "python-tornado")
a724924b 4945 (version "4.3")
310d218f
RW
4946 (source
4947 (origin
4948 (method url-fetch)
a724924b 4949 (uri (pypi-uri "tornado" version))
310d218f 4950 (sha256
a724924b 4951 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 4952 (build-system python-build-system)
310d218f 4953 (native-inputs
b455439b
EF
4954 `(("python-certifi" ,python-certifi)))
4955 (inputs
4956 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 4957 (home-page "http://www.tornadoweb.org/")
310d218f
RW
4958 (synopsis "Python web framework and asynchronous networking library")
4959 (description
4960 "Tornado is a Python web framework and asynchronous networking library,
4961originally developed at FriendFeed. By using non-blocking network I/O,
4962Tornado can scale to tens of thousands of open connections, making it ideal
4963for long polling, WebSockets, and other applications that require a long-lived
4964connection to each user.")
b455439b
EF
4965 (license asl2.0)
4966 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
4967
4968(define-public python2-tornado
b455439b 4969 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f
RW
4970 (package (inherit tornado)
4971 (inputs
4972 `(("python2-backport-ssl-match-hostname"
4973 ,python2-backport-ssl-match-hostname)
b455439b
EF
4974 ("python2-singledispatch" ,python2-singledispatch)
4975 ,@(package-inputs tornado)))
4976 (native-inputs
4977 `(("python2-setuptools" ,python2-setuptools)
4978 ,@(package-native-inputs tornado))))))
310d218f 4979
6b59fc10
EF
4980;; the python- version can be removed with python-3.5
4981(define-public python-backports-abc
4982 (package
4983 (name "python-backports-abc")
4984 (version "0.4")
4985 (source
4986 (origin
4987 (method url-fetch)
4988 (uri (pypi-uri "backports_abc" version))
4989 (sha256
4990 (base32
4991 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
4992 (build-system python-build-system)
4993 (inputs
4994 `(("python-setuptools" ,python-setuptools)))
4995 (home-page "https://github.com/cython/backports_abc")
4996 (synopsis "Backport of additions to the 'collections.abc' module.")
4997 (description
4998 "Python-backports-abc provides a backport of additions to the
4999'collections.abc' module in Python-3.5.")
5000 (license psfl)))
5001
5002(define-public python2-backports-abc
5003 (package-with-python2 python-backports-abc))
5004
feaae484
SB
5005(define-public python-waf
5006 (package
5007 (name "python-waf")
5008 (version "1.8.8")
5009 (source (origin
5010 (method url-fetch)
5011 (uri (string-append "https://waf.io/"
5012 "waf-" version ".tar.bz2"))
5013 (sha256
5014 (base32
5015 "0b5q307fgn6a5d8yjia2d1l4bk1q3ilvc0w8k4isfrrx2gbcw8wn"))))
5016 (build-system python-build-system)
5017 (arguments
5018 '(#:phases
5019 (modify-phases %standard-phases
5020 (replace 'build
5021 (lambda _
5022 (zero? (begin
5023 (system* "python" "waf-light" "configure")
5024 (system* "python" "waf-light" "build")))))
5025 (replace 'check
5026 (lambda _
5027 (zero? (system* "python" "waf" "--version"))))
5028 (replace 'install
5029 (lambda _
5030 (copy-file "waf" %output))))))
5031 (home-page "https://waf.io/")
5032 (synopsis "Python-based build system")
5033 (description
5034 "Waf is a Python-based framework for configuring, compiling and installing
5035applications.")
5036 (license bsd-3)))
5037
5038(define-public python2-waf
5039 (package-with-python2 python-waf))
45203542
RW
5040
5041(define-public python-pyzmq
5042 (package
5043 (name "python-pyzmq")
3655ee76 5044 (version "15.1.0")
45203542
RW
5045 (source
5046 (origin
5047 (method url-fetch)
3655ee76 5048 (uri (pypi-uri "pyzmq" version))
45203542 5049 (sha256
3655ee76 5050 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5051 (build-system python-build-system)
5052 (arguments
5053 `(#:configure-flags
5054 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5055 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5056 ;; --inplace' for 'python setup.py test' to work.
5057 #:tests? #f))
5058 (inputs
5059 `(("zeromq" ,zeromq)))
5060 (native-inputs
5061 `(("pkg-config" ,pkg-config)
5062 ("python-nose" ,python-nose)
5063 ("python-setuptools" ,python-setuptools)))
5064 (home-page "http://github.com/zeromq/pyzmq")
5065 (synopsis "Python bindings for 0MQ")
5066 (description
5067 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
5068 (license bsd-4)))
5069
5070(define-public python2-pyzmq
5071 (package-with-python2 python-pyzmq))
d889e6c4
CR
5072
5073(define-public python-pep8
5074 (package
5075 (name "python-pep8")
db251311 5076 (version "1.7.0")
d889e6c4
CR
5077 (source
5078 (origin
5079 (method url-fetch)
db251311 5080 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5081 (sha256
5082 (base32
db251311 5083 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4
CR
5084 (build-system python-build-system)
5085 (inputs
5086 `(("python-setuptools" ,python-setuptools)))
5087 (home-page "http://pep8.readthedocs.org/")
5088 (synopsis "Python style guide checker")
5089 (description
5090 "This tools checks Python code against some of the style conventions in
5091PEP 8.")
5092 (license license:expat)))
5093
5094(define-public python2-pep8
5095 (package-with-python2 python-pep8))
e31d7f44
CR
5096
5097(define-public python-pyflakes
5098 (package
5099 (name "python-pyflakes")
2abc3972 5100 (version "1.0.0")
e31d7f44
CR
5101 (source
5102 (origin
5103 (method url-fetch)
2abc3972 5104 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5105 (sha256
5106 (base32
2abc3972 5107 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44
CR
5108 (build-system python-build-system)
5109 (inputs
5110 `(("python-setuptools" ,python-setuptools)))
5111 (home-page
5112 "https://github.com/pyflakes/pyflakes")
5113 (synopsis "Passive checker of Python programs")
5114 (description
5115 "Pyflakes statically checks Python source code for common errors.")
5116 (license license:expat)))
a59e017c 5117
7261d9eb
CR
5118(define-public python2-pyflakes
5119 (package-with-python2 python-pyflakes))
5120
a59e017c
CR
5121(define-public python-mccabe
5122 (package
5123 (name "python-mccabe")
c6ebd40d 5124 (version "0.4.0")
a59e017c
CR
5125 (source
5126 (origin
5127 (method url-fetch)
c6ebd40d 5128 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5129 (sha256
5130 (base32
c6ebd40d 5131 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c
CR
5132 (build-system python-build-system)
5133 (inputs
c6ebd40d
EF
5134 `(("python-pytest" ,python-pytest)
5135 ("python-pytest-runner" ,python-pytest-runner)
5136 ("python-setuptools" ,python-setuptools)))
a59e017c
CR
5137 (home-page "https://github.com/flintwork/mccabe")
5138 (synopsis "McCabe checker, plugin for flake8")
5139 (description
5140 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5141complexity of Python source code.")
7362371d 5142 (license license:expat)))
a59e017c
CR
5143
5144(define-public python2-mccabe
5145 (package-with-python2 python-mccabe))
e8df8f47 5146
7477fbb1
CR
5147(define-public python-mccabe-0.2.1
5148 (package (inherit python-mccabe)
5149 (version "0.2.1")
5150 (source
5151 (origin
5152 (method url-fetch)
5153 (uri (pypi-uri "mccabe" version))
5154 (sha256
5155 (base32
c6ebd40d 5156 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))
b3546174 5157 (inputs `(("python-setuptools" ,python-setuptools)))))
7477fbb1
CR
5158
5159(define-public python2-mccabe-0.2.1
5160 (package-with-python2 python-mccabe-0.2.1))
5161
e8df8f47
CR
5162;; Flake8 2.4.1 requires an older version of pep8.
5163;; This should be removed ASAP.
5164(define-public python-pep8-1.5.7
5165 (package (inherit python-pep8)
5166 (version "1.5.7")
5167 (source
5168 (origin
5169 (method url-fetch)
5170 (uri (string-append
5171 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5172 version
5173 ".tar.gz"))
5174 (sha256
5175 (base32
5176 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5177
5178(define-public python2-pep8-1.5.7
5179 (package-with-python2 python-pep8-1.5.7))
5180
5181;; Flake8 2.4.1 requires an older version of pyflakes.
5182;; This should be removed ASAP.
5183(define-public python-pyflakes-0.8.1
5184 (package (inherit python-pyflakes)
5185 (version "0.8.1")
5186 (source
5187 (origin
5188 (method url-fetch)
5189 (uri (string-append
5190 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5191 version
5192 ".tar.gz"))
5193 (sha256
5194 (base32
5195 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5196
5197(define-public python2-pyflakes-0.8.1
7261d9eb 5198 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5199
5200(define-public python-flake8
5201 (package
5202 (name "python-flake8")
43789136 5203 (version "2.5.4")
e8df8f47
CR
5204 (source
5205 (origin
5206 (method url-fetch)
1b995533 5207 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5208 (sha256
5209 (base32
43789136 5210 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))))
e8df8f47
CR
5211 (build-system python-build-system)
5212 (inputs
5213 `(("python-setuptools" ,python-setuptools)
43789136
EF
5214 ("python-pep8" ,python-pep8)
5215 ("python-pyflakes" ,python-pyflakes)
e8df8f47
CR
5216 ("python-mccabe" ,python-mccabe)
5217 ("python-mock" ,python-mock)
5218 ("python-nose" ,python-nose)))
5219 (home-page "https://gitlab.com/pycqa/flake8")
5220 (synopsis
5221 "The modular source code checker: pep8, pyflakes and co")
5222 (description
5223 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5224 (license license:expat)))
5225
5226(define-public python2-flake8
5227 (package-with-python2 python-flake8))
61b9ac53 5228
abf21efc
CR
5229;; This will only be needed by the python-hacking package and will not be
5230;; necessary once python-hacking > 0.10.2 is released.
5231(define-public python-flake8-2.2.4
5232 (package (inherit python-flake8)
5233 (inputs
5234 `(("python-setuptools" ,python-setuptools)
5235 ("python-pep8" ,python-pep8-1.5.7)
5236 ("python-pyflakes" ,python-pyflakes-0.8.1)
5237 ("python-mccabe" ,python-mccabe-0.2.1)
5238 ("python-mock" ,python-mock)
5239 ("python-nose" ,python-nose)))
5240 (version "2.2.4")
5241 (source
5242 (origin
5243 (method url-fetch)
5244 (uri (pypi-uri "flake8" version))
5245 (sha256
5246 (base32
5247 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
5248
5249(define-public python2-flake8-2.2.4
5250 (package-with-python2 python-flake8-2.2.4))
5251
61b9ac53
FB
5252(define-public python-mistune
5253 (package
5254 (name "python-mistune")
5255 (version "0.7")
5256 (source
5257 (origin
5258 (method url-fetch)
5259 (uri (string-append
5260 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5261 version
5262 ".tar.gz"))
5263 (sha256
5264 (base32
5265 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5266 (build-system python-build-system)
5267 (inputs
5268 `(("python-setuptools" ,python-setuptools)
5269 ("python-nose" ,python-nose)
5270 ("python-cython" ,python-cython)))
5271 (home-page "https://github.com/lepture/mistune")
5272 (synopsis "Markdown parser in pure Python")
5273 (description "This package provides a fast markdown parser in pure
5274Python.")
5275 (license bsd-3)))
5276
5277(define-public python2-mistune
5278 (package-with-python2 python-mistune))
6d992d07 5279
b9893908
EE
5280(define-public python-markdown
5281 (package
5282 (name "python-markdown")
5283 (version "2.6.5")
5284 (source
5285 (origin
5286 (method url-fetch)
5287 (uri (pypi-uri "Markdown" version))
5288 (sha256
5289 (base32
5290 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5291 (build-system python-build-system)
5292 (arguments
5293 `(#:phases
5294 (modify-phases %standard-phases
5295 (replace 'check
5296 (lambda _
5297 (zero? (system* "python" "run-tests.py")))))))
5298 (native-inputs
5299 `(("python-nose" ,python-nose)
5300 ("python-pyyaml" ,python-pyyaml)))
5301 (home-page "https://pythonhosted.org/Markdown/")
5302 (synopsis "Python implementation of Markdown")
5303 (description
5304 "This package provides a Python implementation of John Gruber's
5305Markdown. The library features international input, various Markdown
5306extensions, and several HTML output formats. A command line wrapper
5307markdown_py is also provided to convert Markdown files to HTML.")
5308 (license bsd-3)))
5309
5310(define-public python2-markdown
5311 (package-with-python2 python-markdown))
5312
6d992d07
FB
5313(define-public python-ptyprocess
5314 (package
5315 (name "python-ptyprocess")
5316 (version "0.5")
5317 (source
5318 (origin
5319 (method url-fetch)
5320 (uri (string-append
5321 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5322 version ".tar.gz"))
5323 (sha256
5324 (base32
5325 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5326 (build-system python-build-system)
5327 (inputs
5328 `(("python-setuptools" ,python-setuptools)
5329 ("python-nose" ,python-nose)))
5330 (arguments
5331 `(#:phases
5332 (modify-phases %standard-phases
5333 (replace 'check
5334 (lambda _
5335 (zero? (system* "nosetests")))))))
5336 (home-page "https://github.com/pexpect/ptyprocess")
5337 (synopsis "Run a subprocess in a pseudo terminal")
5338 (description
5339 "This package provides a Python library used to launch a subprocess in a
5340pseudo terminal (pty), and interact with both the process and its pty.")
5341 (license isc)))
5342
5343(define-public python2-ptyprocess
5344 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5345
5346(define-public python-terminado
5347 (package
5348 (name "python-terminado")
783fb0a3 5349 (version "0.6")
4aadb1df
FB
5350 (source
5351 (origin
5352 (method url-fetch)
783fb0a3 5353 (uri (pypi-uri "terminado" version))
4aadb1df
FB
5354 (sha256
5355 (base32
783fb0a3 5356 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
5357 (build-system python-build-system)
5358 (propagated-inputs
5359 `(("python-tornado" ,python-tornado)
5360 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
5361 (native-inputs
5362 `(("python-nose" ,python-nose)))
4aadb1df
FB
5363 (arguments
5364 `(#:phases
5365 (modify-phases %standard-phases
5366 (replace 'check
5367 (lambda _
5368 (zero? (system* "nosetests")))))))
5369 (home-page "https://github.com/takluyver/terminado")
5370 (synopsis "Terminals served to term.js using Tornado websockets")
5371 (description "This package provides a Tornado websocket backend for the
5372term.js Javascript terminal emulator library.")
783fb0a3
EF
5373 (license bsd-2)
5374 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
5375
5376(define-public python2-terminado
783fb0a3 5377 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 5378 (package (inherit terminado)
783fb0a3
EF
5379 (propagated-inputs
5380 `(("python2-backport-ssl-match-hostname"
5381 ,python2-backport-ssl-match-hostname)
5382 ,@(package-propagated-inputs terminado)))
5383 (native-inputs
5384 `(("python2-setuptools" ,python2-setuptools)
5385 ,@(package-native-inputs terminado))))))
5faa5ce4 5386
d582eaac
SB
5387(define-public python-fonttools
5388 (package
5389 (name "python-fonttools")
5390 (version "2.5")
5391 (source (origin
5392 (method url-fetch)
5393 (uri (string-append
5394 "https://pypi.python.org/packages/source/F/FontTools/"
5395 "fonttools-" version ".tar.gz"))
5396 (sha256
5397 (base32
5398 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5399 (build-system python-build-system)
5400 (arguments '(#:test-target "check"))
5401 (propagated-inputs
5402 ;; XXX: module not found if setuptools is not available.
5403 `(("python-setuptools" ,python-setuptools)))
5404 (home-page "http://github.com/behdad/fonttools")
5405 (synopsis "Tools to manipulate font files")
5406 (description
5407 "FontTools/TTX is a library to manipulate font files from Python. It
5408supports reading and writinfg of TrueType/OpenType fonts, reading and writing
5409of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
5410also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
5411from an XML-based format.")
5412 (license (non-copyleft "file://LICENSE.txt"
5413 "See LICENSE.txt in the distribution."))))
5414
5415(define-public python2-fonttools
5416 (package-with-python2 python-fonttools))
75710da6 5417
5faa5ce4
RW
5418(define-public python-ly
5419 (package
5420 (name "python-ly")
5135354f 5421 (version "0.9.4")
5faa5ce4
RW
5422 (source
5423 (origin
5424 (method url-fetch)
5135354f
RW
5425 (uri (string-append "https://pypi.python.org/packages/57/4f/"
5426 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
5427 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
5428 (sha256
5429 (base32
5135354f 5430 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4
RW
5431 (build-system python-build-system)
5432 (native-inputs
5433 `(("python-setuptools" ,python-setuptools)))
5434 (synopsis "Tool and library for manipulating LilyPond files")
5435 (description "This package provides a Python library to parse, manipulate
5436or create documents in LilyPond format. A command line program ly is also
5437provided that can be used to do various manipulations with LilyPond files.")
5438 (home-page "https://pypi.python.org/pypi/python-ly")
5439 (license gpl2+)))
7e7b27d9
CR
5440
5441(define-public python-appdirs
5442 (package
5443 (name "python-appdirs")
5444 (version "1.4.0")
5445 (source
5446 (origin
5447 (method url-fetch)
5448 (uri (string-append
5449 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
5450 version
5451 ".tar.gz"))
5452 (sha256
5453 (base32
5454 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
5455 (build-system python-build-system)
5456 (inputs
5457 `(("python-setuptools" ,python-setuptools)))
5458 (home-page "http://github.com/ActiveState/appdirs")
5459 (synopsis
5460 "Determine platform-specific dirs, e.g. a \"user data dir\"")
5461 (description
5462 "This module provides a portable way of finding out where user data
5463should be stored on various operating systems.")
5464 (license license:expat)))
5465
5466(define-public python2-appdirs
5467 (package-with-python2 python-appdirs))
89b2e0b0
LF
5468
5469(define-public python-llfuse
5470 (package
5471 (name "python-llfuse")
10240c7c 5472 (version "1.1")
89b2e0b0
LF
5473 (source (origin
5474 (method url-fetch)
5475 (uri (string-append
5476 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5477 "llfuse-" version ".tar.bz2"))
5478 (sha256
5479 (base32
10240c7c 5480 "1ywzbqkahrfl9kkcasxrmgilv6fybapvh6pqvimimnfh7sgxal72"))))
89b2e0b0
LF
5481 (build-system python-build-system)
5482 (inputs
5483 `(("fuse" ,fuse)
5484 ("attr" ,attr)))
5485 (native-inputs
5486 `(("pkg-config" ,pkg-config)
5487 ("python-setuptools" ,python-setuptools)))
5488 (synopsis "Python bindings for FUSE")
5489 (description
5490 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
5491 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
cd0569c4
LF
5492 (license lgpl2.0+)
5493 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
5494
5495(define-public python2-llfuse
cd0569c4
LF
5496 (package (inherit (package-with-python2
5497 (strip-python2-variant python-llfuse)))
5498 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
5499
5500;; For attic-0.16
5501(define-public python-llfuse-0.41
5502 (package (inherit python-llfuse)
229b3661 5503 (version "0.41.1")
cd0569c4
LF
5504 (source (origin
5505 (method url-fetch)
5506 (uri (string-append
5507 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5508 "llfuse-" version ".tar.bz2"))
5509 (sha256
5510 (base32
229b3661 5511 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
5512 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
5513 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
5514 (license (list license:expat lgpl2.0+))))
641c9871
LF
5515
5516(define-public python-msgpack
5517 (package
5518 (name "python-msgpack")
ae831df4 5519 (version "0.4.7")
641c9871
LF
5520 (source (origin
5521 (method url-fetch)
ae831df4 5522 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
5523 (sha256
5524 (base32
ae831df4 5525 "0syd7bs83qs9qmxw540jbgsildbqk4yb57fmrlns1021llli402y"))))
641c9871 5526 (build-system python-build-system)
641c9871
LF
5527 (synopsis "MessagePack (de)serializer")
5528 (description "MessagePack is a fast, compact binary serialization format,
5529suitable for similar data to JSON. This package provides CPython bindings for
5530reading and writing MessagePack data.")
5531 (home-page "https://pypi.python.org/pypi/msgpack-python/")
bd74be7b
LF
5532 (license asl2.0)
5533 (properties `((python2-variant . ,(delay python2-msgpack))))))
5534
5535(define-public python2-msgpack
5536 (package (inherit (package-with-python2
5537 (strip-python2-variant python-msgpack)))
5538 (native-inputs
5539 `(("python2-setuptools" ,python2-setuptools)))))
641c9871
LF
5540
5541(define-public python2-msgpack
5542 (package-with-python2 python-msgpack))
6e5e39f4
CR
5543
5544(define-public python-netaddr
5545 (package
5546 (name "python-netaddr")
5547 (version "0.7.18")
5548 (source
5549 (origin
5550 (method url-fetch)
5551 (uri (string-append
5552 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
5553 version
5554 ".tar.gz"))
5555 (sha256
5556 (base32
5557 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
5558 (build-system python-build-system)
5559 (arguments `(#:tests? #f)) ;; No tests.
5560 (inputs
5561 `(("python-setuptools" ,python-setuptools)))
5562 (home-page "https://github.com/drkjam/netaddr/")
5563 (synopsis "Pythonic manipulation of network addresses")
5564 (description
5565 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
5566and MAC network addresses.")
5567 (license bsd-3)))
5568
5569(define-public python2-netaddr
5570 (package-with-python2 python-netaddr))
8c692a52
CR
5571
5572(define-public python-wrapt
5573 (package
5574 (name "python-wrapt")
5575 (version "1.10.5")
5576 (source
5577 (origin
5578 (method url-fetch)
5579 (uri (string-append
5580 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
5581 version
5582 ".tar.gz"))
5583 (sha256
5584 (base32
5585 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
5586 (build-system python-build-system)
5587 (arguments
5588 ;; Tests are not included in the tarball, they are only available in the
5589 ;; git repository.
5590 `(#:tests? #f))
5591 (inputs
5592 `(("python-setuptools" ,python-setuptools)))
5593 (home-page "https://github.com/GrahamDumpleton/wrapt")
5594 (synopsis "Module for decorators, wrappers and monkey patching")
5595 (description
5596 "The aim of the wrapt module is to provide a transparent object proxy for
5597 Python, which can be used as the basis for the construction of function
5598 wrappers and decorator functions.")
5599 (license bsd-2)))
5600
5601(define-public python2-wrapt
5602 (package-with-python2 python-wrapt))
b85c85be
CR
5603
5604(define-public python-iso8601
5605 (package
5606 (name "python-iso8601")
5607 (version "0.1.10")
5608 (source
5609 (origin
5610 (method url-fetch)
5611 (uri (string-append
5612 "https://pypi.python.org/packages/source/i/iso8601/iso8601-"
5613 version
5614 ".tar.gz"))
5615 (sha256
5616 (base32
5617 "1qf01afxh7j4gja71vxv345if8avg6nnm0ry0zsk6j3030xgy4p7"))))
5618 (build-system python-build-system)
5619 (inputs
5620 `(("python-setuptools" ,python-setuptools)))
5621 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
5622 (synopsis "Module to parse ISO 8601 dates")
5623 (description
5624 "This module parses the most common forms of ISO 8601 date strings (e.g.
5625@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
5626 (license license:expat)))
5627
5628(define-public python2-iso8601
5629 (package-with-python2 python-iso8601))
5e412b63
CR
5630
5631(define-public python-monotonic
5632 (package
5633 (name "python-monotonic")
5634 (version "0.3")
5635 (source
5636 (origin
5637 (method url-fetch)
5638 (uri (string-append
5639 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
5640 version
5641 ".tar.gz"))
5642 (sha256
5643 (base32
5644 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
5645 (build-system python-build-system)
5646 (inputs
5647 `(("python-setuptools" ,python-setuptools)))
5648 (home-page "https://github.com/atdt/monotonic")
5649 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
5650 (description
5651 "This module provides a monotonic() function which returns the value (in
5652fractional seconds) of a clock which never goes backwards.")
5653 (license asl2.0)))
5654
5655(define-public python2-monotonic
5656 (package-with-python2 python-monotonic))
de34afac
CR
5657
5658(define-public python-webob
5659 (package
5660 (name "python-webob")
b8834c21 5661 (version "1.5.1")
de34afac
CR
5662 (source
5663 (origin
5664 (method url-fetch)
b8834c21 5665 (uri (pypi-uri "WebOb" version))
de34afac
CR
5666 (sha256
5667 (base32
b8834c21 5668 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac
CR
5669 (build-system python-build-system)
5670 (inputs
5671 `(("python-nose" ,python-nose)
5672 ("python-setuptools" ,python-setuptools)))
5673 (home-page "http://webob.org/")
5674 (synopsis "WSGI request and response object")
5675 (description
5676 "WebOb provides wrappers around the WSGI request environment, and an
5677object to help create WSGI responses.")
5678 (license license:expat)))
5679
5680(define-public python2-webob
5681 (package-with-python2 python-webob))
350ba0a3 5682
02a8a187
BW
5683(define-public python-xlrd
5684 (package
5685 (name "python-xlrd")
5686 (version "0.9.4")
5687 (source (origin
5688 (method url-fetch)
5689 (uri (string-append "https://pypi.python.org/packages/source/x/"
5690 "xlrd/xlrd-" version ".tar.gz"))
5691 (sha256
5692 (base32
5693 "0wpa55nvidmm5m2qr622dsh3cj46akdk0h3zjgzschcmydck73cf"))))
5694 (build-system python-build-system)
5695 (arguments
5696 `(#:phases
5697 (modify-phases %standard-phases
5698 ;; Current test in setup.py does not work as of 0.9.4, so use nose to
5699 ;; run tests instead for now.
5700 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5701 (native-inputs `(("python-nose" ,python-nose)
5702 ("python-setuptools" ,python-setuptools)))
5703 (home-page "http://www.python-excel.org/")
5704 (synopsis "Library for extracting data from Excel files")
5705 (description "This packages provides a library to extract data from
5706spreadsheets using Microsoft Excel® proprietary file formats @samp{.xls} and
5707@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
5708Unicode-aware. It is not intended as an end-user tool.")
5709 (license bsd-3)))
5710
5711(define-public python2-xlrd
5712 (package-with-python2 python-xlrd))
5713
350ba0a3
CR
5714(define-public python-prettytable
5715 (package
5716 (name "python-prettytable")
5717 (version "0.7.2")
5718 (source
5719 (origin
5720 (method url-fetch)
5721 (uri (string-append
5722 "https://pypi.python.org/packages/source/P/PrettyTable/"
5723 "prettytable-" version ".tar.bz2"))
5724 (sha256
5725 (base32
5726 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
5727 (build-system python-build-system)
5728 (inputs
5729 `(("python-setuptools" ,python-setuptools)))
5730 (home-page "http://code.google.com/p/prettytable/")
5731 (synopsis "Display tabular data in an ASCII table format")
5732 (description
5733 "A library designed to represent tabular data in visually appealing ASCII
5734tables. PrettyTable allows for selection of which columns are to be printed,
5735independent alignment of columns (left or right justified or centred) and
5736printing of sub-tables by specifying a row range.")
5737 (license bsd-3)))
5738
5739(define-public python2-prettytable
5740 (package-with-python2 python-prettytable))
7a8ac75a 5741
9f8ee3fe
RW
5742(define-public python-tables
5743 (package
5744 (name "python-tables")
5745 (version "3.2.2")
5746 (source
5747 (origin
5748 (method url-fetch)
5749 (uri (pypi-uri "tables" version))
5750 (sha256
5751 (base32
5752 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))))
5753 (build-system python-build-system)
5754 (arguments
5755 `(;; FIXME: python-build-system does not pass configure-flags to "build"
5756 ;; or "check", so we must override the build and check phases.
5757 #:phases
5758 (modify-phases %standard-phases
5759 (add-after 'unpack 'use-gcc
5760 (lambda _
5761 (substitute* "setup.py"
5762 (("compiler = new_compiler\\(\\)" line)
5763 (string-append line
5764 "\ncompiler.set_executables(compiler='gcc',"
5765 "compiler_so='gcc',"
5766 "linker_exe='gcc',"
5767 "linker_so='gcc -shared')")))
5768 #t))
5769 (replace 'build
5770 (lambda* (#:key inputs #:allow-other-keys)
5771 (zero? (system* "python" "setup.py" "build"
5772 (string-append "--hdf5="
5773 (assoc-ref inputs "hdf5"))))))
5774 (replace 'check
5775 (lambda* (#:key inputs #:allow-other-keys)
5776 (zero? (system* "python" "setup.py" "check"
5777 (string-append "--hdf5="
5778 (assoc-ref inputs "hdf5")))))))))
5779 (propagated-inputs
5780 `(("python-numexpr" ,python-numexpr)
5781 ("python-numpy" ,python-numpy)))
5782 (native-inputs
5783 `(("python-setuptools" ,python-setuptools)
5784 ("python-cython" ,python-cython)
5785 ("pkg-config" ,pkg-config)))
5786 (inputs
5787 `(("hdf5" ,hdf5)
5788 ("bzip2" ,bzip2)
5789 ("zlib" ,zlib)))
5790 (home-page "http://www.pytables.org/")
5791 (synopsis "Hierarchical datasets for Python")
5792 (description "PyTables is a package for managing hierarchical datasets and
5793designed to efficently cope with extremely large amounts of data.")
5794 (license bsd-3)))
5795
5796(define-public python2-tables
5797 (package-with-python2 python-tables))
5798
7a8ac75a
RW
5799(define-public python-pyasn1
5800 (package
5801 (name "python-pyasn1")
5802 (version "0.1.8")
5803 (source
5804 (origin
5805 (method url-fetch)
5806 (uri (string-append "https://pypi.python.org/packages/source/p/"
5807 "pyasn1/pyasn1-" version ".tar.gz"))
5808 (sha256
5809 (base32
5810 "0iw31d9l0zwx35szkzq72hiw002wnqrlrsi9dpbrfngcl1ybwcsx"))))
5811 (build-system python-build-system)
5812 (home-page "http://pyasn1.sourceforge.net/")
5813 (synopsis "ASN.1 types and codecs")
5814 (description
5815 "This is an implementation of ASN.1 types and codecs in Python. It is
5816suitable for a wide range of protocols based on the ASN.1 specification.")
5817 (license bsd-2)))
5818
5819(define-public python2-pyasn1
5820 (package-with-python2 python-pyasn1))
9a49a535 5821
5988c299
EF
5822(define-public python-pyasn1-modules
5823 (package
5824 (name "python-pyasn1-modules")
5825 (version "0.0.8")
5826 (source
5827 (origin
5828 (method url-fetch)
5829 (uri (pypi-uri "pyasn1-modules" version))
5830 (sha256
5831 (base32
5832 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
5833 (build-system python-build-system)
5834 (native-inputs
5835 `(("python-setuptools" ,python-setuptools)))
5836 (propagated-inputs
5837 `(("python-pyasn1" ,python-pyasn1)))
5838 (home-page "http://sourceforge.net/projects/pyasn1/")
5839 (synopsis "ASN.1 codec implementations")
5840 (description
5841 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
5842implementations of ASN.1-based codecs and protocols.")
5843 (license bsd-3)))
5844
5845(define-public python2-pyasn1-modules
5846 (package-with-python2 python-pyasn1-modules))
5847
9a49a535
RW
5848(define-public python2-ipaddress
5849 (package
5850 (name "python2-ipaddress")
5851 (version "1.0.14")
5852 (source
5853 (origin
5854 (method url-fetch)
5855 (uri (string-append "https://pypi.python.org/packages/source/i/"
5856 "ipaddress/ipaddress-" version ".tar.gz"))
5857 (sha256
5858 (base32
5859 "0givid4963n57nsjibms2fc347zmcs188q1hw9al1dkc9kj4nvr2"))))
5860 (build-system python-build-system)
5861 (arguments
5862 `(#:tests? #f ; no tests
5863 #:python ,python-2))
5864 (home-page "https://github.com/phihag/ipaddress")
5865 (synopsis "IP address manipulation library")
5866 (description
5867 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
5868in Python. This library is used to create, poke at, and manipulate IPv4 and
5869IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
5870module to older versions of Python.")
5871 (license psfl)))
3f00e078 5872
4a238186
HG
5873(define-public python2-ipaddr
5874 (package
5875 (name "python2-ipaddr")
5876 (version "2.1.11")
5877 (source
5878 (origin
5879 (method url-fetch)
5880 (uri (pypi-uri "ipaddr" version))
5881 (sha256
5882 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
5883 (build-system python-build-system)
5884 (arguments
5885 `(#:python ,python-2 ;version 2 only
5886 #:phases
5887 (modify-phases %standard-phases
5888 (replace 'check
5889 (lambda* _
5890 (zero? (system* "python" "ipaddr_test.py")))))))
5891 (home-page "https://github.com/google/ipaddr-py")
5892 (synopsis "IP address manipulation library")
5893 (description
5894 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
5895IPv6 addresses and networks.
5896
5897For new implementations you may prefer to use the standard module
5898@code{ipaddress}, which was introduced in Python 3.3 and backported to older
5899versions of Python.")
5900 (license asl2.0)))
5901
3f00e078
RW
5902(define-public python-idna
5903 (package
5904 (name "python-idna")
5905 (version "2.0")
5906 (source
5907 (origin
5908 (method url-fetch)
5909 (uri (string-append "https://pypi.python.org/packages/source/i/"
5910 "idna/idna-" version ".tar.gz"))
5911 (sha256
5912 (base32
5913 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
5914 (build-system python-build-system)
5915 (native-inputs
5916 `(("python-setuptools" ,python-setuptools)))
5917 (home-page "https://github.com/kjd/idna")
5918 (synopsis "Internationalized domain names in applications")
5919 (description
5920 "This is a library to support the Internationalised Domain Names in
5921Applications (IDNA) protocol as specified in RFC 5891. This version of the
5922protocol is often referred to as “IDNA2008” and can produce different results
5923from the earlier standard from 2003. The library is also intended to act as a
5924suitable drop-in replacement for the “encodings.idna” module that comes with
5925the Python standard library but currently only supports the older 2003
5926specification.")
5927 (license bsd-4)))
5928
5929(define-public python2-idna
5930 (package-with-python2 python-idna))
36ebf972
RW
5931
5932(define-public python-pretend
5933 (package
5934 (name "python-pretend")
5935 (version "1.0.8")
5936 (source
5937 (origin
5938 (method url-fetch)
5939 (uri (string-append "https://pypi.python.org/packages/source/p/"
5940 "pretend/pretend-" version ".tar.gz"))
5941 (sha256
5942 (base32
5943 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
5944 (build-system python-build-system)
5945 (native-inputs
5946 `(("python-setuptools" ,python-setuptools)))
5947 (home-page "https://github.com/alex/pretend")
5948 (synopsis "Library for stubbing in Python")
5949 (description
5950 "Pretend is a library to make stubbing with Python easier. Stubbing is a
5951technique for writing tests. You may hear the term mixed up with mocks,
5952fakes, or doubles. Basically, a stub is an object that returns pre-canned
5953responses, rather than doing any computation.")
5954 (license bsd-3)))
5955
5956(define-public python2-pretend
5957 (package-with-python2 python-pretend))
aa759a51
RW
5958
5959(define-public python-cryptography-vectors
5960 (package
5961 (name "python-cryptography-vectors")
9c509ca9 5962 (version "1.3.4")
aa759a51
RW
5963 (source
5964 (origin
5965 (method url-fetch)
9c509ca9 5966 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
5967 (sha256
5968 (base32
9c509ca9 5969 "15h1iz2klnpb4f8djxy7cpbnyn3wbjp7bnj4pz6s7w6plghbq524"))))
aa759a51
RW
5970 (build-system python-build-system)
5971 (native-inputs
5972 `(("python-setuptools" ,python-setuptools)))
5973 (home-page "https://github.com/pyca/cryptography")
5974 (synopsis "Test vectors for the cryptography package.")
5975 (description
5976 "This package contains test vectors for the cryptography package.")
5977 ;; Distributed under either BSD-3 or ASL2.0
5978 (license (list bsd-3 asl2.0))))
5979
5980(define-public python2-cryptography-vectors
5981 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
5982
5983(define-public python-cryptography
5984 (package
5985 (name "python-cryptography")
9c509ca9 5986 (version "1.3.4")
88b47cb0
RW
5987 (source
5988 (origin
5989 (method url-fetch)
9c509ca9 5990 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
5991 (sha256
5992 (base32
9c509ca9 5993 "1a85l548w5vvq3yhz0az7ajg2ijixzp6gagapw6wgrqvq28ghgs2"))))
88b47cb0
RW
5994 (build-system python-build-system)
5995 (inputs
5996 `(("openssl" ,openssl)))
5997 (propagated-inputs
5998 `(("python-cffi" ,python-cffi)
5999 ("python-six" ,python-six)
6000 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6001 ("python-idna" ,python-idna)
6002 ("python-iso8601" ,python-iso8601)))
6003 (native-inputs
6004 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6005 ("python-hypothesis" ,python-hypothesis)
88b47cb0
RW
6006 ("python-setuptools" ,python-setuptools)
6007 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6008 ("python-pyasn1" ,python-pyasn1)
6009 ("python-pyasn1-modules" ,python-pyasn1-modules)
88b47cb0
RW
6010 ("python-pytest" ,python-pytest)))
6011 (home-page "https://github.com/pyca/cryptography")
6012 (synopsis "Cryptographic recipes and primitives for Python")
6013 (description
6014 "cryptography is a package which provides cryptographic recipes and
6015primitives to Python developers. It aims to be the “cryptographic standard
6016library” for Python. The package includes both high level recipes, and low
6017level interfaces to common cryptographic algorithms such as symmetric ciphers,
6018message digests and key derivation functions.")
6019 ;; Distributed under either BSD-3 or ASL2.0
519e2f4f
LF
6020 (license (list bsd-3 asl2.0))
6021 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6022
6023(define-public python2-cryptography
519e2f4f
LF
6024 (let ((crypto (package-with-python2
6025 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6026 (package (inherit crypto)
6027 (propagated-inputs
6028 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6029 ("python2-backport-ssl-match-hostname"
6030 ,python2-backport-ssl-match-hostname)
68f1cdec 6031 ("python2-enum34" ,python2-enum34)
88b47cb0 6032 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6033
6034(define-public python-pyopenssl
6035 (package
6036 (name "python-pyopenssl")
2fc629dd 6037 (version "16.0.0")
5af999b8
RW
6038 (source
6039 (origin
6040 (method url-fetch)
6041 (uri (string-append "https://pypi.python.org/packages/source/p/"
6042 "pyOpenSSL/pyOpenSSL-" version ".tar.gz"))
6043 (sha256
6044 (base32
2fc629dd 6045 "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n"))))
5af999b8 6046 (build-system python-build-system)
5af999b8
RW
6047 (propagated-inputs
6048 `(("python-cryptography" ,python-cryptography)
6049 ("python-six" ,python-six)))
6050 (inputs
6051 `(("openssl" ,openssl)))
6052 (native-inputs
6053 `(("python-setuptools" ,python-setuptools)))
6054 (home-page "https://github.com/pyca/pyopenssl")
6055 (synopsis "Python wrapper module around the OpenSSL library")
6056 (description
6057 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6058library.")
6059 (license asl2.0)))
6060
6061(define-public python2-pyopenssl
519e2f4f 6062 (package-with-python2 python-pyopenssl))
643725a1
CR
6063
6064(define-public python-pip
6065 (package
6066 (name "python-pip")
6fb54e3b 6067 (version "8.0.2")
643725a1
CR
6068 (source
6069 (origin
6070 (method url-fetch)
6fb54e3b 6071 (uri (pypi-uri "pip" version))
643725a1
CR
6072 (sha256
6073 (base32
6fb54e3b 6074 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1
CR
6075 (build-system python-build-system)
6076 (inputs
6077 `(("python-setuptools" ,python-setuptools)
6078 ("python-virtualenv" ,python-virtualenv)
6079 ;; Tests
6080 ("python-mock" ,python-mock)
6081 ("python-pytest" ,python-pytest)
6082 ("python-scripttest" ,python-scripttest)))
6083 (home-page "https://pip.pypa.io/")
6084 (synopsis
6085 "Package manager for Python software")
6086 (description
6087 "Pip is a package manager for Python software, that finds packages on the
6088Python Package Index (PyPI).")
6089 (license license:expat)))
6090
6091(define-public python2-pip
6092 (package-with-python2 python-pip))
d8c4998f
LC
6093
6094(define-public python-tlsh
6095 (package
6096 (name "python-tlsh")
99b00dc7 6097 (version "3.4.4")
d8c4998f
LC
6098 (home-page "https://github.com/trendmicro/tlsh")
6099 (source (origin
99b00dc7
EF
6100 (method url-fetch)
6101 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6102 version ".tar.gz"))
d8c4998f
LC
6103 (sha256
6104 (base32
99b00dc7
EF
6105 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6106 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6107 (build-system cmake-build-system)
6108 (arguments
6109 '(#:out-of-source? #f
6110 #:phases (modify-phases %standard-phases
6111 (replace
6112 'install
6113 (lambda* (#:key outputs #:allow-other-keys)
6114 ;; Build and install the Python bindings. The underlying
6115 ;; C++ library is apparently not meant to be installed.
6116 (let ((out (assoc-ref outputs "out")))
6117 (with-directory-excursion "py_ext"
6118 (and (system* "python" "setup.py" "build")
6119 (system* "python" "setup.py" "install"
6120 (string-append "--prefix=" out))))))))))
6121 (inputs `(("python" ,python-wrapper))) ;for the bindings
6122 (synopsis "Fuzzy matching library for Python")
6123 (description
6124 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6125Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6126value which can be used for similarity comparisons. Similar objects have
6127similar hash values, which allows for the detection of similar objects by
6128comparing their hash values. The byte stream should have a sufficient amount
6129of complexity; for example, a byte stream of identical bytes will not generate
6130a hash value.")
6131 (license asl2.0)))
6132
6133(define-public python2-tlsh
6134 (package
6135 (inherit python-tlsh)
6136 (name "python2-tlsh")
6137 (inputs `(("python" ,python-2)))))
d96034ed
LC
6138
6139(define-public python-libarchive-c
6140 (package
6141 (name "python-libarchive-c")
03fd001c 6142 (version "2.2")
d96034ed
LC
6143 (source (origin
6144 (method url-fetch)
03fd001c 6145 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6146 (sha256
6147 (base32
03fd001c 6148 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6149 (build-system python-build-system)
6150 (arguments
6151 '(#:phases (modify-phases %standard-phases
6152 (add-before
6153 'build 'reference-libarchive
6154 (lambda* (#:key inputs #:allow-other-keys)
6155 ;; Retain the absolute file name of libarchive.so.
6156 (let ((libarchive (assoc-ref inputs "libarchive")))
6157 (substitute* "libarchive/ffi.py"
6158 (("find_library\\('archive'\\)")
6159 (string-append "'" libarchive
6160 "/lib/libarchive.so'"))))
6161
6162 ;; Do not make a compressed egg (see
6163 ;; <http://bugs.gnu.org/20765>).
6164 (let ((port (open-file "setup.cfg" "a")))
6165 (display "\n[easy_install]\nzip_ok = 0\n"
6166 port)
6167 (close-port port)
6168 #t))))))
6169 (inputs
6170 `(("python-setuptools" ,python-setuptools)
6171 ("libarchive" ,libarchive)))
6172 (home-page "https://github.com/Changaco/python-libarchive-c")
6173 (synopsis "Python interface to libarchive")
6174 (description
6175 "This package provides Python bindings to libarchive, a C library to
6176access possibly compressed archives in many different formats. It uses
6177Python's @code{ctypes} foreign function interface (FFI).")
6178 (license lgpl2.0+)))
6179
6180(define-public python2-libarchive-c
6181 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6182
6183(define-public python-file
6184 (package
6185 (inherit file)
6186 (name "python-file")
6187 (build-system python-build-system)
6188 (arguments
6189 '(#:tests? #f ;no tests
6190 #:phases (modify-phases %standard-phases
6191 (add-before 'build 'change-directory
6192 (lambda _
6193 (chdir "python")
6194 #t))
6195 (add-before 'build 'set-library-file-name
6196 (lambda* (#:key inputs #:allow-other-keys)
6197 (let ((file (assoc-ref inputs "file")))
6198 (substitute* "magic.py"
6199 (("find_library\\('magic'\\)")
6200 (string-append "'" file "/lib/libmagic.so'")))
6201 #t))))))
6202 (inputs `(("file" ,file)))
6203 (self-native-input? #f)
daeeea71
CM
6204 (synopsis "Python bindings to the libmagic file type guesser. Note that
6205this module and the python-magic module both provide a \"magic.py\" file;
6206these two modules, which are different and were developed separately, both
6207serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6208
6209(define-public python2-file
6210 (package-with-python2 python-file))
85d4aeac
LC
6211
6212(define-public python-debian
6213 (package
6214 (name "python-debian")
6215 (version "0.1.23")
6216 (source
6217 (origin
6218 (method url-fetch)
6219 (uri (string-append
6220 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6221 version ".tar.gz"))
6222 (sha256
6223 (base32
6224 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6225 (build-system python-build-system)
6226 (inputs
6227 `(("python-six" ,python-six)))
6228 (native-inputs
6229 `(("python-setuptools" ,python-setuptools)))
6230 (home-page "http://packages.debian.org/sid/python-debian")
6231 (synopsis "Debian package related modules")
6232 (description
5c7bdc9a
LC
6233 ;; XXX: Use @enumerate instead of @itemize to work around
6234 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6235 "This package provides Python modules that abstract many formats of
6236Debian-related files, such as:
6237
5c7bdc9a 6238@enumerate
85d4aeac
LC
6239@item Debtags information;
6240@item @file{debian/changelog} files;
6241@item packages files, pdiffs;
6242@item control files of single or multiple RFC822-style paragraphs---e.g.
6243 @file{debian/control}, @file{.changes}, @file{.dsc};
6244@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6245 contained files and meta-information.
5c7bdc9a 6246@end enumerate\n")
85d4aeac
LC
6247
6248 ;; Modules are either GPLv2+ or GPLv3+.
6249 (license gpl3+)))
6250
6251(define-public python2-debian
6252 (package-with-python2 python-debian))
816a6538
LC
6253
6254(define-public python-chardet
6255 (package
6256 (name "python-chardet")
6257 (version "2.3.0")
6258 (source
6259 (origin
6260 (method url-fetch)
6261 (uri (string-append
6262 "https://pypi.python.org/packages/source/c/chardet/chardet-"
6263 version
6264 ".tar.gz"))
6265 (sha256
6266 (base32
6267 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
6268 (build-system python-build-system)
6269 (native-inputs
6270 `(("python-setuptools" ,python-setuptools)))
6271 (home-page "https://github.com/chardet/chardet")
6272 (synopsis "Universal encoding detector for Python 2 and 3")
6273 (description
6274 "This package provides @code{chardet}, a Python module that can
6275automatically detect a wide range of file encodings.")
6276 (license lgpl2.1+)))
6277
6278(define-public python2-chardet
6279 (package-with-python2 python-chardet))
2fc5f186 6280
1872f1bb
KM
6281(define-public python-docopt
6282 (package
6283 (name "python-docopt")
6284 (version "0.6.2")
6285 (source
6286 (origin
6287 (method url-fetch)
6288 ;; The release on PyPI does not include tests.
6289 (uri (string-append
6290 "https://github.com/docopt/docopt/archive/"
6291 version ".tar.gz"))
6292 (file-name (string-append name "-" version ".tar.gz"))
6293 (sha256
6294 (base32
6295 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
6296 (build-system python-build-system)
6297 (native-inputs
6298 `(("python-pytest" ,python-pytest)
6299 ("python-setuptools" ,python-setuptools)))
6300 (arguments
6301 `(#:phases (alist-replace
6302 'check
6303 (lambda _ (zero? (system* "py.test")))
6304 %standard-phases)))
6305 (home-page "http://docopt.org")
6306 (synopsis "Command-line interface description language for Python")
6307 (description "This library allows the user to define a command-line
6308interface from a program's help message rather than specifying it
6309programatically with command-line parsers like @code{getopt} and
6310@code{argparse}.")
6311 (license license:expat)))
6312
6313(define-public python2-docopt
6314 (package-with-python2 python-docopt))
6315
2fc5f186
LF
6316(define-public python-zope-event
6317 (package
6318 (name "python-zope-event")
6319 (version "4.1.0")
6320 (source
6321 (origin
6322 (method url-fetch)
6323 (uri (string-append "https://pypi.python.org/packages/source/z"
6324 "/zope.event/zope.event-" version ".tar.gz"))
6325 (sha256
6326 (base32
6327 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
6328 (build-system python-build-system)
6329 (inputs
6330 `(("python-setuptools" ,python-setuptools)))
6331 (home-page "http://pypi.python.org/pypi/zope.event")
6332 (synopsis "Event publishing system for Python")
6333 (description "Zope.event provides an event publishing API, intended for
6334use by applications which are unaware of any subscribers to their events. It
6335is a simple event-dispatching system on which more sophisticated event
6336dispatching systems can be built.")
6337 (license zpl2.1)))
6338
6339(define-public python2-zope-event
6340 (package-with-python2 python-zope-event))
97abe268
LF
6341
6342(define-public python-zope-interface
6343 (package
6344 (name "python-zope-interface")
6345 (version "4.1.3")
6346 (source
6347 (origin
6348 (method url-fetch)
6349 (uri (string-append "https://pypi.python.org/packages/source/z"
6350 "/zope.interface/zope.interface-" version ".tar.gz"))
6351 (sha256
6352 (base32
6353 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
6354 (build-system python-build-system)
6355 (propagated-inputs
6356 `(("python-zope-event" ,python-zope-event)))
6357 (home-page "https://github.com/zopefoundation/zope.interface")
6358 (synopsis "Python implementation of the \"design by contract\"
6359methodology")
6360 (description "Zope.interface provides an implementation of \"object
6361interfaces\" for Python. Interfaces are a mechanism for labeling objects as
6362conforming to a given API or contract.")
6363 (license zpl2.1)))
6364
6365(define-public python2-zope-interface
6366 (package-with-python2 python-zope-interface))
81f2373c
LF
6367
6368(define-public python-zope-exceptions
6369 (package
6370 (name "python-zope-exceptions")
6371 (version "4.0.8")
6372 (source
6373 (origin
6374 (method url-fetch)
6375 (uri (string-append "https://pypi.python.org/packages/source/z"
6376 "/zope.exceptions/zope.exceptions-"
6377 version ".tar.gz"))
6378 (sha256
6379 (base32
6380 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
6381 (build-system python-build-system)
6382 (arguments
6383 '(#:tests? #f)) ; circular dependency with zope.testrunner
6384 (propagated-inputs
6385 `(("python-zope-interface" ,python-zope-interface)))
6386 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
6387 (synopsis "Zope exceptions")
6388 (description "Zope.exceptions provides general-purpose exception types
6389that have uses outside of the Zope framework.")
6390 (license zpl2.1)))
6391
6392(define-public python2-zope-exceptions
6393 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
6394
6395(define-public python-zope-testing
6396 (package
6397 (name "python-zope-testing")
6398 (version "4.5.0")
6399 (source
6400 (origin
6401 (method url-fetch)
6402 (uri (string-append "https://pypi.python.org/packages/source/z"
6403 "/zope.testing/zope.testing-" version ".tar.gz"))
6404 (sha256
6405 (base32
6406 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
6407 (build-system python-build-system)
6408 (native-inputs
6409 `(("python-zope-exceptions" ,python-zope-exceptions)))
6410 (propagated-inputs
6411 `(("python-zope-interface" ,python-zope-interface)))
6412 (home-page "http://pypi.python.org/pypi/zope.testing")
6413 (synopsis "Zope testing helpers")
6414 (description "Zope.testing provides a number of testing utilities for HTML
6415forms, HTTP servers, regular expressions, and more.")
6416 (license zpl2.1)))
6417
6418(define-public python2-zope-testing
6419 (package-with-python2 python-zope-testing))
01614c4f
LF
6420
6421(define-public python-zope-testrunner
6422 (package
6423 (name "python-zope-testrunner")
6424 (version "4.4.9")
6425 (source
6426 (origin
6427 (method url-fetch)
6428 (uri (string-append "https://pypi.python.org/packages/source/z"
6429 "/zope.testrunner/zope.testrunner-"
6430 version ".zip"))
6431 (sha256
6432 (base32
6433 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
6434 (build-system python-build-system)
6435 (native-inputs
6436 `(("python-six" ,python-six)
6437 ("python-zope-exceptions" ,python-zope-exceptions)
6438 ("python-zope-testing" ,python-zope-testing)
6439 ("unzip" ,unzip)))
6440 (propagated-inputs
6441 `(("python-zope-interface" ,python-zope-interface)))
6442 (home-page "http://pypi.python.org/pypi/zope.testrunner")
6443 (synopsis "Zope testrunner script")
6444 (description "Zope.testrunner provides a script for running Python
6445tests.")
6446 (license zpl2.1)))
6447
6448(define-public python2-zope-testrunner
6449 (let ((base (package-with-python2 python-zope-testrunner)))
6450 (package
6451 (inherit base)
6452 (native-inputs
6453 (append (package-native-inputs base)
6454 `(("python2-subunit" ,python2-subunit)
6455 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
6456
6457(define-public python-zope-i18nmessageid
6458 (package
6459 (name "python-zope-i18nmessageid")
6460 (version "4.0.3")
6461 (source
6462 (origin
6463 (method url-fetch)
6464 (uri (string-append
6465 "https://pypi.python.org/packages/source/z"
6466 "/zope.i18nmessageid/zope.i18nmessageid-"
6467 version ".tar.gz"))
6468 (sha256
6469 (base32
6470 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
6471 (build-system python-build-system)
6472 (inputs
6473 `(("python-setuptools" ,python-setuptools)))
6474 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
6475 (synopsis "Message identifiers for internationalization")
6476 (description "Zope.i18nmessageid provides facilities for declaring
6477internationalized messages within program source text.")
6478 (license zpl2.1)))
6479
6480(define-public python2-zope-i18nmessageid
6481 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
6482
6483(define-public python-zope-schema
6484 (package
6485 (name "python-zope-schema")
6486 (version "4.4.2")
6487 (source
6488 (origin
6489 (method url-fetch)
6490 (uri (string-append "https://pypi.python.org/packages/source/z"
6491 "/zope.schema/zope.schema-" version ".tar.gz"))
6492 (sha256
6493 (base32
6494 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
6495 (build-system python-build-system)
6496 (propagated-inputs
6497 `(("python-zope-event" ,python-zope-event)
6498 ("python-zope-interface" ,python-zope-interface)))
6499 (native-inputs
6500 `(("python-zope-testing" ,python-zope-testing)))
6501 (home-page "http://pypi.python.org/pypi/zope.schema")
6502 (synopsis "Zope data schemas")
6503 (description "Zope.scheme provides extensions to zope.interface for
6504defining data schemas.")
6505 (license zpl2.1)))
6506
6507(define-public python2-zope-schema
6508 (package-with-python2 python-zope-schema))
fbac9b17
LF
6509
6510(define-public python-zope-configuration
6511 (package
6512 (name "python-zope-configuration")
6513 (version "4.0.3")
6514 (source (origin
6515 (method url-fetch)
6516 (uri (string-append "https://pypi.python.org/packages/source/z"
6517 "/zope.configuration/zope.configuration-"
6518 version ".tar.gz"))
6519 (sha256
6520 (base32
6521 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
6522 (build-system python-build-system)
6523 (propagated-inputs
6524 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6525 ("python-zope-schema" ,python-zope-schema)))
6526 (home-page "http://pypi.python.org/pypi/zope.configuration")
6527 (synopsis "Zope Configuration Markup Language")
6528 (description "Zope.configuration implements ZCML, the Zope Configuration
6529Markup Language.")
6530 (license zpl2.1)))
6531
6532(define-public python2-zope-configuration
6533 (package-with-python2 python-zope-configuration))
2ad52086
LF
6534
6535(define-public python-zope-proxy
6536 (package
6537 (name "python-zope-proxy")
6538 (version "4.1.6")
6539 (source
6540 (origin
6541 (method url-fetch)
6542 (uri (string-append "https://pypi.python.org/packages/source/z"
6543 "/zope.proxy/zope.proxy-" version ".tar.gz"))
6544 (sha256
6545 (base32
6546 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
6547 (build-system python-build-system)
6548 (propagated-inputs
6549 `(("python-zope-interface" ,python-zope-interface)))
6550 (home-page "http://pypi.python.org/pypi/zope.proxy")
6551 (synopsis "Generic, transparent proxies")
6552 (description "Zope.proxy provides generic, transparent proxies for Python.
6553Proxies are special objects which serve as mostly-transparent wrappers around
6554another object, intervening in the apparent behavior of the wrapped object
6555only when necessary to apply the policy (e.g., access checking, location
6556brokering, etc.) for which the proxy is responsible.")
6557 (license zpl2.1)))
6558
6559(define-public python2-zope-proxy
6560 (package-with-python2 python-zope-proxy))
f404b5ea
LF
6561
6562(define-public python-zope-location
6563 (package
6564 (name "python-zope-location")
6565 (version "4.0.3")
6566 (source
6567 (origin
6568 (method url-fetch)
6569 (uri (string-append "https://pypi.python.org/packages/source/z"
6570 "/zope.location/zope.location-" version ".tar.gz"))
6571 (sha256
6572 (base32
6573 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
6574 (build-system python-build-system)
6575 (native-inputs
6576 `(("python-zope-proxy" ,python-zope-proxy)
6577 ("python-zope-schema" ,python-zope-schema)))
6578 (home-page "http://pypi.python.org/pypi/zope.location/")
6579 (synopsis "Zope location library")
6580 (description "Zope.location implements the concept of \"locations\" in
6581Zope3, which are are special objects that have a structural location.")
6582 (license zpl2.1)))
6583
6584(define-public python2-zope-location
6585 (package-with-python2 python-zope-location))
d4b77f36
LF
6586
6587(define-public python-zope-security
6588 (package
6589 (name "python-zope-security")
6590 (version "4.0.3")
6591 (source
6592 (origin
6593 (method url-fetch)
6594 (uri (string-append "https://pypi.python.org/packages/source/z"
6595 "/zope.security/zope.security-" version ".tar.gz"))
6596 (sha256
6597 (base32
6598 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
6599 (build-system python-build-system)
6600 (propagated-inputs
6601 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6602 ("python-zope-component" ,python-zope-component)
6603 ("python-zope-location" ,python-zope-location)
6604 ("python-zope-proxy" ,python-zope-proxy)
6605 ("python-zope-schema" ,python-zope-schema)
6606 ("python-zope-testrunner" ,python-zope-testrunner)
6607 ("python-zope-testing" ,python-zope-testing)))
6608 (home-page "http://pypi.python.org/pypi/zope.security")
6609 (synopsis "Zope security framework")
6610 (description "Zope.security provides a generic mechanism to implement
6611security policies on Python objects.")
6612 (license zpl2.1)))
6613
6614(define-public python2-zope-security
04417662
EF
6615 (let ((zope-security (package-with-python2 python-zope-security)))
6616 (package (inherit zope-security)
6617 (propagated-inputs
6618 `(("python2-zope-testrunner" ,python2-zope-testrunner)
6619 ,@(alist-delete
6620 "python-zope-testrunner"
6621 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
6622
6623(define-public python-zope-component
6624 (package
6625 (name "python-zope-component")
6626 (version "4.2.2")
6627 (source
6628 (origin
6629 (method url-fetch)
6630 (uri (string-append "https://pypi.python.org/packages/source/z"
6631 "/zope.component/zope.component-" version ".tar.gz"))
6632 (sha256
6633 (base32
6634 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
6635 (build-system python-build-system)
6636 (arguments
6637 ;; Skip tests due to circular dependency with python-zope-security.
6638 '(#:tests? #f))
6639 (native-inputs
6640 `(("python-zope-testing" ,python-zope-testing)))
6641 (propagated-inputs
6642 `(("python-zope-event" ,python-zope-event)
6643 ("python-zope-interface" ,python-zope-interface)
6644 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6645 ("python-zope-configuration" ,python-zope-configuration)))
6646 (home-page "https://github.com/zopefoundation/zope.component")
6647 (synopsis "Zope Component Architecture")
6648 (description "Zope.component represents the core of the Zope Component
6649Architecture. Together with the zope.interface package, it provides
6650facilities for defining, registering and looking up components.")
6651 (license zpl2.1)))
6652
6653(define-public python2-zope-component
6654 (package-with-python2 python-zope-component))
3859ac12 6655
b5f218be
LF
6656(define-public python2-pythondialog
6657 (package
6658 (name "python2-pythondialog")
42c4b246 6659 (version "3.4.0")
b5f218be
LF
6660 (source
6661 (origin
6662 (method url-fetch)
42c4b246 6663 (uri (pypi-uri "python2-pythondialog" version))
b5f218be
LF
6664 (sha256
6665 (base32
42c4b246 6666 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9"))))
b5f218be
LF
6667 (build-system python-build-system)
6668 (arguments
6669 `(#:phases
6670 (modify-phases %standard-phases
6671 (add-after 'unpack 'patch-path
6672 (lambda* (#:key inputs #:allow-other-keys)
6673 (let* ((dialog (assoc-ref inputs "dialog")))
6674 ;; Since this library really wants to grovel the search path, we
6675 ;; must hardcode dialog's store path into it.
6676 (substitute* "dialog.py"
6677 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
6678 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
6679 #t))))
6680 #:python ,python-2
6681 #:tests? #f)) ; no test suite
6682 (propagated-inputs
6683 `(("dialog" ,dialog)))
6684 (home-page "http://pythondialog.sourceforge.net/")
6685 (synopsis "Python interface to the UNIX dialog utility")
6686 (description "A Python wrapper for the dialog utility. Its purpose is to
6687provide an easy to use, pythonic and comprehensive Python interface to dialog.
6688This allows one to make simple text-mode user interfaces on Unix-like systems")
6689 (license lgpl2.1)))
6690
3859ac12
LF
6691(define-public python-pyrfc3339
6692 (package
6693 (name "python-pyrfc3339")
d9aa097b 6694 (version "1.0")
3859ac12
LF
6695 (source
6696 (origin
6697 (method url-fetch)
d9aa097b 6698 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
6699 (sha256
6700 (base32
d9aa097b 6701 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
6702 (build-system python-build-system)
6703 (propagated-inputs
6704 `(("python-pytz" ,python-pytz)))
6705 (native-inputs
6706 `(("python-nose" ,python-nose)
6707 ("python-setuptools" ,python-setuptools)))
6708 (home-page "https://github.com/kurtraschke/pyRFC3339")
6709 (synopsis "Python timestamp library")
6710 (description "Python library for generating and parsing RFC 3339-compliant
6711timestamps.")
6712 (license license:expat)))
6713
6714(define-public python2-pyrfc3339
6715 (package-with-python2 python-pyrfc3339))
5eea2005
LF
6716
6717(define-public python-werkzeug
6718 (package
6719 (name "python-werkzeug")
4b47cbfa 6720 (version "0.11.5")
5eea2005
LF
6721 (source
6722 (origin
6723 (method url-fetch)
4b47cbfa 6724 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
6725 (sha256
6726 (base32
4b47cbfa 6727 "0r41xqp4cypzcgsf6zbspbqd272wnzf20igb4w4b5wzfhgqh9nxg"))))
5eea2005
LF
6728 (build-system python-build-system)
6729 (native-inputs
6730 `(("python-pytest" ,python-pytest)))
6731 (home-page "http://werkzeug.pocoo.org/")
6732 (synopsis "Utilities for WSGI applications")
6733 (description "One of the most advanced WSGI utility modules. It includes a
6734powerful debugger, full-featured request and response objects, HTTP utilities to
6735handle entity tags, cache control headers, HTTP dates, cookie handling, file
6736uploads, a powerful URL routing system and a bunch of community-contributed
6737addon modules.")
6738 (license x11)))
6739
6740(define-public python2-werkzeug
6741 (package-with-python2 python-werkzeug))
99fffa8a
LF
6742
6743(define-public python-configobj
6744 (package
6745 (name "python-configobj")
6746 (version "5.0.6")
6747 (source (origin
6748 (method url-fetch)
6749 (uri (string-append
6750 "https://pypi.python.org/packages/source/c/configobj/"
6751 "configobj-" version ".tar.gz"))
6752 (sha256
6753 (base32
6754 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
6755 ;; Patch setup.py so it looks for python-setuptools, which is
6756 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 6757 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a
LF
6758 (build-system python-build-system)
6759 (native-inputs
6760 `(("python-setuptools" ,python-setuptools)
6761 ("python-six" ,python-six)))
6762 (synopsis "Config file reading, writing and validation")
6763 (description "ConfigObj is a simple but powerful config file reader and
6764writer: an ini file round tripper. Its main feature is that it is very easy to
6765use, with a straightforward programmer’s interface and a simple syntax for
6766config files.")
6767 (home-page "https://github.com/DiffSK/configobj")
6768 (license bsd-3)))
6769
6770(define-public python2-configobj
6771 (package-with-python2 python-configobj))
79e8a291
LF
6772
6773(define-public python-configargparse
6774 (package
6775 (name "python-configargparse")
6776 (version "0.10.0")
6777 (source (origin
6778 (method url-fetch)
6779 (uri (string-append
6780 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
6781 "ConfigArgParse-" version ".tar.gz"))
6782 (sha256
6783 (base32
6784 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
6785 (build-system python-build-system)
6786 (arguments
6787 ;; FIXME: Bug in test suite filed upstream:
6788 ;; https://github.com/bw2/ConfigArgParse/issues/32
6789 '(#:tests? #f))
6790 (synopsis "Replacement for argparse")
6791 (description "A drop-in replacement for argparse that allows options to also
6792be set via config files and/or environment variables.")
6793 (home-page "https://github.com/bw2/ConfigArgParse")
6794 (license license:expat)))
6795
6796(define-public python2-configargparse
6797 (package-with-python2 python-configargparse))
ab41f979
LF
6798
6799(define-public python-ndg-httpsclient
6800 (package
6801 (name "python-ndg-httpsclient")
6802 (version "0.4.0")
6803 (source (origin
6804 (method url-fetch)
6805 (uri (string-append
6806 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
6807 "ndg_httpsclient-" version ".tar.gz"))
6808 (sha256
6809 (base32
6810 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
6811 (build-system python-build-system)
6812 (propagated-inputs
6813 `(("python-pyopenssl" ,python-pyopenssl)))
6814 (synopsis "HTTPS support for Python's httplib and urllib2")
6815 (description "This is a HTTPS client implementation for httplib and urllib2
6816based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
6817over the default provided with Python and importantly enables full verification
6818of the SSL peer.")
6819 (home-page "https://github.com/cedadev/ndg_httpsclient/")
6820 (license bsd-3)))
6821
6822;; python2-openssl requires special care, so package-with-python2 is
6823;; insufficient.
6824(define-public python2-ndg-httpsclient
6825 (package (inherit python-ndg-httpsclient)
6826 (name "python2-ndg-httpsclient")
6827 (arguments `(#:python ,python-2))
6828 (propagated-inputs
6829 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
6830
6831(define-public python-contextlib2
6832 (package
6833 (name "python-contextlib2")
6834 (version "0.4.0")
6835 (source
6836 (origin
6837 (method url-fetch)
6838 (uri (pypi-uri "contextlib2" version))
6839 (sha256
6840 (base32
6841 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
6842 (build-system python-build-system)
6843 (arguments
6844 `(#:phases
6845 (modify-phases %standard-phases
6846 (replace 'check
6847 (lambda _ (zero?
6848 (system*
b3546174 6849 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
6850 (home-page "http://contextlib2.readthedocs.org/")
6851 (synopsis "Tools for decorators and context managers")
6852 (description "This module is primarily a backport of the Python
68533.2 contextlib to earlier Python versions. Like contextlib, it
6854provides utilities for common tasks involving decorators and context
6855managers. It also contains additional features that are not part of
6856the standard library.")
6857 (license psfl)))
6858
6859(define-public python2-contextlib2
6860 (package-with-python2 python-contextlib2))
210bf497
DT
6861
6862(define-public python-texttable
6863 (package
6864 (name "python-texttable")
6865 (version "0.8.4")
6866 (source
6867 (origin
6868 (method url-fetch)
6869 (uri (pypi-uri "texttable" version))
6870 (sha256
6871 (base32
6872 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
6873 (build-system python-build-system)
6874 (arguments '(#:tests? #f)) ; no tests
6875 (home-page "https://github.com/foutaise/texttable/")
6876 (synopsis "Python module for creating simple ASCII tables")
6877 (description "Texttable is a Python module for creating simple ASCII
6878tables.")
6879 (license lgpl2.1+)))
6880
6881(define-public python2-texttable
6882 (package-with-python2 python-texttable))
67c52bb3
DT
6883
6884(define-public python-websocket-client
6885 (package
6886 (name "python-websocket-client")
6b810897 6887 (version "0.37.0")
67c52bb3
DT
6888 (source
6889 (origin
6890 (method url-fetch)
6b810897 6891 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
6892 (sha256
6893 (base32
6b810897 6894 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3
DT
6895 (build-system python-build-system)
6896 (native-inputs
6897 `(("python-six" ,python-six))) ; for tests
6898 (inputs
6899 `(("python-setuptools" ,python-setuptools)))
6900 (home-page "https://github.com/liris/websocket-client")
6901 (synopsis "WebSocket client for Python")
6902 (description "The Websocket-client module provides the low level APIs for
6903WebSocket usage in Python programs.")
6904 (license lgpl2.1+)))
6905
6906(define-public python2-websocket-client
6907 (package-with-python2 python-websocket-client))
5c6eea2a
LF
6908
6909(define-public python-atomicwrites
6910 (package
6911 (name "python-atomicwrites")
54c30ebc 6912 (version "1.0.0")
5c6eea2a
LF
6913 (source (origin
6914 (method url-fetch)
6915 (uri (pypi-uri "atomicwrites" version))
6916 (sha256
6917 (base32
54c30ebc 6918 "019fa4771q7fb1167yfbh6msdzcqini6v7i59rmf72mzdjd7x5qv"))))
5c6eea2a
LF
6919 (build-system python-build-system)
6920 (synopsis "Atomic file writes in Python")
6921 (description "Library for atomic file writes using platform dependent tools
6922for atomic filesystem operations.")
6923 (home-page "https://github.com/untitaker/python-atomicwrites")
9bb6d184
LF
6924 (license license:expat)
6925 (properties `((python2-variant . ,(delay python2-atomicwrites))))))
6926
6927(define-public python2-atomicwrites
6928 (package (inherit (package-with-python2
6929 (strip-python2-variant python-atomicwrites)))
6930 (native-inputs
6931 `(("python2-setuptools" ,python2-setuptools)))))
561bb3cb
LF
6932
6933(define-public python-requests-toolbelt
6934 (package
6935 (name "python-requests-toolbelt")
c02af1c8 6936 (version "0.6.2")
561bb3cb
LF
6937 (source (origin
6938 (method url-fetch)
c02af1c8
LF
6939 (uri (string-append
6940 "https://pypi.python.org/packages/"
6941 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
6942 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
6943 (sha256
6944 (base32
c02af1c8 6945 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb
LF
6946 (build-system python-build-system)
6947 (propagated-inputs
6948 `(("python-requests" ,python-requests)))
6949 (synopsis "Extensions to python-requests")
6950 (description "This is a toolbelt of useful classes and functions to be used
6951with python-requests.")
6952 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
6953 (license asl2.0)))
d1deb90b
LF
6954
6955(define-public python-click-threading
6956 (package
6957 (name "python-click-threading")
3d2e0dbc 6958 (version "0.2.0")
d1deb90b
LF
6959 (source (origin
6960 (method url-fetch)
3d2e0dbc
LF
6961 (uri (string-append
6962 "https://pypi.python.org/packages/"
6963 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
6964 "click-threading-" version ".tar.gz"))
d1deb90b
LF
6965 (sha256
6966 (base32
3d2e0dbc 6967 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
6968 (build-system python-build-system)
6969 (propagated-inputs
6970 `(("python-click" ,python-click)))
6971 (synopsis "Utilities for multithreading in Click")
6972 (description "This package provides utilities for multithreading in Click
6973applications.")
6974 (home-page "https://github.com/click-contrib/click-threading")
6975 (license license:expat)))
7b17cab9
LF
6976
6977(define-public python-click-log
6978 (package
6979 (name "python-click-log")
a9da8fec 6980 (version "0.1.3")
7b17cab9
LF
6981 (source (origin
6982 (method url-fetch)
6983 (uri (pypi-uri "click-log" version))
6984 (sha256
6985 (base32
a9da8fec 6986 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
6987 (build-system python-build-system)
6988 (propagated-inputs
6989 `(("python-click" ,python-click)))
6990 (synopsis "Logging for click applications")
6991 (description "This package provides a Python library for logging Click
6992applications.")
6993 (home-page "https://github.com/click-contrib/click-log")
6994 (license license:expat)))
7b3a4ee4
LF
6995
6996(define-public python-apipkg
6997 (package
6998 (name "python-apipkg")
6999 (version "1.4")
7000 (source (origin
7001 (method url-fetch)
7002 (uri (pypi-uri "apipkg" version))
7003 (sha256
7004 (base32
7005 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
7006 (build-system python-build-system)
b43bab3c 7007 (inputs
7b3a4ee4
LF
7008 `(("python-pytest" ,python-pytest)))
7009 (synopsis "Namespace control and lazy-import mechanism")
7010 (description "With apipkg you can control the exported namespace of a Python
7011package and greatly reduce the number of imports for your users. It is a small
7012pure Python module that works on virtually all Python versions.")
7013 (home-page "https://bitbucket.org/hpk42/apipkg")
e08739c3
CAW
7014 (license license:expat)
7015 (properties `((python2-variant . ,(delay python2-apipkg))))))
7016
7017(define-public python2-apipkg
7018 (package
7019 (inherit (package-with-python2
7020 (strip-python2-variant python-apipkg)))
7021 (native-inputs
7022 `(("python2-setuptools" ,python2-setuptools)))))
848964fe
LF
7023
7024(define-public python-execnet
7025 (package
7026 (name "python-execnet")
7027 (version "1.4.1")
7028 (source (origin
7029 (method url-fetch)
7030 (uri (pypi-uri "execnet" version))
7031 (sha256
7032 (base32
7033 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
7034 (build-system python-build-system)
7035 (native-inputs
7036 `(("python-setuptools-scm" ,python-setuptools-scm)))
584d068f 7037 (inputs
848964fe
LF
7038 `(("python-apipkg" ,python-apipkg)))
7039 (synopsis "Rapid multi-Python deployment")
7040 (description "Execnet provides a share-nothing model with
7041channel-send/receive communication for distributing execution across many
7042Python interpreters across version, platform and network barriers. It has a
7043minimal and fast API targetting the following uses:
7044@enumerate
7045@item distribute tasks to (many) local or remote CPUs
7046@item write and deploy hybrid multi-process applications
7047@item write scripts to administer multiple environments
7048@end enumerate")
7049 (home-page "http://codespeak.net/execnet/")
16c84f90
CAW
7050 (license license:expat)
7051 (properties `((python2-variant . ,(delay python2-execnet))))))
7052
7053(define-public python2-execnet
7054 (let ((execnet (package-with-python2
7055 (strip-python2-variant python-execnet))))
7056 (package
7057 (inherit execnet)
7058 (native-inputs
7059 `(("python2-setuptools" ,python2-setuptools)
7060 ,@(package-native-inputs execnet))))))
6720dbb4
LF
7061
7062;;; The software provided by this package was integrated into pytest 2.8.
7063(define-public python-pytest-cache
7064 (package
7065 (name "python-pytest-cache")
7066 (version "1.0")
7067 (source (origin
7068 (method url-fetch)
7069 (uri (pypi-uri "pytest-cache" version))
7070 (sha256
7071 (base32
7072 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
7073 (build-system python-build-system)
630d938f
EF
7074 (inputs
7075 `(("python-apipkg" ,python-apipkg)
7076 ("python-execnet" ,python-execnet)
7077 ("python-py" ,python-py)
7078 ("python-pytest" ,python-pytest)))
6720dbb4
LF
7079 (synopsis "Py.test plugin with mechanisms for caching across test runs")
7080 (description "The pytest-cache plugin provides tools to rerun failures from
7081the last py.test invocation.")
7082 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
0adc21c2
EF
7083 (license license:expat)
7084 (properties `((python2-variant . ,(delay python2-pytest-cache))))))
7085
7086(define-public python2-pytest-cache
7087 (let ((pytest-cache (package-with-python2
7088 (strip-python2-variant python-pytest-cache))))
7089 (package
7090 (inherit pytest-cache)
7091 (native-inputs
7092 `(("python2-setuptools" ,python2-setuptools)
7093 ,@(package-native-inputs pytest-cache))))))
d7e729fe
LF
7094
7095(define-public python-pytest-localserver
7096 (package
7097 (name "python-pytest-localserver")
29f20168 7098 (version "0.3.5")
d7e729fe
LF
7099 (source (origin
7100 (method url-fetch)
29f20168 7101 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
7102 (sha256
7103 (base32
29f20168 7104 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
7105 (build-system python-build-system)
7106 (arguments
7107 `(#:phases (modify-phases %standard-phases
7108 (replace 'check
7109 (lambda _
7110 (zero? (system* "py.test" "--genscript=runtests.py"))
7111 (zero? (system* "py.test")))))))
7112 (native-inputs
d7e729fe
LF
7113 `(("python-pytest" ,python-pytest)
7114 ("python-requests" ,python-requests)
9ba40f05
EF
7115 ("python-six" ,python-six)))
7116 (inputs
7117 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
7118 (synopsis "Py.test plugin to test server connections locally")
7119 (description "Pytest-localserver is a plugin for the pytest testing
7120framework which enables you to test server connections locally.")
7121 (home-page "https://pypi.python.org/pypi/pytest-localserver")
7122 (license license:expat)))
28cecbb7
LF
7123
7124(define-public python-wsgi-intercept
7125 (package
7126 (name "python-wsgi-intercept")
909fbd2b 7127 (version "1.2.2")
28cecbb7
LF
7128 (source (origin
7129 (method url-fetch)
909fbd2b
LF
7130 (uri (string-append
7131 "https://pypi.python.org/packages/"
7132 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
7133 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
7134 (sha256
7135 (base32
909fbd2b 7136 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7
LF
7137 (build-system python-build-system)
7138 (native-inputs
9d813ec1
EF
7139 `(("python-pytest" ,python-pytest)
7140 ("python-six" ,python-six)))
28cecbb7
LF
7141 (propagated-inputs
7142 `(("python-httplib2" ,python-httplib2)
7143 ("python-requests" ,python-requests)))
7144 (synopsis "Puts a WSGI application in place of a real URI for testing")
7145 (description "Wsgi_intercept installs a WSGI application in place of a real
7146URI for testing. Testing a WSGI application normally involves starting a
7147server at a local host and port, then pointing your test code to that address.
7148Instead, this library lets you intercept calls to any specific host/port
7149combination and redirect them into a WSGI application importable by your test
7150program. Thus, you can avoid spawning multiple processes or threads to test
7151your Web app.")
7152 (home-page "https://github.com/cdent/wsgi-intercept")
7153 (license license:expat)))
89b8a551
LF
7154
7155(define-public python-pytest-xprocess
7156 (package
7157 (name "python-pytest-xprocess")
7158 (version "0.9.1")
7159 (source (origin
7160 (method url-fetch)
7161 (uri (pypi-uri "pytest-xprocess" version))
7162 (sha256
7163 (base32
7164 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
7165 (build-system python-build-system)
7166 (propagated-inputs
7167 `(("python-pytest" ,python-pytest)
7168 ("python-pytest-cache" ,python-pytest-cache)
7169 ("python-psutil" ,python-psutil)))
7170 (synopsis "Pytest plugin to manage external processes across test runs")
7171 (description "Pytest-xprocess is an experimental py.test plugin for managing
7172processes across test runs.")
7173 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
7174 (license license:expat)))
5c299bf0
LF
7175
7176(define-public python-icalendar
7177 (package
7178 (name "python-icalendar")
7179 (version "3.9.1")
7180 (source (origin
7181 (method url-fetch)
7182 (uri (pypi-uri "icalendar" version))
7183 (sha256
7184 (base32
7185 "0fhrczdj3jxy5bvswphp3vys7vwv5c9bpwg7asykqwa3z6253q6q"))))
7186 (build-system python-build-system)
7187 (propagated-inputs
7188 `(("python-dateutil-2" ,python-dateutil-2)
7189 ("python-pytz" ,python-pytz)))
7190 (synopsis "Python library for parsing iCalendar files")
7191 (description "The icalendar package is a parser/generator of iCalendar
7192files for use with Python.")
7193 (home-page "https://github.com/collective/icalendar")
7194 (license bsd-2)))
6bbbb53e
LF
7195
7196(define-public python-sphinxcontrib-newsfeed
7197 (package
7198 (name "python-sphinxcontrib-newsfeed")
7199 (version "0.1.4")
7200 (source (origin
7201 (method url-fetch)
7202 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
7203 (sha256
7204 (base32
7205 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
7206 (build-system python-build-system)
7207 (propagated-inputs
7208 `(("python-docutils" ,python-docutils)
7209 ("python-sphinx" ,python-sphinx)))
7210 (synopsis "News Feed extension for Sphinx")
7211 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
7212Blog, News or Announcements section to a Sphinx website.")
7213 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
7214 (license bsd-2)))
2216e15c
SB
7215
7216(define-public python-args
7217 (package
7218 (name "python-args")
7219 (version "0.1.0")
7220 (source (origin
7221 (method url-fetch)
7222 (uri (pypi-uri "args" version))
7223 (sha256
7224 (base32
7225 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
7226 (build-system python-build-system)
7227 (inputs
7228 `(("python-setuptools" ,python-setuptools)))
7229 (home-page "https://github.com/kennethreitz/args")
7230 (synopsis "Command-line argument parser")
7231 (description
7232 "This library provides a Python module to parse command-line arguments.")
7233 (license bsd-3)))
7234
7235(define-public python2-args
7236 (package-with-python2 python-args))
c06a3de9
SB
7237
7238(define-public python-clint
7239 (package
7240 (name "python-clint")
7241 (version "0.5.1")
7242 (source (origin
7243 (method url-fetch)
7244 (uri (pypi-uri "clint" version))
7245 (sha256
7246 (base32
7247 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
7248 (build-system python-build-system)
7249 (inputs
7250 `(("python-args" ,python-args)
7251 ("python-setuptools" ,python-setuptools)))
7252 (home-page "https://github.com/kennethreitz/clint")
7253 (synopsis "Command-line interface tools")
7254 (description
7255 "Clint is a Python module filled with a set of tools for developing
7256command-line applications, including tools for colored and indented
7257output, progress bar display, and pipes.")
7258 (license isc)))
7259
7260(define-public python2-clint
7261 (package-with-python2 python-clint))
4ecdeef8
SB
7262
7263(define-public python-astor
7264 (package
7265 (name "python-astor")
7266 (version "0.5")
7267 (source (origin
7268 (method url-fetch)
7269 (uri (pypi-uri "astor" version))
7270 (sha256
7271 (base32
7272 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
7273 (build-system python-build-system)
7274 (inputs
7275 `(("python-setuptools" ,python-setuptools)))
7276 (home-page "https://github.com/berkerpeksag/astor")
7277 (synopsis "Read and write Python ASTs")
7278 (description
7279 "Astor is designed to allow easy manipulation of Python source via the
7280Abstract Syntax Tree.")
7281 (license bsd-3)))
7282
7283(define-public python2-astor
7284 (package-with-python2 python-astor))
e224b7d0
SB
7285
7286(define-public python-rply
7287 (package
7288 (name "python-rply")
7289 (version "0.7.4")
7290 (source (origin
7291 (method url-fetch)
7292 (uri (pypi-uri "rply" version))
7293 (sha256
7294 (base32
7295 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
7296 (build-system python-build-system)
7297 (inputs
7298 `(("python-appdirs" ,python-appdirs)
7299 ("python-setuptools" ,python-setuptools)))
7300 (home-page "https://github.com/alex/rply")
7301 (synopsis "Parser generator for Python")
7302 (description
7303 "This package provides a pure Python based parser generator, that also
7304works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
7305with a new public API, and RPython support.")
7306 (license bsd-3)))
7307
7308(define-public python2-rply
7309 (package-with-python2 python-rply))
c3e919d7
SB
7310
7311(define-public python-hy
7312 (package
7313 (name "python-hy")
7314 (version "0.11.1")
7315 (source (origin
7316 (method url-fetch)
7317 (uri (pypi-uri "hy" version))
7318 (sha256
7319 (base32
7320 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
7321 (build-system python-build-system)
7322 (inputs
7323 `(("python-astor" ,python-astor)
7324 ("python-clint" ,python-clint)
7325 ("python-rply" ,python-rply)
7326 ("python-setuptools" ,python-setuptools)))
7327 (home-page "http://hylang.org/")
7328 (synopsis "Lisp frontend to Python")
7329 (description
7330 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
7331its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
7332Python at your fingertips, in Lisp form.")
7333 (license license:expat)))
7334
7335(define-public python2-hy
7336 (package-with-python2 python-hy))
7a5b944e 7337
81f7f297
EF
7338(define-public python-rauth
7339 (package
7340 (name "python-rauth")
7341 (version "0.7.2")
7342 (source
7343 (origin
7344 (method url-fetch)
7345 (uri (pypi-uri "rauth" version))
7346 (sha256
7347 (base32
7348 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
7349 (build-system python-build-system)
7350 (arguments
7351 `(#:test-target "check"))
0848d8d3 7352 (inputs
81f7f297
EF
7353 `(("python-requests" ,python-requests)))
7354 (home-page "https://github.com/litl/rauth")
7355 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
7356 (description
7357 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
7358provides service wrappers for convenient connection initialization and
7359authenticated session objects providing things like keep-alive.")
0848d8d3
EF
7360 (license license:expat)
7361 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
7362
7363(define-public python2-rauth
0848d8d3
EF
7364 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
7365 (package
7366 (inherit base)
7367 (native-inputs `(("python2-setuptools" ,python2-setuptools)
7368 ("python2-unittest2" ,python2-unittest2)
7369 ,@(package-native-inputs base))))))
81f7f297 7370
1abe448d
EF
7371(define-public python2-functools32
7372 (package
7373 (name "python2-functools32")
7374 (version "3.2.3-2")
7375 (source
7376 (origin
7377 (method url-fetch)
7378 (uri (pypi-uri "functools32" version))
7379 (sha256
7380 (base32
7381 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
7382 (build-system python-build-system)
7383 (arguments
7384 `(#:python ,python-2
7385 #:tests? #f)) ; no test target
7386 (native-inputs
7387 `(("python2-setuptools" ,python2-setuptools)))
7388 (home-page "https://github.com/MiCHiLU/python-functools32")
7389 (synopsis
7390 "Backport of the functools module from Python 3.2.3")
7391 (description
7392 "This package is a backport of the @code{functools} module from Python
73933.2.3 for use with older versions of Python and PyPy.")
7394 (license license:expat)))
7395
877889f3 7396(define-public python2-futures
7a5b944e 7397 (package
877889f3 7398 (name "python2-futures")
7a5b944e
EF
7399 (version "3.0.3")
7400 (source
7401 (origin
7402 (method url-fetch)
7403 (uri (pypi-uri "futures" version))
7404 (sha256
7405 (base32
7406 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
7407 (build-system python-build-system)
877889f3 7408 (arguments `(#:python ,python-2))
7a5b944e 7409 (native-inputs
877889f3 7410 `(("python2-setuptools" ,python2-setuptools)))
7a5b944e
EF
7411 (home-page "https://github.com/agronholm/pythonfutures")
7412 (synopsis
7413 "Backport of the concurrent.futures package from Python 3.2")
7414 (description
7415 "The concurrent.futures module provides a high-level interface for
7416asynchronously executing callables. This package backports the
7417concurrent.futures package from Python 3.2")
7418 (license bsd-3)))
7419
c18f6368
EF
7420(define-public python-urllib3
7421 (package
7422 (name "python-urllib3")
7423 (version "1.13.1")
7424 (source
7425 (origin
7426 (method url-fetch)
7427 (uri (pypi-uri "urllib3" version))
7428 (sha256
7429 (base32
7430 "10rrbr6c6k7j5dvfsyj4b2gsgxg9gggnn708qixf6ll57xqivfkf"))))
7431 (build-system python-build-system)
7432 (arguments `(#:tests? #f))
7433 (native-inputs
7434 `(("python-setuptools" ,python-setuptools)
7435 ;; some packages for tests
7436 ("python-nose" ,python-nose)
7437 ("python-mock" ,python-mock)
7438 ("python-tornado" ,python-tornado)))
7439 (propagated-inputs
7440 `(;; packages for https security
7441 ("python-certifi" ,python-certifi)
7442 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
7443 ("python-pyasn1" ,python-pyasn1)
7444 ("python-pyopenssl" ,python-pyopenssl)))
7445 (home-page "http://urllib3.readthedocs.org/")
7446 (synopsis "HTTP library with thread-safe connection pooling")
7447 (description
7448 "Urllib3 supports features left out of urllib and urllib2 libraries. It
7449can reuse the same socket connection for multiple requests, it can POST files,
7450supports url redirection and retries, and also gzip and deflate decoding.")
7451 (license license:expat)))
7452
7453(define-public python2-urllib3
7454 (package-with-python2 python-urllib3))
2b2f2fc1
DT
7455
7456(define-public python-colorama
7457 (package
7458 (name "python-colorama")
7459 (version "0.3.3")
7460 (source
7461 (origin
7462 (method url-fetch)
7463 (uri (pypi-uri "colorama" version))
7464 (sha256
7465 (base32
7466 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
7467 (build-system python-build-system)
7468 (inputs
7469 `(("python-setuptools" ,python-setuptools)))
7470 (synopsis "colored terminal text rendering for Python")
7471 (description "Colorama is a Python library for rendering colored terminal
7472text.")
7473 (home-page "https://pypi.python.org/pypi/colorama")
7474 (license bsd-3)))
7475
7476(define-public python2-colorama
7477 (package-with-python2 python-colorama))
f5bcec6e
DT
7478
7479(define-public python-rsa
7480 (package
7481 (name "python-rsa")
7482 (version "3.2")
7483 (source
7484 (origin
7485 (method url-fetch)
7486 (uri (pypi-uri "rsa" version))
7487 (sha256
7488 (base32
7489 "0xwp929g7lvb1sghxfpqlxvgg96qcwqdbhh27sjplx30n3xp3wrh"))))
7490 (build-system python-build-system)
7491 (inputs
7492 `(("python-pyasn1" ,python-pyasn1)
7493 ("python-setuptools" ,python-setuptools)))
7494 (synopsis "Pure-Python RSA implementation")
7495 (description "Python-RSA is a pure-Python RSA implementation. It supports
7496encryption and decryption, signing and verifying signatures, and key
7497generation according to PKCS#1 version 1.5. It can be used as a Python
7498library as well as on the command line.")
7499 (home-page "http://stuvel.eu/rsa")
7500 (license asl2.0)))
7501
7502(define-public python2-rsa
7503 (package-with-python2 python-rsa))
c0aacfa5
DT
7504
7505(define-public python-pluggy
7506 (package
7507 (name "python-pluggy")
7508 (version "0.3.1")
7509 (source
7510 (origin
7511 (method url-fetch)
7512 (uri (pypi-uri "pluggy" version))
7513 (sha256
7514 (base32
7515 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
7516 (build-system python-build-system)
7517 (inputs
7518 `(("python-setuptools" ,python-setuptools)))
7519 (synopsis "Plugin and hook calling mechanism for Python")
7520 (description "Pluggy is an extraction of the plugin manager as used by
7521Pytest but stripped of Pytest specific details.")
7522 (home-page "https://pypi.python.org/pypi/pluggy")
7523 (license license:expat)))
7524
7525(define-public python2-pluggy
7526 (package-with-python2 python-pluggy))
a4af21ca
DT
7527
7528(define-public python-tox
7529 (package
7530 (name "python-tox")
7531 (version "2.3.1")
7532 (source
7533 (origin
7534 (method url-fetch)
7535 (uri (pypi-uri "tox" version))
7536 (sha256
7537 (base32
7538 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
7539 (build-system python-build-system)
7540 (arguments
7541 ;; FIXME: Tests require a newer version of pytest, but upgrading our
7542 ;; pytest breaks other packages.
7543 '(#:tests? #f))
7544 (inputs
7545 `(("python-setuptools" ,python-setuptools)
7546 ("python-pluggy" ,python-pluggy)
7547 ("python-py" ,python-py)
7548 ("python-virtualenv" ,python-virtualenv)
7549 ("python-pytest" ,python-pytest)))
7550 (home-page "http://tox.testrun.org/")
7551 (synopsis "Virtualenv-based automation of test activities")
7552 (description "Tox is a generic virtualenv management and test command line
7553tool. It can be used to check that a package installs correctly with
7554different Python versions and interpreters, or run tests in each type of
7555supported environment, or act as a frontend to continuous integration
7556servers.")
7557 (license license:expat)))
7558
7559(define-public python2-tox
7560 (package-with-python2 python-tox))
ba9da248
DT
7561
7562(define-public python-jmespath
7563 (package
7564 (name "python-jmespath")
7565 (version "0.9.0")
7566 (source
7567 (origin
7568 (method url-fetch)
7569 (uri (pypi-uri "jmespath" version))
7570 (sha256
7571 (base32
7572 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
7573 (build-system python-build-system)
7574 (inputs
7575 `(("python-setuptools" ,python-setuptools)))
7576 (synopsis "JSON Matching Expressions")
7577 (description "JMESPath (pronounced “james path”) is a Python library that
7578allows one to declaratively specify how to extract elements from a JSON
7579document.")
7580 (home-page "https://github.com/jmespath/jmespath.py")
7581 (license license:expat)))
7582
7583(define-public python2-jmespath
7584 (package-with-python2 python-jmespath))
935fcd5c
DT
7585
7586(define-public python-botocore
7587 (package
7588 (name "python-botocore")
7589 (version "1.3.17")
7590 (source
7591 (origin
7592 (method url-fetch)
7593 (uri (pypi-uri "botocore" version))
7594 (sha256
7595 (base32
7596 "08vpvdixx1c1lfv6vzjig68bpiir7wfyhzf49ysxgvhbprg5ra0w"))))
7597 (build-system python-build-system)
7598 (inputs
7599 `(("python-dateutil" ,python-dateutil-2)
7600 ("python-docutils" ,python-docutils)
7601 ("python-mock" ,python-mock)
7602 ("python-nose" ,python-nose)
7603 ("python-setuptools" ,python-setuptools)
7604 ("python-tox" ,python-tox)
7605 ("python-wheel" ,python-wheel)
7606 ("python-jmespath" ,python-jmespath)))
7607 (home-page "https://github.com/boto/botocore")
7608 (synopsis "Low-level interface to AWS")
7609 (description "Botocore is a Python library that provides a low-level
7610interface to the Amazon Web Services (AWS) API.")
7611 (license asl2.0)))
7612
7613(define-public python2-botocore
7614 (package-with-python2 python-botocore))
f861b8b8
DT
7615
7616(define-public awscli
7617 (package
7618 (name "awscli")
7619 (version "1.9.17")
7620 (source
7621 (origin
7622 (method url-fetch)
7623 (uri (string-append
7624 "https://pypi.python.org/packages/source/a/awscli/awscli-"
7625 version ".tar.gz"))
7626 (sha256
7627 (base32
7628 "1nj7jqvlpq57hfhby1njsbf8303gapa3njc4dramr6p3ffzvfi2i"))))
7629 (build-system python-build-system)
7630 (inputs
7631 `(("python-colorama" ,python-colorama)
7632 ("python-docutils" ,python-docutils)
7633 ("python-mock" ,python-mock)
7634 ("python-nose" ,python-nose)
7635 ("python-rsa" ,python-rsa)
7636 ("python-setuptools" ,python-setuptools)
7637 ("python-sphinx" ,python-sphinx)
7638 ("python-tox" ,python-tox)
7639 ("python-wheel" ,python-wheel)
7640 ("python-botocore" ,python-botocore)))
7641 (home-page "http://aws.amazon.com/cli/")
7642 (synopsis "Command line client for AWS")
7643 (description "AWS CLI provides a unified command line interface to the
7644Amazon Web Services (AWS) API.")
7645 (license asl2.0)))
6a44697d
LF
7646
7647(define-public python-hypothesis
7648 (package
7649 (name "python-hypothesis")
bea6d94d 7650 (version "3.1.0")
6a44697d
LF
7651 (source (origin
7652 (method url-fetch)
7653 (uri (pypi-uri "hypothesis" version))
7654 (sha256
7655 (base32
bea6d94d 7656 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 7657 (build-system python-build-system)
6a44697d
LF
7658 (propagated-inputs
7659 `(("python-flake8" ,python-flake8)
7660 ("python-pytest" ,python-pytest)))
7661 (synopsis "Library for property based testing")
7662 (description "Hypothesis is a library for testing your Python code against a
7663much larger range of examples than you would ever want to write by hand. It’s
7664based on the Haskell library, Quickcheck, and is designed to integrate
7665seamlessly into your existing Python unit testing work flow.")
7666 (home-page "https://github.com/DRMacIver/hypothesis")
6f068e08
EF
7667 (license mpl2.0)
7668 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
7669
7670(define-public python2-hypothesis
6f068e08
EF
7671 (let ((hypothesis (package-with-python2
7672 (strip-python2-variant python-hypothesis))))
7673 (package (inherit hypothesis)
7674 (native-inputs
7675 `(("python2-enum34" ,python2-enum34)
7676 ("python2-setuptools" ,python2-setuptools))))))
7517e73c
LF
7677
7678(define-public python-pytest-subtesthack
7679 (package
7680 (name "python-pytest-subtesthack")
7681 (version "0.1.1")
7682 (source (origin
7683 (method url-fetch)
7684 (uri (pypi-uri "pytest-subtesthack" version))
7685 (sha256
7686 (base32
7687 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
7688 (build-system python-build-system)
7689 (native-inputs
7690 `(;; setuptools required for python-2 variant
7691 ("python-setuptools" ,python-setuptools)))
7692 (propagated-inputs
7693 `(("python-pytest" ,python-pytest)))
7694 (synopsis "Set-up and tear-down fixtures for unit tests")
7695 (description "This plugin allows you to set up and tear down fixtures within
7696unit test functions that use @code{py.test}. This is useful for using
7697@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
7698function multiple times, without setting up or tearing down fixture state as is
7699normally the case.")
7700 (home-page "https://github.com/untitaker/pytest-subtesthack/")
7701 (license unlicense)))
7702
7703(define-public python2-pytest-subtesthack
7704 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
7705
7706(define-public python2-xdo
7707 (package
7708 (name "python2-xdo")
7709 (version "0.2")
7710 (source (origin
7711 (method url-fetch)
7712 (uri (string-append
7713 "http://http.debian.net/debian/pool/main/p/python-xdo/"
7714 "python-xdo_" version ".orig.tar.gz"))
7715 (sha256
7716 (base32
7717 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
7718 (build-system python-build-system)
7719 (arguments
7720 `(#:python ,python-2
7721 #:tests? #f)) ; no tests provided
7722 (inputs
7723 `(("xdotool" ,xdotool)
7724 ("libX11" ,libx11)))
7725 (home-page "https://tracker.debian.org/pkg/python-xdo")
7726 (synopsis "Python library for simulating X11 keyboard/mouse input")
7727 (description "Provides bindings to libxdo for manipulating X11 via simulated
7728input. (Note that this is mostly a legacy library; you may wish to look at
7729python-xdo for newer bindings.)")
7730 (license bsd-3)))
7731
cb34dc6c
CAW
7732(define-public python-wtforms
7733 (package
7734 (name "python-wtforms")
7735 (version "2.1")
7736 (source
7737 (origin
7738 (method url-fetch)
7739 (uri (pypi-uri "WTForms" version ".zip"))
7740 (sha256
7741 (base32
7742 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
7743 (build-system python-build-system)
7744 (native-inputs
7745 `(("unzip" ,unzip)))
7746 (home-page "http://wtforms.simplecodes.com/")
7747 (synopsis
7748 "Form validation and rendering library for Python web development")
7749 (description
7750 "WTForms is a flexible forms validation and rendering library
7751for Python web development. It is very similar to the web form API
7752available in Django, but is a standalone package.")
7753 (license bsd-3)
7754 (properties `((python2-variant . ,(delay python2-wtforms))))))
7755
7756(define-public python2-wtforms
7757 (package
7758 (inherit (package-with-python2
7759 (strip-python2-variant python-wtforms)))
7760 (inputs `(("python2-setuptools" ,python2-setuptools)))))
50aaec25
DT
7761
7762(define-public python-mako
7763 (package
7764 (name "python-mako")
7765 (version "1.0.3")
7766 (source
7767 (origin
7768 (method url-fetch)
7769 (uri (pypi-uri "Mako" version))
7770 (sha256
7771 (base32
7772 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
7773 (build-system python-build-system)
7774 (native-inputs
7775 `(("python-markupsafe" ,python-markupsafe)
7776 ("python-mock" ,python-mock)
7777 ("python-nose" ,python-nose)))
7778 (home-page "http://www.makotemplates.org/")
7779 (synopsis "Templating language for Python")
7780 (description "Mako is a templating language for Python that compiles
7781templates into Python modules.")
7782 (license license:expat)
7783 (properties `((python2-variant . ,(delay python2-mako))))))
7784
7785(define-public python2-mako
7786 (let ((base (package-with-python2
7787 (strip-python2-variant python-mako))))
7788 (package
7789 (inherit base)
7790 (native-inputs
7791 (cons `("python2-setuptools" ,python2-setuptools)
7792 (package-native-inputs base))))))
ae00a41f
CAW
7793
7794(define-public python-waitress
7795 (package
7796 (name "python-waitress")
7797 (version "0.8.10")
7798 (source
7799 (origin
7800 (method url-fetch)
7801 (uri (pypi-uri "waitress" version))
7802 (sha256
7803 (base32
7804 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
7805 (build-system python-build-system)
7806 (home-page "https://github.com/Pylons/waitress")
7807 (synopsis "Waitress WSGI server")
7808 (description "Waitress is meant to be a production-quality pure-Python WSGI
7809server with very acceptable performance.")
7810 (license zpl2.1)
7811 (properties `((python2-variant . ,(delay python2-waitress))))))
7812
7813(define-public python2-waitress
7814 (package
7815 (inherit (package-with-python2
7816 (strip-python2-variant python-waitress)))
7817 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
778a284b
CAW
7818
7819(define-public python-wsgiproxy2
7820 (package
7821 (name "python-wsgiproxy2")
7822 (version "0.4.2")
7823 (source
7824 (origin
7825 (method url-fetch)
7826 (uri (pypi-uri "WSGIProxy2" version ".zip"))
7827 (sha256
7828 (base32
7829 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
7830 (build-system python-build-system)
7831 (native-inputs
7832 `(("unzip" ,unzip)
7833 ("python-nose" ,python-nose)
7834 ("python-coverage" ,python-coverage)))
7835 (propagated-inputs
7836 `(("python-six" ,python-six)
7837 ("python-webob" ,python-webob)))
7838 (home-page
7839 "https://github.com/gawel/WSGIProxy2/")
7840 (synopsis "WSGI Proxy with various http client backends")
7841 (description "WSGI turns HTTP requests into WSGI function calls.
7842WSGIProxy turns WSGI function calls into HTTP requests.
7843It also includes code to sign requests and pass private data,
7844and to spawn subprocesses to handle requests.")
7845 (license license:expat)
7846 (properties `((python2-variant . ,(delay python2-wsgiproxy2))))))
7847
7848(define-public python2-wsgiproxy2
7849 (let ((wsgiproxy2 (package-with-python2
7850 (strip-python2-variant python-wsgiproxy2))))
7851 (package
7852 (inherit wsgiproxy2)
7853 (inputs `(("python2-setuptools" ,python2-setuptools)
7854 ,@(package-inputs wsgiproxy2))))))
bb7518b1
CAW
7855
7856(define-public python-pastedeploy
7857 (package
7858 (name "python-pastedeploy")
7859 (version "1.5.2")
7860 (source
7861 (origin
7862 (method url-fetch)
7863 (uri (pypi-uri "PasteDeploy" version))
7864 (sha256
7865 (base32
7866 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
7867 (build-system python-build-system)
7868 (native-inputs
7869 `(("python-nose" ,python-nose)))
7870 (propagated-inputs
7871 ;; This package uses pkg_resources, part of setuptools, during runtime,
7872 ;; hence why not a native-input.
7873 `(("python-setuptools" ,python-setuptools)))
7874 (home-page "http://pythonpaste.org/deploy/")
7875 (synopsis
7876 "Load, configure, and compose WSGI applications and servers")
7877 (description
7878 "This tool provides code to load WSGI applications and servers from URIs;
7879these URIs can refer to Python Eggs for INI-style configuration files. Paste
7880Script provides commands to serve applications based on this configuration
7881file.")
7882 (license license:expat)))
7883
7884(define-public python2-pastedeploy
7885 (package-with-python2 python-pastedeploy))
1cf53652 7886
c4a7904c
CAW
7887(define-public python-paste
7888 (package
7889 (name "python-paste")
7890 (version "2.0.2")
7891 (source
7892 (origin
7893 (method url-fetch)
7894 (uri (pypi-uri "Paste" version))
7895 (sha256
7896 (base32
7897 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
fc1adab1
AK
7898 (patches (search-patches "python-paste-remove-website-test.patch"
7899 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
7900 (build-system python-build-system)
7901 (native-inputs
7902 `(("python-nose" ,python-nose)))
7903 (propagated-inputs
7904 `(;; Uses pkg_resources provided by setuptools internally.
7905 ("python-setuptools" ,python-setuptools)
7906 ("python-six" ,python-six)))
7907 (arguments
7908 '(;; Tests don't pass on Python 3, but work fine on Python 2.
7909 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
7910 ;; but is usable enough for the minimal amount it's used in MediaGoblin
7911 ;; still... things should be better by the next Paste release.)
7912 #:tests? #f))
7913 (home-page "http://pythonpaste.org")
7914 (synopsis
7915 "Python web development tools, focusing on WSGI")
7916 (description
7917 "Paste provides a variety of web development tools and middleware which
7918can be nested together to build web applications. Paste's design closely
7919follows ideas flowing from WSGI (Web Standard Gateway Interface).")
7920 (license license:expat)
7921 (properties `((python2-variant . ,(delay python2-paste))))))
7922
7923(define-public python2-paste
7924 (let ((paste (package-with-python2
7925 (strip-python2-variant python-paste))))
7926 (package
7927 (inherit paste)
7928 (arguments
7929 ;; Tests are back for Python 2!
7930 `(#:tests? #t
7931 ,@(package-arguments paste))))))
7932
a8f20f63
CAW
7933(define-public python-pastescript
7934 (package
7935 (name "python-pastescript")
7936 (version "2.0.2")
7937 (source
7938 (origin
7939 (method url-fetch)
7940 (uri (pypi-uri "PasteScript" version))
7941 (sha256
7942 (base32
7943 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
7944 (build-system python-build-system)
7945 (native-inputs
7946 `(("python-nose" ,python-nose)))
7947 (propagated-inputs
7948 `(;; Uses pkg_resources provided by setuptools internally.
7949 ("python-setuptools" ,python-setuptools)
7950 ("python-paste" ,python-paste)
7951 ("python-pastedeploy" ,python-pastedeploy)))
7952 (home-page "http://pythonpaste.org/script/")
7953 (arguments
7954 '(;; Unfortunately, this requires the latest unittest2,
7955 ;; but that requires traceback2 which requires linecache2 which requires
7956 ;; unittest2. So we're skipping tests for now.
7957 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
7958 ;; so in theory we could get around this situation somehow.)
7959 #:tests? #f))
7960 (synopsis
7961 "Pluggable command line tool for serving web applications and more")
7962 (description
7963 "PasteScript is a plugin-friendly command line tool which provides a
7964variety of features, from launching web applications to bootstrapping project
7965layouts.")
7966 (license license:expat)))
7967
7968(define-public python2-pastescript
7969 (package-with-python2 python-pastescript))
7970
1cf53652
CAW
7971(define-public python-pyquery
7972 (package
7973 (name "python-pyquery")
aab76e80 7974 (version "1.2.13")
1cf53652
CAW
7975 (source
7976 (origin
7977 (method url-fetch)
7978 (uri (pypi-uri "pyquery" version))
7979 (sha256
7980 (base32
aab76e80 7981 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
1cf53652
CAW
7982 (build-system python-build-system)
7983 (propagated-inputs
7984 `(("python-lxml" ,python-lxml)
7985 ("python-cssselect" ,python-cssselect)))
7986 (home-page "https://github.com/gawel/pyquery")
7987 (synopsis "Make jQuery-like queries on xml documents")
7988 (description "pyquery allows you to make jQuery queries on xml documents.
7989The API is as much as possible the similar to jQuery. pyquery uses lxml for
7990fast xml and html manipulation.")
7991 (license bsd-3)
7992 (properties `((python2-variant . ,(delay python2-pyquery))))))
7993
7994(define-public python2-pyquery
7995 (let ((pyquery (package-with-python2
7996 (strip-python2-variant python-pyquery))))
7997 (package
7998 (inherit pyquery)
7999 (native-inputs `(("python2-setuptools" ,python2-setuptools))))))
aa6313d6
CAW
8000
8001(define-public python-webtest
8002 (package
8003 (name "python-webtest")
8004 (version "2.0.20")
8005 (source
8006 (origin
8007 (method url-fetch)
8008 (uri (pypi-uri "WebTest" version))
8009 (sha256
8010 (base32
8011 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
8012 (build-system python-build-system)
8013 (arguments
8014 `(;; Unfortunately we have to disable tests!
8015 ;; This release of WebTest is pinned to python-nose < 1.3,
8016 ;; but older versions of python-nose are plagued with the following
8017 ;; bug(s), which rears its ugly head during test execution:
8018 ;; https://github.com/nose-devs/nose/issues/759
8019 ;; https://github.com/nose-devs/nose/pull/811
8020 #:tests? #f))
8021 ;; Commented out code is no good, but in this case, once tests
8022 ;; are ready to be enabled again, we should put the following
8023 ;; in place:
8024 ;; (native-inputs
8025 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
8026 ;; ; but see above comment
8027 ;; ("python-coverage" ,python-coverage)
8028 ;; ("python-mock" ,python-mock)
8029 ;; ("python-pastedeploy" ,python-pastedeploy)
8030 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
8031 ;; ("python-pyquery" ,python-pyquery)))
8032 (propagated-inputs
8033 `(("python-waitress" ,python-waitress)
8034 ("python-webob" ,python-webob)
8035 ("python-six" ,python-six)
8036 ("python-beautifulsoup4" ,python-beautifulsoup4)))
8037 (home-page "http://webtest.pythonpaste.org/")
8038 (synopsis "Helper to test WSGI applications")
8039 (description "Webtest allows you to test your Python web applications
8040without starting an HTTP server. It supports anything that supports the
8041minimum of WSGI.")
8042 (license license:expat)
8043 (properties `((python2-variant . ,(delay python2-webtest))))))
8044
8045(define-public python2-webtest
8046 (let ((webtest (package-with-python2
8047 (strip-python2-variant python-webtest))))
8048 (package
8049 (inherit webtest)
8050 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8051 ,@(package-native-inputs webtest))))))
4cb122cd
CAW
8052
8053(define-public python-anyjson
8054 (package
8055 (name "python-anyjson")
8056 (version "0.3.3")
8057 (source
8058 (origin
8059 (method url-fetch)
8060 (uri (pypi-uri "anyjson" version))
8061 (sha256
8062 (base32
8063 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
8064 (build-system python-build-system)
8065 (arguments
8066 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
8067 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
8068 ;; whatever) so this transformation needs to be done before the tests
8069 ;; can be run. Maybe we could add a build step to transform beforehand
8070 ;; but it could be annoying/difficult.
8071 ;; We can enable tests for the Python 2 version, though, and do below.
8072 #:tests? #f))
8073 (home-page "http://bitbucket.org/runeh/anyjson/")
8074 (synopsis
8075 "Wraps best available JSON implementation in a common interface")
8076 (description
8077 "Anyjson loads whichever is the fastest JSON module installed
8078and provides a uniform API regardless of which JSON implementation is used.")
8079 (license bsd-3)
8080 (properties `((python2-variant . ,(delay python2-anyjson))))))
8081
8082(define-public python2-anyjson
8083 (let ((anyjson (package-with-python2
8084 (strip-python2-variant python-anyjson))))
8085 (package
8086 (inherit anyjson)
8087 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
8088 #:tests? #t
8089 ,@(package-arguments anyjson)))
8090 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8091 ("python2-nose" ,python2-nose))))))
8dfceab7
CAW
8092
8093(define-public python-amqp
8094 (package
8095 (name "python-amqp")
8096 (version "1.4.9")
8097 (source
8098 (origin
8099 (method url-fetch)
8100 (uri (pypi-uri "amqp" version))
8101 (sha256
8102 (base32
8103 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
8104 (build-system python-build-system)
8105 (native-inputs
8106 `(("python-nose" ,python-nose)
8107 ("python-mock" ,python-mock)))
8108 (home-page "http://github.com/celery/py-amqp")
8109 (synopsis
8110 "Low-level AMQP client for Python (fork of amqplib)")
8111 (description
8112 "This is a fork of amqplib which was originally written by Barry Pederson.
8113It is maintained by the Celery project, and used by kombu as a pure python
8114alternative when librabbitmq is not available.")
8115 (license lgpl2.1+)
8116 (properties `((python2-variant . ,(delay python2-amqp))))))
8117
8118(define-public python2-amqp
8119 (let ((amqp (package-with-python2
8120 (strip-python2-variant python-amqp))))
8121 (package
8122 (inherit amqp)
8123 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
8124 ;; unmaintained. Weirdly, does not do this on the python 3
8125 ;; version?
8126 #:tests? #f
8127 ,@(package-arguments amqp)))
8128 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8129 ,@(package-native-inputs amqp))))))
7d387305
CAW
8130
8131(define-public python-kombu
8132 (package
8133 (name "python-kombu")
8134 (version "3.0.33")
8135 (source
8136 (origin
8137 (method url-fetch)
8138 (uri (pypi-uri "kombu" version))
8139 (sha256
8140 (base32
8141 "16brjx2lgwbj2a37d0pjbfb84nvld6irghmqrs3qfncajp51hgc5"))))
8142 (build-system python-build-system)
8143 (native-inputs
8144 `(("python-mock" ,python-mock)
8145 ("python-nose" ,python-nose)))
8146 (propagated-inputs
8147 `(("python-anyjson" ,python-anyjson)
8148 ("python-amqp" ,python-amqp)))
8149 (home-page "http://kombu.readthedocs.org")
8150 (synopsis "Message passing library for Python")
8151 (description "The aim of Kombu is to make messaging in Python as easy as
8152possible by providing an idiomatic high-level interface for the AMQ protocol,
8153and also provide proven and tested solutions to common messaging problems.
8154AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
8155message orientation, queuing, routing, reliability and security, for which the
8156RabbitMQ messaging server is the most popular implementation.")
8157 (license bsd-3)
8158 (properties `((python2-variant . ,(delay python2-kombu))))))
8159
8160(define-public python2-kombu
8161 (let ((kombu (package-with-python2
8162 (strip-python2-variant python-kombu))))
8163 (package
8164 (inherit kombu)
8165 (inputs `(("python2-setuptools" ,python2-setuptools)
8166 ("python2-unittest2" ,python2-unittest2)
8167 ,@(package-inputs kombu))))))
b6f0b9fb
CAW
8168
8169(define-public python-billiard
8170 (package
8171 (name "python-billiard")
8172 (version "3.3.0.22")
8173 (source
8174 (origin
8175 (method url-fetch)
8176 (uri (pypi-uri "billiard" version))
8177 (sha256
8178 (base32
8179 "0zp7h6a58alrb3mwdw61jds07395j4j0mj6iqsb8czrihw9ih5nj"))))
8180 (build-system python-build-system)
8181 (native-inputs
8182 `(("python-nose" ,python-nose)))
8183 (home-page "http://github.com/celery/billiard")
8184 (synopsis
8185 "Python multiprocessing fork with improvements and bugfixes")
8186 (description
8187 "Billiard is a fork of the Python 2.7 multiprocessing package. The
8188multiprocessing package itself is a renamed and updated version of R Oudkerk's
8189pyprocessing package. This standalone variant is intended to be compatible with
8190Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
8191 (license bsd-3)
8192 (properties `((python2-variant . ,(delay python2-billiard))))))
8193
8194(define-public python2-billiard
8195 (let ((billiard (package-with-python2
8196 (strip-python2-variant python-billiard))))
8197 (package
8198 (inherit billiard)
8199 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8200 ("python2-unittest2" ,python2-unittest2)
8201 ("python2-mock" ,python2-mock)
8202 ,@(package-native-inputs billiard))))))
22df6419
CAW
8203
8204(define-public python-celery
8205 (package
8206 (name "python-celery")
8207 (version "3.1.20")
8208 (source
8209 (origin
8210 (method url-fetch)
8211 (uri (pypi-uri "celery" version))
8212 (sha256
8213 (base32
8214 "1md6ywg1s0946qyp8ndnsd677wm0yax933h2sb4m3a4j7lf1jbyh"))))
8215 (build-system python-build-system)
8216 (native-inputs
8217 `(("python-nose" ,python-nose)))
a64cbb6f 8218 (inputs
22df6419 8219 `(("python-pytz" ,python-pytz)
a64cbb6f
EF
8220 ("python-amqp" ,python-amqp)
8221 ("python-anyjson" ,python-anyjson)
22df6419
CAW
8222 ("python-billiard" ,python-billiard)
8223 ("python-kombu" ,python-kombu)))
8224 (home-page "http://celeryproject.org")
8225 (synopsis "Distributed Task Queue")
8226 (description "Celery is an asynchronous task queue/job queue based on
8227distributed message passing. It is focused on real-time operation, but
8228supports scheduling as well. The execution units, called tasks, are executed
8229concurrently on a single or more worker servers using multiprocessing,
8230Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
8231synchronously (wait until ready).")
8232 (license bsd-3)
8233 (properties `((python2-variant . ,(delay python2-celery))))))
8234
8235(define-public python2-celery
8236 (let ((celery (package-with-python2
8237 (strip-python2-variant python-celery))))
8238 (package
8239 (inherit celery)
8240 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8241 ("python2-unittest2" ,python2-unittest2)
8242 ("python2-mock" ,python2-mock)
8243 ,@(package-native-inputs celery))))))
97e32948
CAW
8244
8245(define-public python-translitcodec
8246 (package
8247 (name "python-translitcodec")
8248 (version "0.4.0")
8249 (source
8250 (origin
8251 (method url-fetch)
8252 (uri (pypi-uri "translitcodec" version))
8253 (sha256
8254 (base32
8255 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
8256 (build-system python-build-system)
8257 (arguments
8258 `(#:tests? #f)) ; no tests provided
8259 (home-page
8260 "https://github.com/claudep/translitcodec")
8261 (synopsis
8262 "Unicode to 8-bit charset transliteration codec")
8263 (description
8264 "This package contains codecs for transliterating ISO 10646 texts into
8265best-effort representations using smaller coded character sets (ASCII,
8266ISO 8859, etc.).")
8267 (license license:expat)
8268 (properties `((python2-variant . ,(delay python2-translitcodec))))))
8269
8270(define-public python2-translitcodec
8271 (package
8272 (inherit (package-with-python2
8273 (strip-python2-variant python-translitcodec)))
8274 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0c3b90d4
CAW
8275
8276(define-public python-editor
8277 (package
8278 (name "python-editor")
8279 (version "0.5")
8280 (source
8281 (origin
8282 (method url-fetch)
8283 (uri (pypi-uri "python-editor" version))
8284 (sha256
8285 (base32
8286 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
8287 (build-system python-build-system)
8288 (home-page
8289 "https://github.com/fmoo/python-editor")
8290 (synopsis
8291 "Programmatically open an editor, capture the result")
8292 (description
8293 "python-editor is a library that provides the editor module for
8294programmatically interfacing with your system's $EDITOR.")
8295 (license asl2.0)
8296 (properties `((python2-variant . ,(delay python2-editor))))))
8297
8298(define-public python2-editor
8299 (package
8300 (inherit (package-with-python2
8301 (strip-python2-variant python-editor)))
8302 (inputs `(("python2-setuptools" ,python2-setuptools)))))
3276517c
LF
8303
8304(define-public python-sphinxcontrib-programoutput
8305 (package
8306 (name "python-sphinxcontrib-programoutput")
8307 (version "0.8")
8308 (source (origin
8309 (method url-fetch)
8310 (uri (pypi-uri "sphinxcontrib-programoutput" version))
8311 (sha256
8312 (base32
8313 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
8314 (build-system python-build-system)
8315 (propagated-inputs
8316 `(("python-docutils" ,python-docutils)
8317 ("python-sphinx" ,python-sphinx)))
8318 (synopsis "Sphinx extension to include program output")
8319 (description "A Sphinx extension to literally insert the output of arbitrary
8320commands into documents, helping you to keep your command examples up to date.")
8321 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
8322 (license bsd-2)
8323 (properties `((python2-variant . ,(delay python2-sphinxcontrib-programoutput))))))
8324
8325(define-public python2-sphinxcontrib-programoutput
8326 (package
8327 (inherit (package-with-python2
8328 (strip-python2-variant python-sphinxcontrib-programoutput)))
8329 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
548d7165
LF
8330
8331(define-public python-sphinx-repoze-autointerface
8332 (package
8333 (name "python-sphinx-repoze-autointerface")
328ae341 8334 (version "0.8")
548d7165
LF
8335 (source (origin
8336 (method url-fetch)
8337 (uri (pypi-uri "repoze.sphinx.autointerface" version))
8338 (sha256
8339 (base32
328ae341 8340 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
8341 (build-system python-build-system)
8342 (propagated-inputs
8343 `(("python-docutils" ,python-docutils)
8344 ("python-sphinx" ,python-sphinx)
8345 ("python-zope-interface" ,python-zope-interface)))
8346 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
8347 (description "This package defines an extension for the Sphinx documentation
8348system. The extension allows generation of API documentation by
8349introspection of @code{zope.interface} instances in code.")
8350 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
8351 (license repoze)))
8352
8353(define-public python2-sphinx-repoze-autointerface
8354 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
8355
8356(define-public python-psycopg2
8357 (package
8358 (name "python-psycopg2")
8359 (version "2.6.1")
8360 (source
8361 (origin
8362 (method url-fetch)
8363 (uri (pypi-uri "psycopg2" version))
8364 (sha256
8365 (base32
8366 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
8367 (build-system python-build-system)
8368 (arguments
8369 ;; Tests would require a postgresql database "psycopg2_test"
8370 ;; and a running postgresql database management service.
8371 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
8372 (inputs
8373 `(("postgresql" ,postgresql))) ; libpq
8374 (home-page "http://initd.org/psycopg/")
8375 (synopsis "Python PostgreSQL adapter")
8376 (description
8377 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
8378 (license lgpl3+)
8379 (properties `((python2-variant . ,(delay python2-psycopg2))))))
8380
8381(define-public python2-psycopg2
8382 (package
8383 (inherit (package-with-python2
8384 (strip-python2-variant python-psycopg2)))
8385 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
eed1a61f
LF
8386
8387(define-public python-vobject
8388 (package
8389 (name "python-vobject")
9bed9b15 8390 (version "0.9.2")
eed1a61f
LF
8391 (source (origin
8392 (method url-fetch)
8393 (uri (pypi-uri "vobject" version))
8394 (sha256
8395 (base32
9bed9b15 8396 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f
LF
8397 (build-system python-build-system)
8398 (inputs
8399 `(("python-dateutil-2" ,python-dateutil-2)
8400 ("python-pyicu" ,python-pyicu)))
8401 (synopsis "Parse and generate vCard and vCalendar files")
8402 (description "Vobject is intended to be a full featured Python package for
8403parsing and generating vCard and vCalendar files. Currently, iCalendar files
8404are supported and well tested. vCard 3.0 files are supported, and all data
8405should be imported, but only a few components are understood in a sophisticated
8406way.")
8407 (home-page "http://eventable.github.io/vobject/")
8408 (license asl2.0)
8409 (properties `((python2-variant . ,(delay python2-vobject))))))
8410
8411(define-public python2-vobject
8412 (package
8413 (inherit (package-with-python2
8414 (strip-python2-variant python-vobject)))
8415 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cedac813
LF
8416
8417(define-public python-munkres
8418 (package
8419 (name "python-munkres")
8420 (version "1.0.7")
8421 (source (origin
8422 (method url-fetch)
8423 (uri (pypi-uri "munkres" version))
8424 (sha256
8425 (base32
8426 "1i6nf45i0kkzdx6k70giybsqxz4dxsjbrkrfqgjd7znfkf25sjik"))))
8427 (build-system python-build-system)
8428 (arguments
8429 '(#:tests? #f)) ; no test suite
8430 (home-page "http://software.clapper.org/munkres/")
8431 (synopsis "Implementation of the Munkres algorithm")
8432 (description "The Munkres module provides an implementation of the Munkres
8433algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
8434useful for solving the Assignment Problem.")
8435 (license bsd-3)))
8436
8437(define-public python2-munkres
8438 (package-with-python2 python-munkres))
f3b3d78f
LF
8439
8440(define-public python-flask
8441 (package
8442 (name "python-flask")
8443 (version "0.10.1")
8444 (source (origin
8445 (method url-fetch)
8446 (uri (pypi-uri "Flask" version))
8447 (sha256
8448 (base32
8449 "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc"))))
8450 (build-system python-build-system)
8451 (propagated-inputs
8452 `(("python-itsdangerous" ,python-itsdangerous)
8453 ("python-jinja2" ,python-jinja2)
8454 ("python-werkzeug" ,python-werkzeug)))
8455 (home-page "https://github.com/mitsuhiko/flask/")
8456 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
8457 (description "Flask is a micro web framework based on the Werkzeug toolkit
8458and Jinja2 template engine. It is called a micro framework because it does not
8459presume or force a developer to use a particular tool or library.")
8460 (license bsd-3)
8461 (properties `((python2-variant . ,(delay python2-flask))))))
8462
8463(define-public python2-flask
8464 (package (inherit (package-with-python2
8465 (strip-python2-variant python-flask)))
8466 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
603d665b
LF
8467
8468(define-public python-cookies
8469 (package
8470 (name "python-cookies")
8471 (version "2.2.1")
8472 (source (origin
8473 (method url-fetch)
8474 (uri (pypi-uri "cookies" version))
8475 (sha256
8476 (base32
8477 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
8478 (build-system python-build-system)
8479 (arguments
8480 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
8481 #:tests? #f))
8482 (native-inputs
8483 `(("python-pytest" ,python2-pytest)))
8484 (synopsis "HTTP cookie parser and renderer")
8485 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
8486Python.")
8487 (home-page "https://gitlab.com/sashahart/cookies")
8488 (license license:expat)
8489 (properties `((python2-variant . ,(delay python2-cookies))))))
8490
8491(define-public python2-cookies
8492 (let ((cookies (package-with-python2
8493 (strip-python2-variant python-cookies))))
8494 (package (inherit cookies)
8495 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8496 ,@(package-native-inputs cookies))))))
0efde7d6
LF
8497
8498(define-public python-responses
8499 (package
8500 (name "python-responses")
8501 (version "0.5.1")
8502 (source (origin
8503 (method url-fetch)
8504 (uri (pypi-uri "responses" version))
8505 (sha256
8506 (base32
8507 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
8508 (build-system python-build-system)
8509 (arguments
8510 `(;; Test suite is not distributed:
8511 ;; https://github.com/getsentry/responses/issues/38
8512 #:tests? #f))
8513 (native-inputs
8514 `(("python-cookies" ,python-cookies)
8515 ("python-mock" ,python-mock)))
8516 (propagated-inputs
8517 `(("python-requests" ,python-requests)
8518 ("python-six" ,python-six)))
8519 (home-page "https://github.com/getsentry/responses")
8520 (synopsis "Utility for mocking out the `requests` Python library")
8521 (description "A utility library for mocking out the `requests` Python
8522library.")
8523 (license asl2.0)
8524 (properties `((python2-variant . ,(delay python2-responses))))))
8525
8526(define-public python2-responses
8527 (let ((responses (package-with-python2
8528 (strip-python2-variant python-responses))))
8529 (package (inherit responses)
8530 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8531 ,@(package-native-inputs responses))))))
76b94885
LF
8532
8533(define-public python-pathlib
8534 (package
8535 (name "python-pathlib")
8536 (version "1.0.1")
8537 (source (origin
8538 (method url-fetch)
8539 (uri (pypi-uri "pathlib" version))
8540 (sha256
8541 (base32
8542 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
8543 (build-system python-build-system)
8544 (arguments
8545 `(#:phases
8546 (modify-phases %standard-phases
8547 (replace 'check
8548 (lambda _ (zero? (system* "python" "./test_pathlib.py")))))))
8549 (home-page "https://pathlib.readthedocs.org/")
8550 (synopsis "Object-oriented filesystem paths")
8551 (description "Pathlib offers a set of classes to handle filesystem paths.
8552It offers the following advantages over using string objects:
8553
8554@enumerate
8555@item No more cumbersome use of os and os.path functions. Everything can
8556be done easily through operators, attribute accesses, and method calls.
8557@item Embodies the semantics of different path types. For example,
8558comparing Windows paths ignores casing.
8559@item Well-defined semantics, eliminating any inconsistencies or
8560ambiguities (forward vs. backward slashes, etc.).
8561@end enumerate\n")
8562 (license license:expat)))
8563
8564(define-public python2-pathlib
8565 (package-with-python2 python-pathlib))
25a7db0a
LF
8566
8567(define-public python-jellyfish
8568 (package
8569 (name "python-jellyfish")
8570 (version "0.5.3")
8571 (source (origin
8572 (method url-fetch)
8573 (uri (pypi-uri "jellyfish" version))
8574 (sha256
8575 (base32
8576 "12bxh8cy9xmvyrjz7aw159nd5pyvb645rkvw4r6bvm4xbvs8gd07"))))
8577 (build-system python-build-system)
8578 (native-inputs
8579 `(("python-pytest" ,python-pytest)))
8580 (home-page "https://github.com/jamesturk/jellyfish")
8581 (synopsis "Approximate and phonetic matching of strings")
8582 (description "Jellyfish uses a variety of string comparison and phonetic
8583encoding algorithms to do fuzzy string matching.")
8584 (license bsd-2)
8585 (properties `((python2-variant . ,(delay python2-jellyfish))))))
8586
8587(define-public python2-jellyfish
8588 (let ((jellyfish (package-with-python2
8589 (strip-python2-variant python-jellyfish))))
8590 (package (inherit jellyfish)
8591 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8592 ("python2-unicodecsv" ,python2-unicodecsv)
8593 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
8594
8595(define-public python2-unicodecsv
8596 (package
8597 (name "python2-unicodecsv")
8598 (version "0.14.1")
8599 (source (origin
8600 (method url-fetch)
8601 ;; The test suite is not included in the PyPi release.
8602 ;; https://github.com/jdunck/python-unicodecsv/issues/19
8603 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
8604 "archive/" version ".tar.gz"))
8605 (file-name (string-append name "-" version ".tar.gz"))
8606 (sha256
8607 (base32
8608 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
8609 (build-system python-build-system)
8610 (arguments
8611 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
8612 #:python ,python-2))
8613 (native-inputs
8614 `(("python2-setuptools" ,python2-setuptools)
8615 ("python2-unittest2" ,python2-unittest2)))
8616 (home-page "https://github.com/jdunck/python-unicodecsv")
8617 (synopsis "Unicode CSV module for Python 2")
8618 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
8619module, adding support for Unicode strings.")
8620 (license bsd-2)))
064503aa
LF
8621
8622(define-public python-rarfile
8623 (package
8624 (name "python-rarfile")
8625 (version "2.7")
8626 (source (origin
8627 (method url-fetch)
8628 (uri (pypi-uri "rarfile" version))
8629 (sha256
8630 (base32
8631 "0d8n1dlpiz7av8dmbp0vclrwl9cnxizr4f2c9xvj1h5nvn480527"))
8632 ;; https://github.com/markokr/rarfile/pull/17/
fc1adab1 8633 (patches (search-patches "python-rarfile-fix-tests.patch"))))
064503aa
LF
8634 (build-system python-build-system)
8635 (arguments
8636 '(#:phases
8637 (modify-phases %standard-phases
8638 (replace 'check
8639 ;; Many tests fail, but the installation proceeds.
8640 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
8641 (native-inputs
8642 `(("which" ,which))) ; required for tests
8643 (propagated-inputs
8644 `(("libarchive" ,libarchive)))
8645 (home-page "https://github.com/markokr/rarfile")
8646 (synopsis "RAR archive reader for Python")
8647 (description "This is Python module for RAR archive reading. The interface
8648is made as zipfile like as possible.")
8649 (license isc)))
8650
8651(define-public python2-rarfile
8652 (package-with-python2 python-rarfile))
daeeea71
CM
8653
8654(define-public python-magic
8655 (package
8656 (name "python-magic")
8657 (version "0.4.3")
8658 (source
8659 (origin
8660 (method url-fetch)
8661 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
8662 version ".tar.gz"))
8663 (sha256
8664 (base32
8665 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
8666 (file-name (string-append name "-" version "-checkout"))))
8667 (build-system python-build-system)
8668 (arguments
8669 ;; The tests are unreliable, so don't run them. The tests fail
8670 ;; under Python3 because they were written for Python2 and
8671 ;; contain import statements that do not work in Python3. One of
8672 ;; the tests fails under Python2 because its assertions are
8673 ;; overly stringent; it relies on comparing output strings which
8674 ;; are brittle and can change depending on the version of
8675 ;; libmagic being used and the system on which the test is
8676 ;; running. In my case, under GuixSD 0.10.0, only one test
8677 ;; failed, and it seems to have failed only because the version
8678 ;; of libmagic that is packaged in Guix outputs a slightly
8679 ;; different (but not wrong) string than the one that the test
8680 ;; expected.
8681 '(#:tests? #f
8682 #:phases (modify-phases %standard-phases
8683 ;; Replace a specific method call with a hard-coded
8684 ;; path to the necessary libmagic.so file in the
8685 ;; store. If we don't do this, then the method call
8686 ;; will fail to find the libmagic.so file, which in
8687 ;; turn will cause any application using
8688 ;; python-magic to fail.
8689 (add-before 'build 'hard-code-path-to-libmagic
8690 (lambda* (#:key inputs #:allow-other-keys)
8691 (let ((file (assoc-ref inputs "file")))
8692 (substitute* "magic.py"
8693 (("ctypes.util.find_library\\('magic'\\)")
8694 (string-append "'" file "/lib/libmagic.so'")))
8695 #t))))))
8696 (native-inputs
8697 `(("python-setuptools" ,python-setuptools)))
8698 (inputs
8699 ;; python-magic needs to be able to find libmagic.so.
8700 `(("file" ,file)))
8701 (home-page "https://github.com/ahupp/python-magic")
8702 (synopsis "File type identification using libmagic")
8703 (description
8704 "This module uses ctypes to access the libmagic file type
8705identification library. It makes use of the local magic database and
8706supports both textual and MIME-type output. Note that this module and
8707the python-file module both provide a \"magic.py\" file; these two
8708modules, which are different and were developed separately, both serve
8709the same purpose: to provide Python bindings for libmagic.")
8710 (license license:expat)))
8711
8712(define-public python2-magic
8713 (package-with-python2 python-magic))
12af303f
CM
8714
8715(define-public python2-s3cmd
8716 (package
8717 (name "python2-s3cmd")
8718 (version "1.6.1")
8719 (source
8720 (origin
8721 (method url-fetch)
8722 (uri (string-append "mirror://sourceforge/s3tools/"
8723 "s3cmd-" version ".tar.gz"))
8724 (sha256
8725 (base32
8726 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
8727 (build-system python-build-system)
8728 (arguments
8729 ;; s3cmd is written for python2 only and contains no tests.
8730 `(#:python ,python-2
8731 #:tests? #f))
8732 (native-inputs
8733 `(("python2-setuptools" ,python2-setuptools)))
8734 (inputs
8735 `(("python2-dateutil" ,python2-dateutil)
8736 ;; The python-file package also provides a magic.py module.
8737 ;; This is an unfortunate state of affairs; however, s3cmd
8738 ;; fails to install if it cannot find specifically the
8739 ;; python-magic package. Thus we include it, instead of using
8740 ;; python-file. Ironically, s3cmd sometimes works better
8741 ;; without libmagic bindings at all:
8742 ;; https://github.com/s3tools/s3cmd/issues/198
8743 ("python2-magic" ,python2-magic)))
8744 (home-page "http://s3tools.org/s3cmd")
8745 (synopsis "Command line tool for S3-compatible storage services")
8746 (description
8747 "S3cmd is a command line tool for uploading, retrieving and managing data
8748in storage services that are compatible with the Amazon Simple Storage
8749Service (S3) protocol, including S3 itself. It supports rsync-like backup,
8750GnuPG encryption, and more. It also supports management of Amazon's
8751CloudFront content delivery network.")
8752 (license gpl2+)))
4323a5f0
AE
8753
8754(define-public python-pkgconfig
8755 (package
8756 (name "python-pkgconfig")
8757 (version "1.1.0")
8758 (source
8759 (origin
8760 (method url-fetch)
8761 (uri (pypi-uri "pkgconfig" version))
8762 (sha256
8763 (base32
8764 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
8765 (build-system python-build-system)
8766 (native-inputs
8767 `(("python-nose" ,python-nose)
8768 ("python-setuptools" ,python-setuptools)))
8769 (inputs
8770 `(("pkg-config" ,pkg-config)))
8771 (arguments
8772 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
8773 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
8774 #:tests? #f
8775 ;; Prevent creation of the egg. This works around
8776 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
8777 #:configure-flags '("--single-version-externally-managed" "--root=/")
8778 ;; Hard-code the path to pkg-config.
8779 #:phases
8780 (modify-phases %standard-phases
8781 (add-before
8782 'build 'patch
8783 (lambda _
8784 (substitute* "pkgconfig/pkgconfig.py"
8785 (("cmd = 'pkg-config")
8786 (string-append "cmd = '" (which "pkg-config"))))
8787 #t)))))
8788 (home-page "http://github.com/matze/pkgconfig")
8789 (synopsis "Python interface for pkg-config")
8790 (description "This module provides a Python interface to pkg-config. It
8791can be used to find all pkg-config packages, check if a package exists,
8792check if a package meets certain version requirements, query CFLAGS and
8793LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 8794 (license license:expat)))
4323a5f0
AE
8795
8796(define-public python2-pkgconfig
8797 (package-with-python2 python-pkgconfig))
8798
2e697322
BW
8799(define-public python-bz2file
8800 (package
8801 (name "python-bz2file")
8802 (version "0.98")
8803 (source
8804 (origin
8805 (method url-fetch)
8806 (uri (pypi-uri "bz2file" version))
8807 (sha256
8808 (base32
8809 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
8810 (build-system python-build-system)
8811 (arguments
8812 `(#:phases
8813 (modify-phases %standard-phases
8814 ;; python setup.py test does not work as of 0.98
8815 ;; but there is only the one test file
8816 (replace 'check
8817 (lambda _ (zero? (system* "python" "test_bz2file.py")))))))
8818 (home-page "https://github.com/nvawda/bz2file")
8819 (synopsis "Read and write bzip2-compressed files")
8820 (description
8821 "Bz2file is a Python library for reading and writing bzip2-compressed
8822files. It contains a drop-in replacement for the I/O interface in the
8823standard library's @code{bz2} module, including features from the latest
8824development version of CPython that are not available in older releases.")
8825 (license asl2.0)
8826 (properties `((python2-variant . ,(delay python2-bz2file))))))
8827
8828(define-public python2-bz2file
8829 (let ((base (package-with-python2
8830 (strip-python2-variant python-bz2file))))
8831 (package
8832 (inherit base)
8833 (native-inputs
8834 `(("python2-setuptools" ,python2-setuptools))))))
8835
8e451885
AE
8836(define-public python-cysignals
8837 (package
8838 (name "python-cysignals")
8839 (version "1.1.0")
8840 (source
8841 (origin
8842 (method url-fetch)
8843 (uri (pypi-uri "cysignals" version ".tar.bz2"))
8844 (sha256
8845 (base32
8846 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
8847 (build-system python-build-system)
8848 (native-inputs
8849 `(("python-cython" ,python-cython)
8850 ("python-setuptools" ,python-setuptools)
8851 ("python-sphinx" ,python-sphinx)))
8852 (inputs
8853 `(("pari-gp" ,pari-gp)))
8854 (arguments
8855 `(#:modules ((guix build python-build-system)
8856 ((guix build gnu-build-system) #:prefix gnu:)
8857 (guix build utils))
8858 ;; FIXME: Tests are executed after installation and currently fail
8859 ;; when not installing into standard locations; the author is working
8860 ;; on a fix.
8861 #:tests? #f
8862 #:phases
8863 (modify-phases %standard-phases
8864 (add-before
8865 'build 'configure
8866 (assoc-ref gnu:%standard-phases 'configure)))))
8867 (home-page
8868 "https://github.com/sagemath/cysignals")
8869 (synopsis
8870 "Handling of interrupts and signals for Cython")
8871 (description
8872 "The cysignals package provides mechanisms to handle interrupts (and
8873other signals and errors) in Cython code, using two related approaches,
8874for mixed Cython/Python code or external C libraries and pure Cython code,
8875respectively.")
8876 (license lgpl3+)))
8877
8878(define-public python2-cysignals
8879 (package-with-python2 python-cysignals))
8880
63bcec71
DM
8881(define-public python2-shedskin
8882 (package
8883 (name "python2-shedskin")
8884 (version "0.9.4")
8885 (source
8886 (origin
8887 (method url-fetch)
8888 (uri (string-append "https://github.com/shedskin/shedskin/"
8889 "releases/download/v" version
8890 "/shedskin-" version ".tgz"))
8891 (sha256
8892 (base32
8893 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
8894 (build-system python-build-system)
8895 (arguments
8896 `(#:python ,python-2
8897 #:phases (modify-phases %standard-phases
8898 (add-after 'unpack 'fix-resulting-include-libs
8899 (lambda* (#:key inputs #:allow-other-keys)
8900 (let ((libgc (assoc-ref inputs "libgc"))
8901 (pcre (assoc-ref inputs "pcre")))
8902 (substitute* "shedskin/makefile.py"
8903 (("variable == 'CCFLAGS':[ ]*")
8904 (string-append "variable == 'CCFLAGS':\n"
8905 " line += ' -I " pcre "/include"
8906 " -I " libgc "/include'"))
8907 (("variable == 'LFLAGS':[ ]*")
8908 (string-append "variable == 'LFLAGS':\n"
8909 " line += ' -L" pcre "/lib"
8910 " -L " libgc "/lib'")))
8911 #t))))))
8912 (native-inputs `(("python2-setuptools" ,python2-setuptools)))
8913 (inputs `(("pcre" ,pcre)
8914 ("libgc" ,libgc)))
8915 (home-page "https://shedskin.github.io/")
8916 (synopsis "Experimental Python-2 to C++ Compiler")
8917 (description (string-append "This is an experimental compiler for a subset of
8918Python. It generates C++ code and a Makefile."))
8919 (license (list gpl3 bsd-3 license:expat))))
88bb4197
LG
8920
8921(define-public python2-rope
8922 (package
8923 (name "python2-rope")
8924 (version "0.10.3")
8925 (source
8926 (origin
8927 (method url-fetch)
8928 (uri (pypi-uri "rope" version))
8929 (sha256
8930 (base32
8931 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
8932 (arguments
8933 ;; Rope is currently python-2 only.
8934 ;; https://github.com/python-rope/rope/issues/57
8935 `(#:python ,python-2))
8936 (build-system python-build-system)
8937 (native-inputs
8938 `(("python2-unittest2" ,python2-unittest2)
8939 ("python2-setuptools" ,python2-setuptools)))
8940 (home-page "https://github.com/python-rope/rope")
8941 (synopsis "Refactoring library for Python")
8942 (description "Rope is a refactoring library for Python. It facilitates
8943the renaming, moving and extracting of attributes, functions, modules, fields
8944and parameters in Python 2 source code. These refactorings can also be applied
8945to occurences in strings and comments.")
8946 (license gpl2)))
6ba8ca17
8947
8948(define-public python-py3status
8949 (package
8950 (name "python-py3status")
8951 (version "2.9")
8952 (source
8953 (origin
8954 (method url-fetch)
8955 (uri (pypi-uri "py3status" version))
8956 (sha256
8957 (base32
8958 "09y7h8rjay5kzwk5akq7f5f9wqnvjkxhivck04hdc8ny1nw3vqzp"))))
8959 (build-system python-build-system)
8960 (native-inputs
8961 `(("python-setuptools" ,python-setuptools)))
8962 (home-page "https://github.com/ultrabug/py3status")
8963 (synopsis "Extensible i3status wrapper written in Python")
8964 (description "py3status is an i3status wrapper which extends i3status
8965functionality in a modular way, allowing you to extend your panel with your
8966own code, responding to click events and updating clock every second.")
8967 (license bsd-3)))
b8fdbca3
HG
8968
8969(define-public python-tblib
8970 (package
8971 (name "python-tblib")
8972 (version "1.3.0")
8973 (source (origin
8974 (method url-fetch)
8975 (uri (pypi-uri "tblib" version))
8976 (sha256 (base32
8977 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
8978 (build-system python-build-system)
8979 (arguments
8980 `(#:phases
8981 (modify-phases %standard-phases
8982 (replace 'check
8983 (lambda _
8984 ;; Upstream runs tests after installation and the package itself
8985 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
8986 ;; found.
8987 (setenv "PYTHONPATH"
8988 (string-append (getcwd) "/build/lib:"
8989 (getenv "PYTHONPATH")))
8990 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
8991 (native-inputs
8992 `(("python-pytest" ,python-pytest)
8993 ("python-setuptools" ,python-setuptools)
8994 ("python-six" ,python-six)))
8995 (home-page "https://github.com/ionelmc/python-tblib")
8996 (synopsis "Traceback serialization library")
8997 (description
8998 "Traceback serialization allows you to:
8999
9000@enumerate
9001@item Pickle tracebacks and raise exceptions with pickled tracebacks in
9002different processes. This allows better error handling when running code over
9003multiple processes (imagine multiprocessing, billiard, futures, celery etc).
9004
9005@item Parse traceback strings and raise with the parsed tracebacks.
9006@end itemize")
9007 (license bsd-3)))
9008
9009(define-public python2-tblib
9010 (package-with-python2 python-tblib))
1a024de4
HG
9011
9012(define-public python-sqlparse
9013 (package
9014 (name "python-sqlparse")
9015 (version "0.1.19")
9016 (source (origin
9017 (method url-fetch)
9018 (uri (pypi-uri "sqlparse" version))
9019 (sha256
9020 (base32
9021 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
9022 (build-system python-build-system)
9023 (arguments
9024 `(#:phases
9025 (modify-phases %standard-phases
9026 (replace 'check
9027 (lambda* _
9028 ;; setup.py-integrated 2to3 only affects the build files, but
9029 ;; py.test is using the source files. So we need to convert them
9030 ;; manually.
9031 (when (zero? (system* "python3"))
9032 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
9033 (zero? (system* "py.test")))))))
9034 (native-inputs
9035 `(("python-pytest" ,python-pytest)
9036 ("python-setuptools" ,python-setuptools)))
9037 (home-page "https://github.com/andialbrecht/sqlparse")
9038 (synopsis "Non-validating SQL parser")
9039 (description "Sqlparse is a non-validating SQL parser for Python. It
9040provides support for parsing, splitting and formatting SQL statements.")
9041 (license bsd-3)))
9042
9043(define-public python2-sqlparse
9044 (package-with-python2 python-sqlparse))
68b9d242
SB
9045
9046(define-public python-greenlet
9047 (package
9048 (name "python-greenlet")
9049 (version "0.4.9")
9050 (source (origin
9051 (method url-fetch)
9052 (uri (pypi-uri "greenlet" version))
9053 (sha256
9054 (base32
9055 "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
9056 (build-system python-build-system)
9057 (native-inputs
9058 `(("python-setuptools" ,python-setuptools)))
9059 (home-page "https://greenlet.readthedocs.io/")
9060 (synopsis "Lightweight in-process concurrent programming")
9061 (description
9062 "Greenlet package is a spin-off of Stackless, a version of CPython
9063that supports micro-threads called \"tasklets\". Tasklets run
9064pseudo-concurrently (typically in a single or a few OS-level threads) and
9065are synchronized with data exchanges on \"channels\".")
9066 (license (list psfl license:expat))))
9067
9068(define-public python2-greenlet
9069 (package-with-python2 python-greenlet))
d79a343b
SB
9070
9071(define-public python-gevent
9072 (package
9073 (name "python-gevent")
9074 (version "1.1.1")
9075 (source (origin
9076 (method url-fetch)
9077 (uri (pypi-uri "gevent" version))
9078 (sha256
9079 (base32
9080 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
9081 (modules '((guix build utils)))
9082 (snippet
9083 '(begin
9084 ;; unbunding libev and c-ares
9085 (for-each delete-file-recursively '("libev" "c-ares"))
9086 ;; fixing testsuite
9087 (call-with-output-file "greentest/__init__.py" noop)
9088 (substitute* "greentest/testrunner.py"
9089 (("import util") "from . import util")
9090 (("from util import log") "from .util import log"))))))
9091 (build-system python-build-system)
9092 (propagated-inputs
9093 `(("python-greenlet" ,python-greenlet)))
9094 (native-inputs
9095 `(("python-setuptools" ,python-setuptools)
9096 ("python-six" ,python-six)))
9097 (inputs
9098 `(("c-ares" ,c-ares)
9099 ("libev" ,libev)))
9100 (home-page "http://www.gevent.org/")
9101 (synopsis "Coroutine-based network library")
9102 (description
9103 "gevent is a coroutine-based Python networking library that uses greenlet
9104to provide a high-level synchronous API on top of the libev event loop.")
9105 (license license:expat)))
9106
9107(define-public python2-gevent
9108 (package-with-python2 python-gevent))
da3aeeb6
SB
9109
9110(define-public python-twisted
9111 (package
9112 (name "python-twisted")
9113 (version "16.2.0")
9114 (source (origin
9115 (method url-fetch)
8ea8e8d3 9116 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
9117 (sha256
9118 (base32
9119 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
9120 (build-system python-build-system)
9121 (native-inputs
45912170
SB
9122 `(("python-setuptools" ,python-setuptools)))
9123 (propagated-inputs
9124 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
9125 (home-page "https://twistedmatrix.com/")
9126 (synopsis "Asynchronous networking framework written in Python")
9127 (description
9128 "Twisted is an extensible framework for Python programming, with special
9129focus on event-based network programming and multiprotocol integration.")
9130 (license license:expat)))
9131
9132(define-public python2-twisted
9133 (package-with-python2 python-twisted))
d0b6fed6
DM
9134
9135(define-public python-ply
9136 (package
9137 (name "python-ply")
9138 (version "3.8")
9139 (source
9140 (origin
9141 (method url-fetch)
9142 (uri (string-append
9143 "https://pypi.python.org/packages/"
9144 "96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5"
9145 "/ply-" version ".tar.gz"))
9146 (sha256
9147 (base32
9148 "1f70ipynmiy09k6px2j7v4w5cdrc21za3xs2k6f1bsvb0bzvvlg7"))))
9149 (build-system python-build-system)
9150 (home-page "http://www.dabeaz.com/ply/")
9151 (synopsis "Python Lex & Yacc")
9152 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
9153It uses LR parsing and does extensive error checking.")
9154 (license bsd-3)
9155 (properties `((python2-variant . ,(delay python2-ply))))))
9156
9157(define-public python2-ply
9158 (package
9159 (inherit (package-with-python2
9160 (strip-python2-variant python-ply)))
9161 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
d951bd54
SB
9162
9163(define-public python-tabulate
9164 (package
9165 (name "python-tabulate")
9166 (version "0.7.5")
9167 (source (origin
9168 (method url-fetch)
9169 (uri (pypi-uri "tabulate" version))
9170 (sha256
9171 (base32
9172 "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
9173 ;; Fix tests
9174 (modules '((guix build utils)))
9175 (snippet '(substitute* '("test/test_cli.py"
9176 "test/test_input.py"
9177 "test/test_output.py"
9178 "test/test_regression.py")
9179 (("from common") "from nose.tools")))))
9180 (build-system python-build-system)
9181 (native-inputs
9182 `(("python-setuptools" ,python-setuptools)
9183 ;; For testing
9184 ("python-nose" ,python-nose)))
9185 (home-page "https://bitbucket.org/astanin/python-tabulate")
9186 (synopsis "Pretty-print tabular data")
9187 (description
9188 "Tabulate is a library and command-line utility to pretty-print tabular
9189data in Python.")
9190 (license license:expat)))
9191
9192(define-public python2-tabulate
9193 (package-with-python2 python-tabulate))
1c4c8a33
SB
9194
9195(define-public python-kazoo
9196 (package
9197 (name "python-kazoo")
9198 (version "2.2.1")
9199 (source
9200 (origin
9201 (method url-fetch)
9202 (uri (pypi-uri "kazoo" version))
9203 (sha256
9204 (base32
9205 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
9206 (build-system python-build-system)
9207 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
9208 (native-inputs
c18899e8
SB
9209 `(("python-setuptools" ,python-setuptools)))
9210 (propagated-inputs
9211 `(("python-six" ,python-six)))
1c4c8a33
SB
9212 (home-page "https://kazoo.readthedocs.org")
9213 (synopsis "High-level Zookeeper client library")
9214 (description
9215 "Kazoo is a Python client library for the Apache Zookeeper distributed
9216application service. It is designed to be easy to use and to avoid common
9217programming errors.")
9218 (license asl2.0)))
9219
9220(define-public python2-kazoo
9221 (package-with-python2 python-kazoo))
45dda35e
SB
9222
9223(define-public python-pykafka
9224 (package
9225 (name "python-pykafka")
9226 (version "2.4.0")
9227 (source (origin
9228 (method url-fetch)
c6bccf71
EF
9229 (uri (string-append
9230 "https://pypi.python.org/packages/8b/3e/"
9231 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
9232 "pykafka-" version ".tar.gz"))
45dda35e
SB
9233 (sha256
9234 (base32
9235 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
9236 (build-system python-build-system)
9237 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
9238 (native-inputs
c8fa3d9b
SB
9239 `(("python-setuptools" ,python-setuptools)))
9240 (propagated-inputs
45dda35e
SB
9241 `(("python-gevent" ,python-gevent)
9242 ("python-kazoo" ,python-kazoo)
45dda35e
SB
9243 ("python-tabulate" ,python-tabulate)))
9244 (inputs
9245 `(("librdkafka" ,librdkafka)))
9246 (home-page "https://pykafka.readthedocs.io/")
9247 (synopsis "Apache Kafka client for Python")
9248 (description
9249 "PyKafka is a client for the Apache Kafka distributed messaging system.
9250It includes Python implementations of Kafka producers and consumers, which
9251are optionally backed by a C extension built on librdkafka.")
9252 (license asl2.0)))
9253
9254(define-public python2-pykafka
9255 (package-with-python2 python-pykafka))
a44fd439
DM
9256
9257(define-public python-wcwidth
9258 (package
9259 (name "python-wcwidth")
9260 (version "0.1.6")
9261 (source
9262 (origin
9263 (method url-fetch)
9264 (uri (string-append
9265 "https://pypi.python.org/packages/"
9266 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
9267 "wcwidth-" version ".tar.gz"))
9268 (sha256
9269 (base32
9270 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
9271 (build-system python-build-system)
9272 (home-page "https://github.com/jquast/wcwidth")
9273 (synopsis "Measure number of terminal column cells of wide-character codes.")
9274 (description "Wcwidth measures the number of terminal column cells of
9275wide-character codes. It is useful for those implementing a terminal emulator,
9276or programs that carefully produce output to be interpreted by one. It is a
9277Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
9278specified in POSIX.1-2001 and POSIX.1-2008.")
e4875826
LF
9279 (license license:expat)
9280 (properties `((python2-variant . ,(delay python2-wcwidth))))))
a44fd439
DM
9281
9282(define-public python2-wcwidth
9283 (package
9284 (inherit (package-with-python2
9285 (strip-python2-variant python-wcwidth)))
9286 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0de78c95
DP
9287
9288(define-public python2-jsonrpclib
9289 (package
9290 (name "python2-jsonrpclib")
9291 (version "0.1.7")
9292 (source (origin
9293 (method url-fetch)
9294 (uri (string-append
9295 "https://pypi.python.org/packages/source/j/jsonrpclib/"
9296 "jsonrpclib-" version ".tar.gz"))
9297 (sha256
9298 (base32
9299 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
9300 (build-system python-build-system)
9301 (native-inputs
9302 `(("python2-setuptools" ,python2-setuptools)))
9303 (arguments
9304 `(#:tests? #f
9305 #:python ,python-2))
9306 (home-page "https://github.com/joshmarshall/jsonrpclib/")
9307 (synopsis "Implementation of JSON-RPC specification for Python")
9308 (description
9309 "This library is an implementation of the JSON-RPC specification.
9310It supports both the original 1.0 specification, as well as the
9311new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
9312etc.")
9313 (license asl2.0)))
9250b0f3
SB
9314
9315(define-public python-chai
9316 (package
9317 (name "python-chai")
9318 (version "1.1.1")
9319 (source (origin
9320 (method url-fetch)
9321 (uri (pypi-uri "chai" version))
9322 (sha256
9323 (base32
9324 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
9325 (build-system python-build-system)
9326 (native-inputs
9327 `(("python-setuptools" ,python-setuptools)))
9328 (home-page "https://github.com/agoragames/chai")
9329 (synopsis "Mocking framework for Python")
9330 (description
9331 "Chai provides an api for mocking, stubbing and spying your python
9332objects, patterned after the Mocha library for Ruby.")
9333 (license bsd-3)))
9334
9335(define-public python2-chai
9336 (package-with-python2 python-chai))
9337
ae43baa8
SB
9338(define-public python-arrow
9339 (package
9340 (name "python-arrow")
9341 (version "0.8.0")
9342 (source (origin
9343 (method url-fetch)
9344 (uri (pypi-uri "arrow" version))
9345 (sha256
9346 (base32
9347 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
9348 (build-system python-build-system)
9349 (native-inputs
9350 `(("python-setuptools" ,python-setuptools)
ae43baa8
SB
9351 ;; For testing
9352 ("python-chai" ,python-chai)
9353 ("python-simplejson" ,python-simplejson)))
36aed736
SB
9354 (propagated-inputs
9355 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
9356 (home-page "https://github.com/crsmithdev/arrow/")
9357 (synopsis "Dates and times for Python")
9358 (description
9359 "Arrow is a Python library to creating, manipulating, formatting and
9360converting dates, times, and timestamps. It implements and updates the
9361datetime type.")
9362 (license asl2.0)))
9363
9364(define-public python2-arrow
9365 (package-with-python2 python-arrow))
9366
1f2b62a4
SB
9367(define-public python-inflection
9368 (package
9369 (name "python-inflection")
9370 (version "0.3.1")
9371 (source
9372 (origin (method url-fetch)
9373 (uri (pypi-uri "inflection" version))
9374 (sha256
9375 (base32
9376 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
9377 (build-system python-build-system)
9378 (native-inputs
9379 `(("python-setuptools" ,python-setuptools)))
9380 (home-page "http://github.com/jpvanhal/inflection")
9381 (synopsis "Python string transformation library")
9382 (description
9383 "Inflection is a string transformation library. It singularizes
9384and pluralizes English words, and transforms strings from CamelCase to
9385underscored string.")
9386 (license license:expat)))
9387
9388(define-public python2-inflection
9389 (package-with-python2 python-inflection))
9390
18995566
SB
9391(define-public python-pylev
9392 (package
9393 (name "python-pylev")
9394 (version "1.3.0")
9395 (source (origin
9396 (method url-fetch)
9397 (uri (pypi-uri "pylev" version))
9398 (sha256
9399 (base32
9400 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
9401 (build-system python-build-system)
9402 (native-inputs
9403 `(("python-setuptools" ,python-setuptools)))
9404 (home-page "http://github.com/toastdriven/pylev")
9405 (synopsis "Levenshtein distance implementation in Python")
9406 (description "Pure Python Levenshtein implementation, based off the
9407Wikipedia code samples at
9408@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
9409 (license bsd-3)))
9410
9411(define-public python2-pylev
9412 (package-with-python2 python-pylev))
9413
f5deff7a
SB
9414(define-public python-cleo
9415 (package
9416 (name "python-cleo")
9417 (version "0.4.1")
9418 (source (origin
9419 (method url-fetch)
9420 (uri (pypi-uri "cleo" version))
9421 (sha256
9422 (base32
9423 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
9424 (build-system python-build-system)
9425 (native-inputs
9403150a 9426 `(("python-setuptools" ,python-setuptools)
f5deff7a
SB
9427 ;; For testing
9428 ("python-mock" ,python-mock)
9429 ("python-pytest" ,python-pytest)))
9403150a
SB
9430 (propagated-inputs
9431 `(("python-psutil" ,python-psutil)
9432 ("python-pylev" ,python-pylev)))
f5deff7a
SB
9433 (home-page "https://github.com/sdispater/cleo")
9434 (synopsis "Command-line arguments library for Python")
9435 (description
9436 "Cleo allows you to create command-line commands with signature in
9437docstring and colored output.")
9438 (license license:expat)))
9439
9440(define-public python2-cleo
9441 (package-with-python2 python-cleo))
9442
77cadb43
SB
9443(define-public python-lazy-object-proxy
9444 (package
9445 (name "python-lazy-object-proxy")
9446 (version "1.2.2")
9447 (source (origin
9448 (method url-fetch)
9449 (uri (pypi-uri "lazy-object-proxy" version))
9450 (sha256
9451 (base32
9452 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
9453 (build-system python-build-system)
9454 (native-inputs
9455 `(("python-setuptools" ,python-setuptools)))
9456 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
9457 (synopsis "Lazy object proxy for python")
9458 (description
9459 "Lazy object proxy is an object that wraps a callable but defers the call
9460until the object is actually required, and caches the result of said call.")
9461 (license bsd-2)))
9462
9463(define-public python2-lazy-object-proxy
9464 (package-with-python2 python-lazy-object-proxy))
9465
5477e05f
SB
9466(define-public python-dnspython
9467 (package
9468 (name "python-dnspython")
9469 (version "1.14.0")
9470 (source (origin
9471 (method url-fetch)
9472 (uri (string-append "http://www.dnspython.org/kits/"
9473 version "/dnspython-" version ".tar.gz"))
9474 (sha256
9475 (base32
9476 "1z472r63gdqsxhsxj3plr5vs478yf4303vrqxxpsccc940g441hl"))))
9477 (build-system python-build-system)
9478 (arguments '(#:tests? #f)) ; XXX: requires internet access
9479 (native-inputs
9480 `(("python-setuptools" ,python-setuptools)))
9481 (home-page "http://www.dnspython.org")
9482 (synopsis "DNS toolkit for Python")
9483 (description
9484 "dnspython is a DNS toolkit for Python. It supports almost all record
9485types. It can be used for queries, zone transfers, and dynamic updates.
9486It supports TSIG authenticated messages and EDNS0.")
9487 (license license:expat)))
9488
9489(define-public python2-dnspython
9490 (package-with-python2 python-dnspython))
9491
22711e25
SB
9492(define-public python-email-validator
9493 (package
9494 (name "python-email-validator")
9495 (version "1.0.1")
9496 (source
9497 (origin (method url-fetch)
9498 (uri (pypi-uri "email_validator" version))
9499 (sha256
9500 (base32
9501 "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
9502 (build-system python-build-system)
9503 (arguments
9504 '(#:phases
9505 (modify-phases %standard-phases
9506 (add-before 'build 'use-dnspython
9507 (lambda _
9508 (substitute* "setup.py"
9509 (("dnspython3") "dnspython"))
9510 #t)))))
9511 (native-inputs
d42560bd
SB
9512 `(("python-setuptools" ,python-setuptools)))
9513 (propagated-inputs
22711e25 9514 `(("python-dnspython" ,python-dnspython)
d42560bd 9515 ("python-idna" ,python-idna)))
22711e25
SB
9516 (home-page "https://github.com/JoshData/python-email-validator")
9517 (synopsis "Email address validation library for Python")
9518 (description
9519 "This library validates email address syntax and deliverability.")
9520 (license cc0)))
9521
9522(define-public python2-email-validator
9523 (package-with-python2 python-email-validator))
9524
8987d91e
SB
9525(define-public python-ukpostcodeparser
9526 (package
9527 (name "python-ukpostcodeparser")
9528 (version "1.0.3")
9529 (source (origin
9530 (method url-fetch)
9531 (uri (pypi-uri "UkPostcodeParser" version))
9532 (sha256
9533 (base32
9534 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
9535 (build-system python-build-system)
9536 (native-inputs
9537 `(("python-setuptools" ,python-setuptools)))
9538 (home-page "https://github.com/hamstah/ukpostcodeparser")
9539 (synopsis "UK Postcode parser for Python")
9540 (description
9541 "This library provides the @code{parse_uk_postcode} function for
9542parsing UK postcodes.")
9543 (license license:expat)))
9544
9545(define-public python2-ukpostcodeparser
9546 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
9547
9548(define-public python-fake-factory
9549 (package
9550 (name "python-fake-factory")
9551 (version "0.5.7")
9552 (source (origin
9553 (method url-fetch)
9554 (uri (pypi-uri "fake-factory" version))
9555 (sha256
9556 (base32
9557 "1chmarnrdzn4r017n8qlic0m0bbnhw04s3hkwribjvm3mqpb6pa0"))))
9558 (build-system python-build-system)
9559 (arguments
9560 '(#:phases
9561 (modify-phases %standard-phases
9562 (add-before 'check 'disable-failing-test
9563 ;; XXX: faker/tests/ne_np/__init__.py, line 40, in test_names
9564 ;; first_name, last_name = name.split()
9565 ;; ValueError: too many values to unpack (expected 2)
9566 (lambda _
9567 (delete-file "faker/tests/ne_np/__init__.py")
9568 #t)))))
9569 (native-inputs
bbcd7297 9570 `(("python-setuptools" ,python-setuptools)
ea92ae01
SB
9571 ;; For testing
9572 ("python-email-validator" ,python-email-validator)
9573 ("python-mock" ,python-mock)
9574 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
9575 (propagated-inputs
9576 `(("python-dateutil" ,python-dateutil-2)
9577 ("python-six" ,python-six)))
ea92ae01
SB
9578 (home-page "http://github.com/joke2k/faker")
9579 (synopsis "Python package that generates fake data")
9580 (description
9581 "Faker is a Python package that generates fake data such as names,
9582addresses, and phone numbers.")
9583 (license license:expat)
9584 (properties `((python2-variant . ,(delay python2-fake-factory))))))
9585
9586(define-public python2-fake-factory
9587 (let ((base (package-with-python2 (strip-python2-variant
9588 python-fake-factory))))
9589 (package
9590 (inherit base)
24c9aa18 9591 (propagated-inputs
ea92ae01 9592 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 9593 ,@(package-propagated-inputs base))))))
ea92ae01 9594
b49504fd
SB
9595(define-public python-pyaml
9596 (package
9597 (name "python-pyaml")
9598 (version "15.8.2")
9599 (source (origin
9600 (method url-fetch)
9601 (uri (pypi-uri "pyaml" version))
9602 (sha256
9603 (base32
9604 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
9605 (build-system python-build-system)
9606 (native-inputs
9607 `(("python-setuptools" ,python-setuptools)))
9608 (propagated-inputs
9609 `(("python-pyyaml" ,python-pyyaml)))
9610 (home-page "https://github.com/mk-fg/pretty-yaml")
9611 (synopsis "YAML pretty-print library for Python")
9612 (description
9613 "pyaml is a PyYAML based python module to produce pretty and readable
9614YAML-serialized data.")
9615 (license (non-copyleft "http://www.wtfpl.net/txt/copying/"))))
9616
9617(define-public python2-pyaml
9618 (package-with-python2 python-pyaml))
9619
347175a2
SB
9620(define-public python-flexmock
9621 (package
9622 (name "python-flexmock")
9623 (version "0.10.2")
9624 (source (origin
9625 (method url-fetch)
9626 (uri (pypi-uri "flexmock" version))
9627 (sha256
9628 (base32
9629 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
9630 (build-system python-build-system)
9631 (native-inputs
9632 `(("python-setuptools" ,python-setuptools)))
9633 (home-page "https://flexmock.readthedocs.org")
9634 (synopsis "Testing library for Python")
9635 (description
9636 "flexmock is a testing library for Python that makes it easy to create
9637mocks, stubs and fakes.")
9638 (license bsd-3)))
9639
9640(define-public python2-flexmock
9641 (package-with-python2 python-flexmock))
9642
5a744191
SB
9643(define-public python-orator
9644 (package
9645 (name "python-orator")
9646 (version "0.8.2")
9647 (source (origin
9648 (method url-fetch)
9649 (uri (pypi-uri "orator" version))
9650 (sha256
9651 (base32
9652 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
9653 (build-system python-build-system)
9654 (arguments '(#:tests? #f)) ; no tests
9655 (native-inputs
b2676030
SB
9656 `(("python-setuptools" ,python-setuptools)))
9657 (propagated-inputs
5a744191
SB
9658 `(("python-arrow" ,python-arrow)
9659 ("python-blinker" ,python-blinker)
9660 ("python-cleo" ,python-cleo)
9661 ("python-fake-factory" ,python-fake-factory)
9662 ("python-inflection" ,python-inflection)
9663 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
9664 ("python-pyaml" ,python-pyaml)
5a744191
SB
9665 ("python-simplejson" ,python-simplejson)
9666 ("python-wrapt" ,python-wrapt)))
9667 (home-page "https://orator-orm.com/")
9668 (synopsis "ActiveRecord ORM for Python")
9669 (description
9670 "Orator provides a simple ActiveRecord-like Object Relational Mapping
9671implementation for Python.")
9672 (license license:expat)
9673 (properties `((python2-variant . ,(delay python2-orator))))))
9674
9675(define-public python2-orator
9676 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
9677 (package
9678 (inherit base)
06961617 9679 (propagated-inputs
5a744191 9680 `(("python2-ipaddress" ,python2-ipaddress)
06961617 9681 ,@(package-propagated-inputs base))))))
f4155188
DM
9682
9683(define-public python-prompt-toolkit
9684 (package
9685 (name "python-prompt-toolkit")
9686 (version "1.0.3")
9687 (source
9688 (origin
9689 (method url-fetch)
9690 (uri (string-append
9691 "https://pypi.python.org/packages/"
9692 "8d/de/412f23919929c01e6b55183e124623f705e4b91796d3d2dce2cb53d595ad/"
9693 "prompt_toolkit-" version ".tar.gz"))
9694 (sha256
9695 (base32
9696 "18lbmmkyjf509klc3217lq0x863pfzix779zx5kp9lms1iph4pl0"))))
9697 (build-system python-build-system)
9698 (inputs `(("python-wcwidth" ,python-wcwidth)
9699 ("python-pygments" ,python-pygments)))
9700 (native-inputs `(("python-six" ,python-six)))
9701 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
9702 (synopsis "Library for building command line interfaces in Python")
9703 (description
9704 "Prompt-Toolkit is a library for building interactive command line
9705interfaces in Python. It's like GNU Readline but it also features syntax
9706highlighting while typing, out-of-the-box multi-line input editing, advanced
9707code completion, incremental search, support for Chinese double-width
9708characters, mouse support, and auto suggestions.")
9709 (license bsd-3)
9710 (properties `((python2-variant . ,(delay python2-prompt-toolkit))))))
9711
9712(define-public python2-prompt-toolkit
9713 (let ((base (package-with-python2 (strip-python2-variant python-prompt-toolkit))))
9714 (package
9715 (inherit base)
9716 (native-inputs
9717 `(("python2-setuptools" ,python2-setuptools)
9718 ,@(package-native-inputs base))))))
a502dfbf
DM
9719
9720(define-public python-jedi
9721 (package
9722 (name "python-jedi")
9723 (version "0.9.0")
9724 (source
9725 (origin
9726 (method url-fetch)
9727 (uri (pypi-uri "jedi" version))
9728 (sha256
9729 (base32
9730 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
9731 (build-system python-build-system)
9732 (home-page "https://github.com/davidhalter/jedi")
9733 (synopsis
9734 "Autocompletion for Python that can be used for text editors")
9735 (description
9736 "Jedi is an autocompletion tool for Python that can be used for text editors.")
9737 (license license:expat)
9738 (properties `((python2-variant . ,(delay python2-jedi))))))
9739
9740(define-public python2-jedi
9741 (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
9742 (package
9743 (inherit base)
9744 (native-inputs
9745 `(("python2-setuptools" ,python2-setuptools)
9746 ,@(package-native-inputs base))))))