gnu: xfce4-panel: Fix tzdata path.
[jackhill/guix/guix.git] / gnu / packages / python-xyz.scm
CommitLineData
44d10b1f
RW
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
2d040763 3;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
fa8ffaa0 4;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
44d10b1f
RW
5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
6;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
10;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
b742c006 14;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
44d10b1f
RW
15;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
17;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
18;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com>
19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
22;;; Copyright © 2016, 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
25;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
47956fa0 26;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
44d10b1f
RW
27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
28;;; Copyright © 2016 David Craven <david@craven.ch>
ea43f0d5 29;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
44d10b1f
RW
30;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
e746d1c3 32;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
44d10b1f
RW
33;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
34;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
217ea1a1 35;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
44d10b1f
RW
36;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
39;;; Copyright © 2017, 2018 Adriano Peluso <catonano@gmail.com>
40;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
41;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
42;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
43;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
44;;; Copyright © 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
45;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
46;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
dcfa0acd 47;;; Copyright © 2017, 2019 Brendan Tildesley <mail@brendan.scot>
44d10b1f
RW
48;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com
49;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
50;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
51;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
52;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
53;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
412342d1 54;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
44d10b1f
RW
55;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
56;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
4caf37b0 57;;; Copyright © 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
44d10b1f
RW
58;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
59;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
a9ba0a31 60;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
a91f4eba 61;;; Copyright © 2019 Sam <smbaines8@gmail.com>
8c141421 62;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
f825e605 63;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
fb236fdd 64;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
edeb04bf 65;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
e308b4f0 66;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
30e7c03a 67;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
44d10b1f
RW
68;;;
69;;; This file is part of GNU Guix.
70;;;
71;;; GNU Guix is free software; you can redistribute it and/or modify it
72;;; under the terms of the GNU General Public License as published by
73;;; the Free Software Foundation; either version 3 of the License, or (at
74;;; your option) any later version.
75;;;
76;;; GNU Guix is distributed in the hope that it will be useful, but
77;;; WITHOUT ANY WARRANTY; without even the implied warranty of
78;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
79;;; GNU General Public License for more details.
80;;;
81;;; You should have received a copy of the GNU General Public License
82;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
83
84(define-module (gnu packages python-xyz)
85 #:use-module ((guix licenses) #:prefix license:)
86 #:use-module (gnu packages)
87 #:use-module (gnu packages algebra)
88 #:use-module (gnu packages adns)
89 #:use-module (gnu packages attr)
90 #:use-module (gnu packages backup)
91 #:use-module (gnu packages bash)
92 #:use-module (gnu packages check)
93 #:use-module (gnu packages compression)
94 #:use-module (gnu packages crypto)
95 #:use-module (gnu packages databases)
f825e605 96 #:use-module (gnu packages dbm)
44d10b1f
RW
97 #:use-module (gnu packages file)
98 #:use-module (gnu packages fontutils)
99 #:use-module (gnu packages gcc)
100 #:use-module (gnu packages geo)
101 #:use-module (gnu packages ghostscript)
102 #:use-module (gnu packages gl)
103 #:use-module (gnu packages glib)
104 #:use-module (gnu packages graphviz)
105 #:use-module (gnu packages graphics)
106 #:use-module (gnu packages gstreamer)
107 #:use-module (gnu packages gtk)
108 #:use-module (gnu packages icu4c)
109 #:use-module (gnu packages image)
110 #:use-module (gnu packages imagemagick)
111 #:use-module (gnu packages libevent)
112 #:use-module (gnu packages libffi)
113 #:use-module (gnu packages linux)
114 #:use-module (gnu packages llvm)
115 #:use-module (gnu packages man)
116 #:use-module (gnu packages maths)
42f0b0c2 117 #:use-module (gnu packages monitoring)
44d10b1f
RW
118 #:use-module (gnu packages multiprecision)
119 #:use-module (gnu packages networking)
120 #:use-module (gnu packages ncurses)
121 #:use-module (gnu packages openstack)
122 #:use-module (gnu packages pcre)
123 #:use-module (gnu packages perl)
124 #:use-module (gnu packages pkg-config)
125 #:use-module (gnu packages python)
d362b11d 126 #:use-module (gnu packages python-check)
15b65617 127 #:use-module (gnu packages python-compression)
44d10b1f
RW
128 #:use-module (gnu packages python-crypto)
129 #:use-module (gnu packages python-web)
130 #:use-module (gnu packages qt)
131 #:use-module (gnu packages readline)
132 #:use-module (gnu packages sdl)
133 #:use-module (gnu packages search)
134 #:use-module (gnu packages shells)
9d0c291e 135 #:use-module (gnu packages sphinx)
44d10b1f
RW
136 #:use-module (gnu packages ssh)
137 #:use-module (gnu packages terminals)
138 #:use-module (gnu packages tex)
139 #:use-module (gnu packages texinfo)
140 #:use-module (gnu packages time)
141 #:use-module (gnu packages tls)
142 #:use-module (gnu packages version-control)
143 #:use-module (gnu packages video)
144 #:use-module (gnu packages web)
145 #:use-module (gnu packages base)
146 #:use-module (gnu packages xml)
147 #:use-module (gnu packages xorg)
148 #:use-module (gnu packages xdisorg)
149 #:use-module (gnu packages tcl)
150 #:use-module (gnu packages bdw-gc)
f98232a3 151 #:use-module (gnu packages serialization)
44d10b1f
RW
152 #:use-module (guix packages)
153 #:use-module (guix download)
154 #:use-module (guix git-download)
a042d348 155 #:use-module (guix hg-download)
44d10b1f
RW
156 #:use-module (guix utils)
157 #:use-module (guix build-system gnu)
158 #:use-module (guix build-system cmake)
159 #:use-module (guix build-system python)
160 #:use-module (guix build-system trivial)
161 #:use-module (srfi srfi-1)
162 #:use-module (srfi srfi-26))
163
164(define-public python-psutil
165 (package
166 (name "python-psutil")
7abf3cbf 167 (version "5.6.2")
44d10b1f
RW
168 (source
169 (origin
170 (method url-fetch)
171 (uri (pypi-uri "psutil" version))
172 (sha256
173 (base32
7abf3cbf 174 "1v95vb5385qscfdvphv8l2w22bmir3d7yhpi02n58v3mlqy1r3l2"))))
44d10b1f
RW
175 (build-system python-build-system)
176 (arguments
177 ;; FIXME: some tests does not return and times out.
178 '(#:tests? #f))
179 (home-page "https://www.github.com/giampaolo/psutil")
180 (synopsis "Library for retrieving information on running processes")
181 (description
182 "psutil (Python system and process utilities) is a library for retrieving
183information on running processes and system utilization (CPU, memory, disks,
184network) in Python. It is useful mainly for system monitoring, profiling and
185limiting process resources and management of running processes. It implements
186many functionalities offered by command line tools such as: ps, top, lsof,
187netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
188pidof, tty, taskset, pmap.")
189 (properties `((python2-variant . ,(delay python2-psutil))))
190 (license license:bsd-3)))
191
192(define-public python2-psutil
193 (let ((base (package-with-python2 (strip-python2-variant python-psutil))))
194 (package
195 (inherit base)
196 (propagated-inputs
197 `(("python2-enum34" ,python2-enum34) ;optional
198 ,@(package-propagated-inputs base))))))
199
200(define-public python-shapely
201 (package
202 (name "python-shapely")
6d94465b 203 (version "1.6.4.post2")
44d10b1f
RW
204 (source
205 (origin
206 (method url-fetch)
207 (uri (pypi-uri "Shapely" version))
208 (sha256
209 (base32
6d94465b 210 "03r42fmd9alp6r3q95ad6rldq2f7n1wimrw53zy5kpn33yv7pf64"))))
44d10b1f
RW
211 (build-system python-build-system)
212 (native-inputs
213 `(("python-cython" ,python-cython)
214 ("python-matplotlib" ,python-matplotlib)
215 ("python-pytest" ,python-pytest)
216 ("python-pytest-cov" ,python-pytest-cov)))
217 (inputs
218 `(("geos" ,geos)))
219 (propagated-inputs
220 `(("python-numpy" ,python-numpy)))
221 (arguments
222 `(#:phases
223 (modify-phases %standard-phases
224 (add-after 'unpack 'patch-geos-path
225 (lambda* (#:key inputs #:allow-other-keys)
226 (let ((geos (assoc-ref inputs "geos"))
227 (glibc (assoc-ref inputs ,(if (%current-target-system)
228 "cross-libc" "libc"))))
229 (substitute* "shapely/geos.py"
230 (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
231 (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
232 geos "/lib/libgeos_c.so'])"))
233 (("free = load_dll\\('c'\\)\\.free")
234 (string-append "free = load_dll('c', fallbacks=['"
235 glibc "/lib/libc.so.6']).free"))))
236 #t)))))
237 (home-page "https://github.com/Toblerity/Shapely")
238 (synopsis "Library for the manipulation and analysis of geometric objects")
239 (description "Shapely is a Python package for manipulation and analysis of
240planar geometric objects. It is based on the @code{GEOS} library.")
241 (license license:bsd-3)))
242
a91f4eba
S
243(define-public python-shortuuid
244 (package
245 (name "python-shortuuid")
246 (version "0.5.0")
247 (source
248 (origin
249 (method url-fetch)
250 (uri (pypi-uri "shortuuid" version))
251 (sha256
252 (base32
253 "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh"))))
254 (build-system python-build-system)
255 (native-inputs
256 `(("python-pep8" ,python-pep8)))
257 (home-page "https://github.com/skorokithakis/shortuuid")
258 (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs")
259 (description
260 "@code{shortuuid} is a Python library for generating concise, unambiguous
261and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid}
262module and then similar looking characters are removed.")
263 (license license:bsd-3)))
264
44d10b1f
RW
265(define-public python-logwrap
266 (package
267 (name "python-logwrap")
268 (version "3.2.1")
269 (source
270 (origin
271 (method url-fetch)
272 (uri (pypi-uri "logwrap" version ".zip"))
273 (sha256
274 (base32
275 "1d2k0hvpbi51vl410y8fbs5m0nxnlh2k7gr2nrh3k81ibhzscsra"))))
276 (build-system python-build-system)
277 (propagated-inputs
278 `(("python-six" ,python-six)
279 ("python-typing" ,python-typing)))
280 (native-inputs
281 `(("unzip" ,unzip)
282 ("python-cython" ,python-cython)
283 ("python-pytest" ,python-pytest)
284 ("python-pytest-cov" ,python-pytest-cov)
285 ("python-pytest-runner" ,python-pytest-runner)))
286 (home-page "https://github.com/penguinolog/logwrap")
287 (synopsis "Decorator for logging function arguments")
288 (description "This package provides a decorator to log function arguments
289and function call return values in a human-readable way.")
290 (license license:asl2.0)))
291
292(define-public python2-shapely
293 (package-with-python2 python-shapely))
294
295(define-public python-clyent
296 (package
297 (name "python-clyent")
298 (version "1.2.1")
299 (source
300 (origin
301 (method url-fetch)
302 (uri (pypi-uri "clyent" version))
303 (sha256
304 (base32
305 "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj"))))
306 (build-system python-build-system)
307 (native-inputs
308 `(("python-mock" ,python-mock)))
309 (home-page "https://github.com/binstar/clyent")
310 (synopsis "Command line client library")
311 (description "Clyent is a Python command line utiliy library. It is used
312by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
313 (license license:bsd-3)))
314
315(define-public python2-clyent
316 (package-with-python2 python-clyent))
317
318(define-public python-babel
319 (package
320 (name "python-babel")
93253411 321 (version "2.7.0")
44d10b1f
RW
322 (source
323 (origin
324 (method url-fetch)
325 (uri (pypi-uri "Babel" version))
326 (sha256
327 (base32
93253411 328 "0a7wawx8vsg7igvz6p3x909fskhg4b2y1910xk4f4c8y22p3aqg8"))))
44d10b1f
RW
329 (build-system python-build-system)
330 (native-inputs
331 `(("python-freezegun" ,python-freezegun)
332 ("python-pytest" ,python-pytest)))
333 (propagated-inputs
334 `(("python-pytz" ,python-pytz)))
335 (arguments
336 `(#:phases (modify-phases %standard-phases
337 (replace 'check
338 (lambda _ (invoke "pytest" "-vv"))))))
339 (home-page "http://babel.pocoo.org/")
340 (synopsis
341 "Tools for internationalizing Python applications")
342 (description
343 "Babel is composed of two major parts:
344- tools to build and work with gettext message catalogs
345- a Python interface to the CLDR (Common Locale Data Repository), providing
346access to various locale display names, localized number and date formatting,
347etc. ")
348 (license license:bsd-3)))
349
350(define-public python2-babel
351 (package-with-python2 python-babel))
352
93253411
MB
353;; Sphinx < 2.0 requires this version. Remove once no longer needed.
354(define-public python2-babel-2.6
355 (package
356 (inherit python2-babel)
357 (version "2.6.0")
358 (source (origin
359 (method url-fetch)
360 (uri (pypi-uri "Babel" version))
361 (sha256
362 (base32
363 "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc"))))))
364
44d10b1f
RW
365(define-public python2-backport-ssl-match-hostname
366 (package
367 (name "python2-backport-ssl-match-hostname")
368 (version "3.5.0.1")
369 (source
370 (origin
371 (method url-fetch)
2c1f0d09 372 (uri (pypi-uri "backports.ssl_match_hostname" version))
44d10b1f
RW
373 (sha256
374 (base32
375 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
376 (build-system python-build-system)
377 (arguments
378 `(#:python ,python-2
379 #:tests? #f)) ; no test target
380 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
381 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
382 (description
383 "This backport brings the ssl.match_hostname() function to users of
384earlier versions of Python. The function checks the hostname in the
385certificate returned by the server to which a connection has been established,
386and verifies that it matches the intended target hostname.")
387 (license license:psfl)))
388
389(define-public python-hdf4
390 (package
391 (name "python-hdf4")
392 (version "0.9")
393 (source
394 (origin
395 (method url-fetch)
396 (uri (pypi-uri name version))
397 (sha256
398 (base32
399 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
400 (build-system python-build-system)
401 (native-inputs `(("nose" ,python-nose)))
402 (propagated-inputs `(("numpy" ,python-numpy)))
403 (inputs
404 `(("hdf4" ,hdf4)
405 ("libjpeg" ,libjpeg)
406 ("zlib" ,zlib)))
407 (arguments
408 `(#:phases
409 (modify-phases %standard-phases
410 (replace 'check
411 (lambda _
412 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
413 ;; on to import numpy. Somehow this works on their CI system.
414 ;; Let's just manage PYTHONPATH here instead.
415 (substitute* "runexamples.sh"
416 (("export PYTHONPATH=.*") ""))
417 (setenv "PYTHONPATH"
418 (string-append (getcwd) ":"
419 (getenv "PYTHONPATH")))
420 (invoke "./runexamples.sh")
421 (invoke "nosetests" "-v"))))))
422 (home-page "https://github.com/fhs/python-hdf4")
423 (synopsis "Python interface to the NCSA HDF4 library")
424 (description
425 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
426which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
427NetCDF files can also be read and modified. Python-HDF4 is a fork of
428@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
429 (license license:expat)))
430
431(define-public python2-hdf4
432 (package-with-python2 python-hdf4))
433
434(define-public python-h5py
435 (package
436 (name "python-h5py")
437 (version "2.8.0")
438 (source
439 (origin
440 (method url-fetch)
441 (uri (pypi-uri "h5py" version))
442 (sha256
443 (base32
444 "0mdr6wrq02ac93m1aqx9kad0ppfzmm4imlxqgyy1x4l7hmdcc9p6"))))
445 (build-system python-build-system)
446 (arguments
447 `(#:tests? #f ; no test target
448 #:phases
449 (modify-phases %standard-phases
450 (add-after 'unpack 'fix-hdf5-paths
451 (lambda* (#:key inputs #:allow-other-keys)
452 (let ((prefix (assoc-ref inputs "hdf5")))
453 (substitute* "setup_build.py"
454 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
455 (string-append "['" prefix "/lib" "']"))
456 (("'/opt/local/include', '/usr/local/include'")
457 (string-append "'" prefix "/include" "'")))
458 (substitute* "setup_configure.py"
459 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
460 (string-append "['" prefix "/lib" "']")))
461 #t))))))
462 (propagated-inputs
463 `(("python-six" ,python-six)
464 ("python-numpy" ,python-numpy)))
465 (inputs
466 `(("hdf5" ,hdf5)))
467 (native-inputs
468 `(("python-cython" ,python-cython)
469 ("python-pkgconfig" ,python-pkgconfig)))
470 (home-page "http://www.h5py.org/")
471 (synopsis "Read and write HDF5 files from Python")
472 (description
473 "The h5py package provides both a high- and low-level interface to the
474HDF5 library from Python. The low-level interface is intended to be a
475complete wrapping of the HDF5 API, while the high-level component supports
476access to HDF5 files, datasets and groups using established Python and NumPy
477concepts.")
478 (license license:bsd-3)))
479
480(define-public python2-h5py
481 (package-with-python2 python-h5py))
482
8b89dedc
RW
483(define-public python-sh
484 (package
485 (name "python-sh")
486 (version "1.12.14")
487 (source
488 (origin
489 (method url-fetch)
490 (uri (pypi-uri "sh" version))
491 (sha256
492 (base32
493 "1z2hx357xp3v4cv44xmqp7lli3frndqpyfmpbxf7n76h7s1zaaxm"))))
494 (build-system python-build-system)
fd3638d8
EF
495 (arguments
496 '(#:phases
497 (modify-phases %standard-phases
498 (replace 'check
499 (lambda _
ca983a2f
NG
500 ;; XXX: A Python 2 test fails when HOME=/homeless-shelter.
501 (setenv "HOME" "/tmp")
fd3638d8
EF
502 (invoke "python" "sh.py" "test"))))))
503 (native-inputs
504 `(("python-coverage" ,python-coverage)))
8b89dedc
RW
505 (home-page "https://github.com/amoffat/sh")
506 (synopsis "Python subprocess replacement")
507 (description "This package provides a replacement for Python's
508@code{subprocess} feature.")
509 (license license:expat)))
510
3869effd
RW
511(define-public python2-sh
512 (package-with-python2 python-sh))
513
d362b11d
RW
514(define-public python-cftime
515 (package
516 (name "python-cftime")
517 (version "1.0.3.4")
518 (source
519 (origin
520 (method url-fetch)
521 (uri (pypi-uri "cftime" version))
522 (sha256
523 (base32
524 "0362dhxbzk593walyjz30dll6y2y79wialik647cbwdsf3ad0x6x"))))
525 (build-system python-build-system)
526 (propagated-inputs
527 `(("python-numpy" ,python-numpy)))
528 (native-inputs
529 `(("python-coveralls" ,python-coveralls)
530 ("python-cython" ,python-cython)
531 ("python-pytest-cov" ,python-pytest-cov)))
532 (home-page "https://github.com/Unidata/cftime")
533 (synopsis "Library for time handling")
534 (description
535 "This package provides time-handling functionality that used to be part
536of the netcdf4 package before.")
537 ;; This package claims to include code under the GPLv3 but is released
538 ;; under ISC.
539 (license (list license:isc license:gpl3+))))
540
44d10b1f
RW
541(define-public python-netcdf4
542 (package
543 (name "python-netcdf4")
93e7b209 544 (version "1.4.2")
44d10b1f
RW
545 (source
546 (origin
547 (method url-fetch)
548 (uri (pypi-uri "netCDF4" version))
549 (sha256
550 (base32
93e7b209 551 "0c0sklgrmv15ygliin8qq0hp7vanmbi74m6zpi0r1ksr0hssyd5r"))))
44d10b1f 552 (build-system python-build-system)
93e7b209
RW
553 (arguments
554 '(#:phases
555 (modify-phases %standard-phases
556 (add-after 'unpack 'configure-locations
557 (lambda* (#:key inputs #:allow-other-keys)
558 (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))
559 #t)))))
44d10b1f
RW
560 (native-inputs
561 `(("python-cython" ,python-cython)))
562 (propagated-inputs
93e7b209
RW
563 `(("python-numpy" ,python-numpy)
564 ("python-cftime" ,python-cftime)))
44d10b1f
RW
565 (inputs
566 `(("netcdf" ,netcdf)
567 ("hdf4" ,hdf4)
568 ("hdf5" ,hdf5)))
93e7b209 569 (home-page "https://github.com/Unidata/netcdf4-python")
44d10b1f
RW
570 (synopsis "Python/numpy interface to the netCDF library")
571 (description "Netcdf4-python is a Python interface to the netCDF C
572library. netCDF version 4 has many features not found in earlier
573versions of the library and is implemented on top of HDF5. This module
574can read and write files in both the new netCDF 4 and the old netCDF 3
575format, and can create files that are readable by HDF5 clients. The
576API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
577to users of that module.")
578 ;; The software is mainly ISC, but includes some files covered
579 ;; by the Expat license.
580 (license (list license:isc license:expat))))
581
582(define-public python2-netcdf4
583 (package-with-python2 python-netcdf4))
584
585(define-public python-lockfile
586 (package
587 (name "python-lockfile")
588 (version "0.12.2")
589 (source
590 (origin
591 (method url-fetch)
8318bf07 592 (uri (pypi-uri "lockfile" version))
44d10b1f
RW
593 (sha256
594 (base32
595 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
596 (build-system python-build-system)
597 (arguments '(#:test-target "check"))
598 (native-inputs
599 `(("python-pbr" ,python-pbr)))
600 (home-page "https://launchpad.net/pylockfile")
601 (synopsis "Platform-independent file locking module")
602 (description
603 "The lockfile package exports a LockFile class which provides a simple
604API for locking files.")
605 (license license:expat)))
606
607(define-public python2-lockfile
608 (package-with-python2 python-lockfile))
609
610(define-public python-semantic-version
611 (package
612 (name "python-semantic-version")
613 (version "2.6.0")
614 (source
615 (origin
616 (method url-fetch)
617 (uri (pypi-uri "semantic_version" version))
618 (sha256
619 (base32
620 "1h2l9xyg1zzsda6kjcmfcgycbvrafwci283vcr1v5sbk01l2hhra"))))
621 (build-system python-build-system)
622 (arguments
623 `(#:tests? #f)) ; PyPI tarball lacks tests
624 (home-page "https://github.com/rbarrois/python-semanticversion")
625 (synopsis "Semantic versioning module for Python")
626 (description
627 "The @code{semantic_version} class is a small library for handling
628@uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python.
629
630It can compare versions, generate a new version that represents a bump in one of
631the version levels, and check whether any given string is a proper semantic
632version identifier.")
633 (license license:bsd-3)))
634
635(define-public python2-semantic-version
636 (package-with-python2 python-semantic-version))
637
638(define-public python-serpent
639 (package
640 (name "python-serpent")
fa9d14ac 641 (version "1.28")
44d10b1f
RW
642 (source
643 (origin
644 (method url-fetch)
645 (uri (pypi-uri "serpent" version))
646 (sha256
fa9d14ac 647 (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk"))))
44d10b1f 648 (build-system python-build-system)
fa9d14ac
TGR
649 (native-inputs
650 `(("python-attrs" ,python-attrs)
651 ("python-pytz" ,python-pytz)))
44d10b1f
RW
652 (home-page "https://github.com/irmen/Serpent")
653 (synopsis "Serializer for literal Python expressions")
654 (description
1d3c7803
TGR
655 "Serpent provides @code{ast.literal_eval()}-compatible object tree
656serialization. It serializes an object tree into bytes (an utf-8 encoded
657string) that can be decoded and then passed as-is to @code{ast.literal_eval()}
658to rebuild the original object tree.
659
660Because only safe literals are encoded, it is safe to send serpent data to
661other machines, such as over the network.")
44d10b1f
RW
662 (license license:expat)))
663
664(define-public python-setuptools
665 (package
666 (name "python-setuptools")
e39d4933 667 (version "41.0.1")
44d10b1f
RW
668 (source
669 (origin
670 (method url-fetch)
671 (uri (pypi-uri "setuptools" version ".zip"))
672 (sha256
673 (base32
e39d4933 674 "04sns22y2hhsrwfy1mha2lgslvpjsjsz8xws7h2rh5a7ylkd28m2"))
44d10b1f
RW
675 (modules '((guix build utils)))
676 (snippet
677 '(begin
678 ;; Remove included binaries which are used to build self-extracting
679 ;; installers for Windows.
680 ;; TODO: Find some way to build them ourself so we can include them.
681 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
682 #t))))
683 (build-system python-build-system)
684 ;; FIXME: Tests require pytest, which itself relies on setuptools.
685 ;; One could bootstrap with an internal untested setuptools.
686 (arguments
687 `(#:tests? #f))
688 (home-page "https://pypi.python.org/pypi/setuptools")
689 (synopsis
690 "Library designed to facilitate packaging Python projects")
691 (description
692 "Setuptools is a fully-featured, stable library designed to facilitate
693packaging Python projects, where packaging includes:
694Python package and module definitions,
695distribution package metadata,
696test hooks,
697project installation,
698platform-specific details,
699Python 3 support.")
700 ;; TODO: setuptools now bundles the following libraries:
701 ;; packaging, pyparsing, six and appdirs. How to unbundle?
702 (license (list license:psfl ; setuptools itself
703 license:expat ; six, appdirs, pyparsing
704 license:asl2.0 ; packaging is dual ASL2/BSD-2
705 license:bsd-2))))
706
707(define-public python2-setuptools
708 (package-with-python2 python-setuptools))
709
710(define-public python-uniseg
711 (package
712 (name "python-uniseg")
713 (version "0.7.1")
714 (source
715 (origin
716 (method url-fetch)
717 (uri (pypi-uri "uniseg" version ".zip"))
718 (sha256
719 (base32
720 "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2"))))
721 (build-system python-build-system)
722 (arguments
723 '(#:tests? #f)) ; The test suite requires network access.
724 (native-inputs
725 `(("unzip" ,unzip)))
726 (home-page
727 "https://bitbucket.org/emptypage/uniseg-python")
728 (synopsis
729 "Python library to determine Unicode text segmentations")
730 (description
731 "Uniseg is a Python package used to determine Unicode text segmentations.
732Supported segmentations include:
733@enumerate
734@item @dfn{Code point} (any value in the Unicode codespace)
735@item @dfn{Grapheme cluster} (user-perceived character made of a single or
736multiple Unicode code points, e.g. \"G\" + acute-accent)
737@item Word break
738@item Sentence break
739@item Line break
740@end enumerate")
741 (license license:expat)))
742
743(define-public python2-uniseg
744 (package-with-python2 python-uniseg))
745
746(define-public python-humanfriendly
747 (package
748 (name "python-humanfriendly")
749 (version "4.4.1")
750 (source
751 (origin
752 (method url-fetch)
753 (uri (pypi-uri "humanfriendly" version))
754 (sha256
755 (base32
756 "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
757 (build-system python-build-system)
758 (arguments
759 `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
760 #:tests? #f))
761 (propagated-inputs
762 `(("python-monotonic" ,python-monotonic)))
763 (home-page "https://humanfriendly.readthedocs.io")
764 (synopsis "Human-friendly input and output in Python")
765 (description
766 "The functions and classes in @code{humanfriendly} can be used to make
767text interfaces more user-friendly. It includes tools to parse and format
768numbers, file sizes, and timespans, timers for long-running operations, menus
769to allow the user to choose from a list of options, and terminal interaction
770helpers.")
771 (license license:expat)))
772
773(define-public python2-humanfriendly
774 (package-with-python2 python-humanfriendly))
775
776(define-public python-capturer
777 (package
778 (name "python-capturer")
779 (version "2.4")
780 (source
781 (origin
782 (method url-fetch)
783 (uri (pypi-uri "capturer" version))
784 (sha256
785 (base32
786 "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089"))))
787 (build-system python-build-system)
788 (arguments
789 `(#:tests? #f))
790 (propagated-inputs
791 `(("python-humanfriendly" ,python-humanfriendly)))
792 (home-page "https://capturer.readthedocs.io")
793 (synopsis "Capture stdout and stderr streams of the current process")
794 (description
795 "The capturer package makes it easy to capture the stdout and stderr
796streams of the current process and subprocesses. Output can be relayed
797to the terminal in real time but is also available to the Python program
798for additional processing.")
799 (license license:expat)))
800
801(define-public python2-capturer
802 (package-with-python2 python-capturer))
803
804(define-public python-case
805 (package
806 (name "python-case")
807 (version "1.5.3")
808 (source
809 (origin
810 (method url-fetch)
811 (uri (pypi-uri "case" version))
812 (sha256
813 (base32
814 "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8"))))
815 (build-system python-build-system)
816 (propagated-inputs
817 `(("python-mock" ,python-mock)
818 ("python-nose" ,python-nose)
819 ("python-six" ,python-six)
820 ("python-unittest2" ,python-unittest2)))
821 (native-inputs
822 `(("python-coverage" ,python-coverage)))
823 (home-page "https://github.com/celery/case")
824 (synopsis "Unittest utilities and convenience methods")
825 (description
826 "The @code{case} package provides utilities on top of unittest, including
827some helpful Python 2 compatibility convenience methods.")
828 (license license:bsd-3)))
829
830(define-public python-verboselogs
831 (package
832 (name "python-verboselogs")
833 (version "1.7")
834 (source
835 (origin
836 (method url-fetch)
837 (uri (pypi-uri "verboselogs" version))
838 (sha256
839 (base32
840 "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3"))))
841 (build-system python-build-system)
842 (native-inputs
843 `(("python-mock" ,python-mock)
844 ("python-astroid" ,python-astroid)
845 ("python-pylint" ,python-pylint)))
846 (home-page "https://verboselogs.readthedocs.io")
847 (synopsis "Verbose logging level for Python's logging module")
848 (description
849 "The @code{verboselogs} package extends Python's @code{logging} module to
850add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
851 (license license:expat)))
852
853(define-public python2-verboselogs
854 (package-with-python2 python-verboselogs))
855
856(define-public python-coloredlogs
857 (package
858 (name "python-coloredlogs")
859 (version "7.3")
860 (source
861 (origin
862 (method url-fetch)
863 (uri (pypi-uri "coloredlogs" version))
864 (sha256
865 (base32
866 "1blcann6dyg5dhps9pg12rn0q0rjrlajpmmil0gy0j4cbvnl2il9"))))
867 (build-system python-build-system)
868 (arguments
869 `(;Tests require some updated modules
870 #:tests? #f))
871 (propagated-inputs
872 `(("python-capturer" ,python-capturer)))
873 (home-page "https://coloredlogs.readthedocs.io")
874 (synopsis "Colored stream handler for Python's logging module")
875 (description
876 "The @code{coloredlogs} package enables colored terminal output for
877Python's logging module. The @code{ColoredFormatter} class inherits from
878@code{logging.Formatter} and uses ANSI escape sequences to render your logging
879messages in color.")
880 (license license:expat)))
881
882(define-public python2-coloredlogs
883 (package-with-python2 python-coloredlogs))
884
4caf37b0
MC
885(define-public python-et-xmlfile
886 (package
887 (name "python-et-xmlfile")
888 (version "1.0.1")
889 (source
890 (origin
891 (method url-fetch)
892 (uri (pypi-uri "et_xmlfile" version))
893 (sha256
894 (base32
895 "0nrkhcb6jdrlb6pwkvd4rycw34y3s931hjf409ij9xkjsli9fkb1"))))
896 (build-system python-build-system)
897 (arguments
898 `(#:phases (modify-phases %standard-phases
899 (replace 'check
900 (lambda _
901 (invoke "pytest"))))))
902 (native-inputs
903 `(("python-pytest" ,python-pytest)
904 ("python-lxml" ,python-lxml))) ;used for the tests
905 (home-page "https://bitbucket.org/openpyxl/et_xmlfile")
906 (synopsis "Low memory implementation of @code{lxml.xmlfile}")
907 (description "This Python library is based upon the @code{xmlfile} module
908from @code{lxml}. It aims to provide a low memory, compatible implementation
909of @code{xmlfile}.")
910 (license license:expat)))
911
912(define-public python2-et-xmlfile
913 (package-with-python2 python-et-xmlfile))
914
a042d348
MC
915(define-public python-openpyxl
916 (package
917 (name "python-openpyxl")
441e6d93 918 (version "2.6.2")
a042d348
MC
919 (source
920 (origin
921 ;; We use the upstream repository, as the tests are not included in the
922 ;; PyPI releases.
923 (method hg-fetch)
924 (uri (hg-reference
925 (url "https://bitbucket.org/openpyxl/openpyxl")
926 (changeset version)))
927 (file-name (string-append name "-" version "-checkout"))
928 (sha256
441e6d93 929 (base32 "1qhij6kcvdxqjy4g6193nsv4q7fy8n4fwyd3c2z047idlm6s3j4w"))))
a042d348
MC
930 (build-system python-build-system)
931 (arguments
932 `(#:phases (modify-phases %standard-phases
933 (replace 'check
934 (lambda _
935 (invoke "pytest"))))))
936 (native-inputs
937 ;; For the test suite.
938 `(("python-lxml" ,python-lxml)
939 ("python-pillow" ,python-pillow)
940 ("python-pytest" ,python-pytest)))
941 (propagated-inputs
942 `(("python-et-xmlfile" ,python-et-xmlfile)
943 ("python-jdcal" ,python-jdcal)))
944 (home-page "https://openpyxl.readthedocs.io")
945 (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files")
946 (description "This Python library allows reading and writing to the Excel XLSX, XLSM,
947XLTX and XLTM file formats that are defined by the Office Open XML (OOXML)
948standard.")
949 (license license:expat)))
950
44d10b1f
RW
951(define-public python-eventlet
952 (package
953 (name "python-eventlet")
954 (version "0.20.1")
955 (source
956 (origin
957 (method url-fetch)
958 (uri (pypi-uri "eventlet" version))
959 (sha256
960 (base32
961 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
962 (build-system python-build-system)
963 (propagated-inputs
964 `(("python-greenlet" ,python-greenlet)))
965 (arguments
966 ;; TODO: Requires unpackaged 'enum-compat'.
967 '(#:tests? #f))
968 (home-page "http://eventlet.net")
969 (synopsis "Concurrent networking library for Python")
970 (description
971 "Eventlet is a concurrent networking library for Python that
972allows you to change how you run your code, not how you write it.
973It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
974Coroutines ensure that the developer uses a blocking style of programming
975that is similar to threading, but provide the benefits of non-blocking I/O.
976The event dispatch is implicit, which means you can easily use @code{Eventlet}
977from the Python interpreter, or as a small part of a larger application.")
978 (license license:expat)))
979
980(define-public python2-eventlet
981 (let ((base (package-with-python2
982 (strip-python2-variant python-eventlet))))
983 (package (inherit base)
984 (propagated-inputs
985 `(("python2-enum34" ,python2-enum34)
986 ,@(package-propagated-inputs base))))))
987
988(define-public python-six
989 (package
990 (name "python-six")
991 (version "1.11.0")
992 (source
993 (origin
994 (method url-fetch)
995 (uri (pypi-uri "six" version))
996 (sha256
997 (base32
998 "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h"))))
999 (build-system python-build-system)
1000 (arguments
1001 `(#:phases
1002 (modify-phases %standard-phases
1003 (replace 'check
1004 (lambda _
1005 (invoke "py.test" "-v"))))))
1006 (native-inputs
1007 `(("python-py" ,python-py)
1008 ("python-pytest" ,python-pytest-bootstrap)))
1009 (home-page "https://pypi.python.org/pypi/six/")
1010 (synopsis "Python 2 and 3 compatibility utilities")
1011 (description
1012 "Six is a Python 2 and 3 compatibility library. It provides utility
1013functions for smoothing over the differences between the Python versions with
1014the goal of writing Python code that is compatible on both Python versions.
1015Six supports every Python version since 2.5. It is contained in only one
1016Python file, so it can be easily copied into your project.")
1017 (license license:x11)))
1018
1019(define-public python2-six
1020 (package-with-python2 python-six))
1021
1022(define-public python-six-bootstrap
1023 (package
1024 (inherit python-six)
1025 (name "python-six-bootstrap")
1026 (native-inputs `())
1027 (arguments `(#:tests? #f))))
1028
1029(define-public python2-six-bootstrap
1030 (package-with-python2 python-six-bootstrap))
1031
1032(define-public python-schedule
1033 (package
1034 (name "python-schedule")
1035 (version "0.4.3")
1036 (source
1037 (origin
1038 (method url-fetch)
1039 (uri (pypi-uri "schedule" version))
1040 (sha256
1041 (base32
1042 "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i"))))
1043 (build-system python-build-system)
1044 (native-inputs
1045 `(("python-pytest" ,python-pytest)
1046 ("python-mock" ,python-mock)))
1047 (home-page "https://github.com/dbader/schedule")
1048 (synopsis "Schedule periodic function calls in Python")
1049 (description
1050 "Schedule is an in-process scheduler for periodic jobs that uses the
1051builder pattern for configuration. Schedule lets you run Python functions (or
1052any other callable) periodically at pre-determined intervals using a simple,
1053human-friendly syntax.")
1054 (license license:expat)))
1055
1056(define-public python2-schedule
1057 (package-with-python2 python-schedule))
1058
1059(define-public python-pandas
1060 (package
1061 (name "python-pandas")
c0d43f62 1062 (version "0.24.2")
44d10b1f
RW
1063 (source
1064 (origin
1065 (method url-fetch)
1066 (uri (pypi-uri "pandas" version))
1067 (sha256
c0d43f62 1068 (base32 "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag"))))
44d10b1f
RW
1069 (build-system python-build-system)
1070 (arguments
1071 `(#:modules ((guix build utils)
1072 (guix build python-build-system)
1073 (ice-9 ftw)
1074 (srfi srfi-26))
1075 #:phases (modify-phases %standard-phases
c0d43f62
MC
1076 (add-after 'unpack 'patch-which
1077 (lambda* (#:key inputs #:allow-other-keys)
1078 (let ((which (assoc-ref inputs "which")))
1079 (substitute* "pandas/io/clipboard/__init__.py"
1080 (("^CHECK_CMD = .*")
1081 (string-append "CHECK_CMD = \"" which "\"\n"))))
1082 #t))
44d10b1f
RW
1083 (replace 'check
1084 (lambda _
1085 (let ((build-directory
1086 (string-append
1087 (getcwd) "/build/"
1088 (car (scandir "build"
1089 (cut string-prefix? "lib." <>))))))
1090 ;; Disable the "strict data files" option which causes
c0d43f62
MC
1091 ;; the build to error out if required data files are
1092 ;; not available (as is the case with PyPI archives).
44d10b1f
RW
1093 (substitute* "setup.cfg"
1094 (("addopts = --strict-data-files") "addopts = "))
1095 (with-directory-excursion build-directory
c0d43f62
MC
1096 ;; Delete tests that require "moto" which is not yet
1097 ;; in Guix.
44d10b1f
RW
1098 (for-each delete-file
1099 '("pandas/tests/io/conftest.py"
1100 "pandas/tests/io/json/test_compression.py"
1101 "pandas/tests/io/parser/test_network.py"
44d10b1f
RW
1102 "pandas/tests/io/test_parquet.py"))
1103 (invoke "pytest" "-vv" "pandas" "--skip-slow"
1104 "--skip-network" "-k"
1105 ;; XXX: Due to the deleted tests above.
1106 "not test_read_s3_jsonl"))))))))
1107 (propagated-inputs
1108 `(("python-numpy" ,python-numpy)
667c6ef5 1109 ("python-openpyxl" ,python-openpyxl)
44d10b1f 1110 ("python-pytz" ,python-pytz)
667c6ef5
MC
1111 ("python-dateutil" ,python-dateutil)
1112 ("python-xlrd" ,python-xlrd)))
c0d43f62
MC
1113 (inputs
1114 `(("which" ,which)))
44d10b1f
RW
1115 (native-inputs
1116 `(("python-cython" ,python-cython)
1117 ("python-beautifulsoup4" ,python-beautifulsoup4)
1118 ("python-lxml" ,python-lxml)
1119 ("python-html5lib" ,python-html5lib)
1120 ("python-nose" ,python-nose)
c0d43f62
MC
1121 ("python-pytest" ,python-pytest)
1122 ("python-pytest-mock" ,python-pytest-mock)))
44d10b1f
RW
1123 (home-page "https://pandas.pydata.org")
1124 (synopsis "Data structures for data analysis, time series, and statistics")
1125 (description
1126 "Pandas is a Python package providing fast, flexible, and expressive data
1127structures designed to make working with structured (tabular,
1128multidimensional, potentially heterogeneous) and time series data both easy
1129and intuitive. It aims to be the fundamental high-level building block for
1130doing practical, real world data analysis in Python.")
1131 (license license:bsd-3)))
1132
1133(define-public python2-pandas
1134 (package-with-python2 python-pandas))
1135
1136(define-public python2-mechanize
1137 (package
1138 (name "python2-mechanize")
1139 (version "0.2.5")
1140 (source
1141 (origin
1142 (method url-fetch)
1cc184e6 1143 (uri (pypi-uri "mechanize" version))
44d10b1f
RW
1144 (sha256
1145 (base32
1146 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1147 (build-system python-build-system)
1148 (arguments
1149 `(#:python ,python-2 ; apparently incompatible with Python 3
1150 #:tests? #f))
1151 ;; test fails with message
1152 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1153 ;; (python-3.3.2) or
1154 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1155 ;; (python-2.7.5).
1156 ;; The source code is from March 2011 and probably not up-to-date
1157 ;; with respect to python unit tests.
1158 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1159 (synopsis
1160 "Stateful programmatic web browsing in Python")
1161 (description
1162 "Mechanize implements stateful programmatic web browsing in Python,
1163after Andy Lester’s Perl module WWW::Mechanize.")
1164 (license (license:non-copyleft
1165 "file://COPYING"
1166 "See COPYING in the distribution."))))
1167
1168
1169(define-public python-simplejson
1170 (package
1171 (name "python-simplejson")
1172 (version "3.14.0")
1173 (source
1174 (origin
1175 (method url-fetch)
1176 (uri (pypi-uri "simplejson" version))
1177 (sha256
1178 (base32
1179 "1lkv3xlf7ryzi69zqfdbkvpxdfy1rg1rq2yzcnxgf4km5m6difqy"))))
1180 (build-system python-build-system)
1181 (home-page "http://simplejson.readthedocs.org/en/latest/")
1182 (synopsis
1183 "Json library for Python")
1184 (description
1185 "JSON (JavaScript Object Notation) is a subset of JavaScript
1186syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1187format.
1188
1189Simplejson exposes an API familiar to users of the standard library marshal
1190and pickle modules. It is the externally maintained version of the json
1191library contained in Python 2.6, but maintains compatibility with Python 2.5
1192and (currently) has significant performance advantages, even without using
1193the optional C extension for speedups. Simplejson is also supported on
1194Python 3.3+.")
1195 (license license:x11)))
1196
1197(define-public python2-simplejson
1198 (package-with-python2 python-simplejson))
1199
1200
1201(define-public python-pyicu
1202 (package
1203 (name "python-pyicu")
1204 (version "2.2")
1205 (source
1206 (origin
1207 (method url-fetch)
1208 (uri (pypi-uri "PyICU" version))
1209 (sha256
1210 (base32
1211 "0wq9y5fi1ighgf5aws9nr87vi1w44p7q1k83rx2y3qj5d2xyhspa"))))
1212 (build-system python-build-system)
1213 (inputs
1214 `(("icu4c" ,icu4c)))
1215 (native-inputs
1216 `(("python-pytest" ,python-pytest)
1217 ("python-six" ,python-six)))
1218 (home-page "https://github.com/ovalhub/pyicu")
1219 (synopsis "Python extension wrapping the ICU C++ API")
1220 (description
1221 "PyICU is a python extension wrapping the ICU C++ API.")
1222 (properties `((python2-variant . ,(delay python2-pyicu))))
1223 (license license:x11)))
1224
1225(define-public python2-pyicu
1226 (let ((base (package-with-python2
1227 (strip-python2-variant python-pyicu))))
1228 (package
1229 (inherit base)
1230 (arguments
1231 `(,@(package-arguments base)
1232 #:phases
1233 (modify-phases %standard-phases
1234 (add-before 'check 'delete-failing-test
1235 (λ _
1236 ;; XXX: This fails due to Unicode issues unique to Python 2,
1237 ;; it seems: <https://github.com/ovalhub/pyicu/issues/61>.
1238 (delete-file "test/test_Script.py")
1239 #t))))))))
1240
1241(define-public python2-dogtail
1242 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1243 ;; spaces in indentation" with Python 3.
1244 (package
1245 (name "python2-dogtail")
1246 (version "0.9.9")
1247 (source (origin
1248 (method url-fetch)
1249 (uri (pypi-uri "dogtail" version))
1250 (sha256
1251 (base32
1252 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
1253 (build-system python-build-system)
1254 (arguments `(#:python ,python-2
1255 #:tests? #f)) ; invalid command "test"
1256 ;; Currently no offical homepage.
1257 (home-page "https://pypi.python.org/pypi/dogtail/")
1258 (synopsis "GUI test tool and automation framework written in Python")
1259 (description
1260 "Dogtail is a GUI test tool and automation framework written in Python.
1261It uses Accessibility (a11y) technologies to communicate with desktop
1262applications. dogtail scripts are written in Python and executed like any
1263other Python program.")
1264 (license license:gpl2+)))
1265
1266(define-public python-empy
1267 (package
1268 (name "python-empy")
0f6d5115 1269 (version "3.3.3")
44d10b1f
RW
1270 (source (origin
1271 (method url-fetch)
1272 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1273 version ".tar.gz"))
1274 (sha256
1275 (base32
0f6d5115 1276 "1mxfy5mgp473ga1pgz2nvm8ds6z4g3hdky8523z6jzvcs9ny6hcq"))))
44d10b1f
RW
1277 (build-system python-build-system)
1278 (arguments
0f6d5115 1279 `(#:tests? #f)) ; python2 only
44d10b1f
RW
1280 (home-page "http://www.alcyone.com/software/empy/")
1281 (synopsis "Templating system for Python")
1282 (description
1283 "EmPy is a system for embedding Python expressions and statements in
1284template text; it takes an EmPy source file, processes it, and produces
1285output. This is accomplished via expansions, which are special signals to the
1286EmPy system and are set off by a special prefix (by default the at sign, @@).
1287EmPy can expand arbitrary Python expressions and statements in this way, as
1288well as a variety of special forms. Textual data not explicitly delimited in
1289this way is sent unaffected to the output, allowing Python to be used in
1290effect as a markup language. Also supported are callbacks via hooks,
1291recording and playback via diversions, and dynamic, chainable filters. The
1292system is highly configurable via command line options and embedded
1293commands.")
1294 (license license:lgpl2.1+)))
1295
1296(define-public python2-empy
0f064242
TGR
1297 (let ((base (package-with-python2 (strip-python2-variant python-empy))))
1298 (package
1299 (inherit base)
1300 (arguments `(,@(package-arguments base)
1301 #:tests? #t)))))
44d10b1f
RW
1302
1303(define-public python2-element-tree
1304 (package
1305 (name "python2-element-tree")
1306 (version "1.2.6")
1307 (source (origin
1308 (method url-fetch)
1309 (uri (string-append
1310 "http://effbot.org/media/downloads/elementtree-"
1311 version "-20050316.tar.gz"))
1312 (sha256
1313 (base32
1314 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1315 (build-system python-build-system)
1316 (arguments
1317 `(#:python ,python-2 ; seems to be part of Python 3
1318 #:tests? #f)) ; no 'test' sub-command
1319 (synopsis "Toolkit for XML processing in Python")
1320 (description
1321 "ElementTree is a Python library supporting lightweight XML processing.")
1322 (home-page "http://effbot.org/zone/element-index.htm")
1323 (license (license:x11-style
1324 "http://docs.python.org/2/license.html"
1325 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
1326
1327(define-public python2-pybugz
1328 (package
1329 (name "python2-pybugz")
1330 (version "0.6.11")
1331 (source (origin
1332 (method url-fetch)
1333 (uri (string-append
1334 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1335 version ".tar.gz"))
1336 (sha256
1337 (base32
1338 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
1339 (patches (search-patches "pybugz-stty.patch"
1340 "pybugz-encode-error.patch"))))
1341 (build-system python-build-system)
1342 (arguments
1343 `(#:python ,python-2 ; SyntaxError with Python 3
1344 #:tests? #f)) ; no 'test' sub-command
1345 (propagated-inputs
1346 `(("element-tree" ,python2-element-tree)))
1347 (synopsis "Python and command-line interface to Bugzilla")
1348 (description
1349 "PyBugz is a Python library and command-line tool to query the Bugzilla
1350bug tracking system. It is meant as an aid to speed up interaction with the
1351bug tracker.")
1352 (home-page "http://www.liquidx.net/pybugz/")
1353 (license license:gpl2)))
1354
1355(define-public python2-enum
1356 (package
1357 (name "python2-enum")
1358 (version "0.4.6")
1359 (source (origin
1360 (method url-fetch)
1361 (uri (pypi-uri "enum" version))
1362 (sha256
1363 (base32
1364 "13lk3yrwj42vl30kw3c194f739nrfrdg64s6i0v2p636n4k8brsl"))))
1365 (build-system python-build-system)
1366 (arguments
1367 `(#:python ,python-2))
1368 (home-page "http://pypi.python.org/pypi/enum/")
1369 (synopsis "Robust enumerated type support in Python")
1370 (description
1371 "This provides a module for robust enumerations in Python. It has
1372been superseded by the Python standard library and is provided only for
1373compatibility.")
1374 ;; Choice of either license.
1375 (license (list license:gpl3+ license:psfl))))
1376
1377(define-public python-enum34
1378 (package
1379 (name "python-enum34")
1380 (version "1.1.6")
1381 (source
1382 (origin
1383 (method url-fetch)
1384 (uri (pypi-uri "enum34" version))
1385 (sha256
1386 (base32
1387 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
1388 (build-system python-build-system)
1389 (home-page "https://pypi.python.org/pypi/enum34")
1390 (synopsis "Backported Python 3.4 Enum")
1391 (description
1392 "Enum34 is the new Python stdlib enum module available in Python 3.4
1393backported for previous versions of Python from 2.4 to 3.3.")
1394 (license license:bsd-3)))
1395
1396(define-public python2-enum34
1397 (package-with-python2 python-enum34))
1398
1399(define-public python-parse-type
1400 (package
1401 (name "python-parse-type")
1402 (version "0.4.2")
1403 (source
1404 (origin
1405 (method url-fetch)
1406 (uri (pypi-uri "parse_type" version))
1407 (sha256
1408 (base32
1409 "0g3b6gsdwnm8dpkh2vn34q6dzxm9gl908ggyzcv31n9xbp3vv5pm"))))
1410 (build-system python-build-system)
1411 (propagated-inputs
1412 `(("python-six" ,python-six)
1413 ("python-parse" ,python-parse)))
1414 (native-inputs
1415 `(("python-pytest" ,python-pytest)
1416 ("python-pytest-runner" ,python-pytest-runner)))
1417 (home-page "https://github.com/jenisys/parse_type")
1418 (synopsis "Extended parse module")
1419 (description
1420 "Parse_type extends the python parse module.")
1421 (properties
1422 `((python2-variant . ,(delay python2-parse-type))))
1423 (license license:bsd-3)))
1424
1425(define-public python2-parse-type
1426 (let ((base (package-with-python2
1427 (strip-python2-variant python-parse-type))))
1428 (package (inherit base)
1429 (propagated-inputs
1430 `(("python2-enum34" ,python2-enum34)
1431 ,@(package-propagated-inputs base))))))
1432
1433(define-public python-parse
1434 (package
1435 (name "python-parse")
1436 (version "1.8.4")
1437 (source
1438 (origin
1439 (method url-fetch)
1440 (uri (pypi-uri "parse" version))
1441 (sha256
1442 (base32
1443 "0f8997xr8nq2nq35iiviq8ningd1zvy59fg503xfpbi2dwhgdkf3"))))
1444 (build-system python-build-system)
1445 (arguments
1446 `(#:phases
1447 (modify-phases %standard-phases
1448 (replace 'check
1449 (lambda _ (invoke "python" "test_parse.py"))))))
1450 (home-page "https://github.com/r1chardj0n3s/parse")
1451 (synopsis "Parse strings")
1452 (description
1453 "Parse strings using a specification based on the Python @code{format()}
1454syntax.")
1455 (license license:x11)))
1456
1457(define-public python-polib
1458 (package
1459 (name "python-polib")
1460 (version "1.0.8")
1461 (source (origin
1462 (method url-fetch)
1463 (uri (pypi-uri "polib" version))
1464 (sha256
1465 (base32
1466 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1467 (build-system python-build-system)
1468 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1469 (synopsis "Manipulate, create and modify gettext files")
1470 (description "Polib can manipulate any gettext format (po, pot and mo)
1471files. It can be used to create po files from scratch or to modify
1472existing ones.")
1473 (license license:expat)))
1474
1475(define-public python2-polib
1476 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1477 (package
1478 (inherit base)
1479 (arguments `(,@(package-arguments base)
1480 ;; Tests don't work with python2.
1481 #:tests? #f)))))
1482
1483(define-public scons
1484 (package
1485 (name "scons")
05487ed8 1486 (version "3.0.4")
44d10b1f 1487 (source (origin
ad34338d
RW
1488 (method git-fetch)
1489 (uri (git-reference
1490 (url "https://github.com/SCons/scons.git")
1491 (commit version)))
1492 (file-name (git-file-name name version))
44d10b1f
RW
1493 (sha256
1494 (base32
05487ed8 1495 "1xy8jrwz87y589ihcld4hv7wn122sjbz914xn8h50ww77wbhk8hn"))))
44d10b1f
RW
1496 (build-system python-build-system)
1497 (arguments
1498 `(#:use-setuptools? #f ; still relies on distutils
ad34338d
RW
1499 #:tests? #f ; no 'python setup.py test' command
1500 #:phases
1501 (modify-phases %standard-phases
1502 (add-before 'build 'bootstrap
1503 (lambda _
1504 (substitute* "src/engine/SCons/compat/__init__.py"
1505 (("sys.modules\\[new\\] = imp.load_module\\(old, \\*imp.find_module\\(old\\)\\)")
1506 "sys.modules[new] = __import__(old)"))
05487ed8
RW
1507 (substitute* "src/engine/SCons/Platform/__init__.py"
1508 (("mod = imp.load_module\\(full_name, file, path, desc\\)")
1509 "mod = __import__(full_name)"))
ad34338d
RW
1510 (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
1511 (chdir "build/scons")
1512 #t)))))
44d10b1f
RW
1513 (home-page "http://scons.org/")
1514 (synopsis "Software construction tool written in Python")
1515 (description
1516 "SCons is a software construction tool. Think of SCons as an improved,
1517cross-platform substitute for the classic Make utility with integrated
1518functionality similar to autoconf/automake and compiler caches such as ccache.
1519In short, SCons is an easier, more reliable and faster way to build
1520software.")
1521 (license license:x11)))
1522
1523(define-public scons-python2
1524 (package
1525 (inherit (package-with-python2 scons))
1526 (name "scons-python2")))
1527
1528(define-public python-extras
1529 (package
1530 (name "python-extras")
1531 (version "1.0.0")
1532 (source
1533 (origin
1534 (method url-fetch)
1535 (uri (pypi-uri "extras" version))
1536 (sha256
1537 (base32
1538 "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk"))))
1539 (build-system python-build-system)
1540 (arguments
1541 ;; FIXME: Circular dependency on testtools.
1542 '(#:tests? #f))
1543 (home-page "https://github.com/testing-cabal/extras")
1544 (synopsis "Useful extensions to the Python standard library")
1545 (description
1546 "Extras is a set of extensions to the Python standard library.")
1547 (license license:expat)))
1548
1549(define-public python2-extras
1550 (package-with-python2 python-extras))
1551
1552(define-public python-mimeparse
1553 (package
1554 (name "python-mimeparse")
1555 (version "1.6.0")
1556 (source
1557 (origin
1558 (method url-fetch)
89bf667c 1559 (uri (pypi-uri "python-mimeparse" version))
44d10b1f
RW
1560 (sha256
1561 (base32
1562 "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n"))))
1563 (build-system python-build-system)
1564 (arguments
1565 '(#:phases
1566 (modify-phases %standard-phases
1567 (replace 'check
1568 (lambda _
1569 (invoke "./mimeparse_test.py"))))))
1570 (home-page
1571 "https://github.com/dbtsai/python-mimeparse")
1572 (synopsis "Python library for parsing MIME types")
1573 (description
1574 "Mimeparse provides basic functions for parsing MIME type names and
1575matching them against a list of media-ranges.")
1576 (license license:expat)))
1577
1578(define-public python2-mimeparse
1579 (package-with-python2 python-mimeparse))
1580
1581(define-public python-miniboa
1582 (package
1583 (name "python-miniboa")
1584 (version "1.0.7")
1585 (source
1586 (origin
1587 (method url-fetch)
1588 (uri (pypi-uri "miniboa" version))
1589 (sha256
1590 (base32
1591 "09jh3pn4rh7kh7jayanf8jzy6gp03791b5a193w6148cf3i6k9m3"))))
1592 (build-system python-build-system)
1593 (home-page "https://github.com/shmup/miniboa")
1594 (synopsis "Simple, single-threaded Telnet server")
1595 (description
1596 "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet
1597server.")
1598 (license license:asl2.0)))
1599
1600(define-public python2-miniboa
1601 (package-with-python2 python-miniboa))
1602
1603(define-public python-pafy
1604 (package
1605 (name "python-pafy")
1606 (version "0.5.3.1")
1607 (source
1608 (origin
1609 (method url-fetch)
1610 (uri (pypi-uri "pafy" version))
1611 (sha256
1612 (base32
1613 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
1614 (build-system python-build-system)
1615 (arguments
1616 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
1617 (propagated-inputs
1618 ;; Youtube-dl is a python package which is imported in the file
1619 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1620 `(("youtube-dl" ,youtube-dl)))
1621 (home-page "https://np1.github.io/pafy/")
1622 (synopsis "Retrieve YouTube content and metadata")
1623 (description
1624 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1625 (license license:lgpl3+)))
1626
1627(define-public python2-funcsigs
1628 (package
1629 (name "python2-funcsigs")
1630 (version "1.0.2")
1631 (source (origin
1632 (method url-fetch)
1633 (uri (pypi-uri "funcsigs" version))
1634 (sha256
1635 (base32
1636 "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7"))))
1637 (build-system python-build-system)
1638 (arguments
1639 `(#:python ,python-2))
1640 (native-inputs
1641 `(("python2-unittest2" ,python2-unittest2)))
1642 (home-page "http://funcsigs.readthedocs.org")
1643 (synopsis "Python function signatures from PEP362")
1644 (description
1645 "Backport of @code{funcsigs} which was introduced in Python 3.3.")
1646 (license license:asl2.0)))
1647
1648(define-public python2-funcsigs-bootstrap
1649 (package
1650 (inherit python2-funcsigs)
1651 (name "python2-funcsigs-bootstrap")
1652 (native-inputs `())
1653 (arguments
1654 `(#:tests? #f
1655 ,@(package-arguments python2-funcsigs)))))
1656
1657(define-public python-py
1658 (package
1659 (name "python-py")
1660 (version "1.5.4")
1661 (source
1662 (origin
1663 (method url-fetch)
1664 (uri (pypi-uri "py" version))
1665 (sha256
1666 (base32
1667 "1xxvwfn82457djf55f5n2c94699rfqnk43br8fif2r2q8gvrmm9z"))))
1668 (build-system python-build-system)
1669 (arguments
1670 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1671 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1672 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1673 ;; Is this module globally installed?"
1674 '(#:tests? #f))
1675 (native-inputs
1676 `(("python-setuptools-scm" ,python-setuptools-scm)))
1677 (home-page "https://github.com/pytest-dev/py")
1678 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1679 (description
1680 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1681code introspection, and logging.")
1682 (license license:expat)))
1683
1684(define-public python2-py
1685 (package-with-python2 python-py))
1686
1687;; Recent versions of python-fixtures and python-testrepository need
1688;; python-pbr for packaging, which itself needs these two packages for
1689;; testing.
1690;; To fix this circular dependency, we use a build of python-pbr, based on the
1691;; same source, just without any test dependencies and with tests disabled.
1692;; python-pbr-minmal is then used to package python-fixtures and
1693;; python-testrepository.
1694;; Strictly speaking we currently could remove the test-requirements from the
1695;; normal python-pbr package (and save this package) since test are disabled
1696;; there anyway. But this may change in future.
1697(define-public python-pbr-minimal
1698 (package
1699 (name "python-pbr-minimal")
1700 (version "3.0.1")
1701 (source
1702 (origin
1703 (method url-fetch)
1704 (uri (pypi-uri "pbr" version))
1705 (sha256
1706 (base32
1707 "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p"))))
1708 (build-system python-build-system)
1709 (arguments
1710 `(#:tests? #f))
1711 (home-page "http://docs.openstack.org/developer/pbr/")
1712 (synopsis "Minimal build of python-pbr used for bootstrapping")
1713 (description
1714 "Used only for bootstrapping python2-pbr, you should not need this.")
1715 (license license:asl2.0)))
1716
1717(define-public python2-pbr-minimal
1718 (package-with-python2 python-pbr-minimal))
1719
1720(define-public python-pbr
1721 (package
1722 (inherit python-pbr-minimal)
1723 (name "python-pbr")
1724 (arguments
1725 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1726 (propagated-inputs
1727 `(("git" ,git))) ;; pbr actually uses the "git" binary.
1728 (native-inputs
1729 `(("python-fixtures" ,python-fixtures-bootstrap)
1730 ;; discover, coverage, hacking, subunit
1731 ("python-mock" ,python-mock)
1732 ("python-six" ,python-six)
1733 ("python-sphinx" ,python-sphinx)
1734 ("python-testrepository" ,python-testrepository-bootstrap)
1735 ("python-testresources" ,python-testresources-bootstrap)
1736 ("python-testscenarios" ,python-testscenarios-bootstrap)
1737 ("python-testtools" ,python-testtools-bootstrap)
1738 ("python-virtualenv" ,python-virtualenv)))
1739 (synopsis "Enhance the default behavior of Python’s setuptools")
1740 (description
1741 "Python Build Reasonableness (PBR) is a library that injects some useful
1742and sensible default behaviors into your setuptools run. It will set
1743versions, process requirements files and generate AUTHORS and ChangeLog file
1744from git information.
1745")))
1746
1747(define-public python2-pbr
1748 (package-with-python2 python-pbr))
1749
ea43f0d5
MB
1750(define-public python-pyrsistent
1751 (package
1752 (name "python-pyrsistent")
1753 (version "0.14.11")
1754 (home-page "https://github.com/tobgu/pyrsistent")
1755 (source (origin
1756 (method url-fetch)
1757 (uri (pypi-uri "pyrsistent" version))
1758 (sha256
1759 (base32
1760 "1qkh74bm296mp5g3r11lgsksr6bh4w1bf8pji4nmxdlfj542ga1w"))))
1761 (build-system python-build-system)
1762 (native-inputs
1763 `(("python-hypothesis" ,python-hypothesis)
1764 ("python-pytest" ,python-pytest)
1765 ("python-pytest-runner" ,python-pytest-runner)))
1766 (propagated-inputs
1767 `(("python-six" ,python-six)))
1768 (synopsis "Persistent data structures for Python")
1769 (description
1770 "Pyrsistent is a number of persistent collections (by some referred to as
1771functional data structures). Persistent in the sense that they are immutable.
1772
1773All methods on a data structure that would normally mutate it instead return a
1774new copy of the structure containing the requested updates. The original
1775structure is left untouched.")
1776 (license license:expat)))
1777
1778(define-public python2-pyrsistent
1779 (package-with-python2 python-pyrsistent))
1780
44d10b1f
RW
1781(define-public python-exif-read
1782 (package
1783 (name "python-exif-read")
1784 (version "2.1.2")
1785 (source (origin
1786 (method url-fetch)
1787 (uri (pypi-uri "ExifRead" version))
1788 (sha256
1789 (base32
1790 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
1791 (build-system python-build-system)
1792 (arguments `(#:tests? #f)) ; no tests
1793 (home-page "https://github.com/ianare/exif-py")
1794 (synopsis "Python library to extract EXIF data from image files")
1795 (description
1796 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
1797files.")
1798 (license license:bsd-3)))
1799
1800(define-public python2-exif-read
1801 (package-with-python2 python-exif-read))
1802
1803(define-public python-pyld
1804 (package
1805 (name "python-pyld")
1806 (version "1.0.3")
1807 (source (origin
1808 (method url-fetch)
1809 (uri (pypi-uri "PyLD" version))
1810 (sha256
1811 (base32
1812 "12i2g6xdj30k7xxcibg3sc5y76snwq8l6n8fy9lyi577kgy0h2pm"))))
1813 (build-system python-build-system)
1814 (home-page "https://github.com/digitalbazaar/pyld")
1815 (synopsis "Python implementation of the JSON-LD specification")
1816 (description
1817 "PyLD is an implementation of the JSON-LD specification.")
1818 (license license:bsd-3)))
1819
1820(define-public python2-pyld
1821 (package-with-python2 python-pyld))
1822
1823(define-public python-click
1824 (package
1825 (name "python-click")
61984855 1826 (version "7.0")
44d10b1f
RW
1827 (source
1828 (origin
1829 (method url-fetch)
1830 (uri (pypi-uri "click" version))
1831 (sha256
1832 (base32
61984855 1833 "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v"))))
44d10b1f
RW
1834 (build-system python-build-system)
1835 (arguments
8d7e7ca6 1836 `(#:phases
44d10b1f
RW
1837 (modify-phases %standard-phases
1838 (add-after 'unpack 'fix-paths
1839 (lambda* (#:key inputs #:allow-other-keys)
1840 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
1841 "cross-libc" "libc"))))
1842 (substitute* "click/_unicodefun.py"
1843 (("'locale'")
1844 (string-append "'" glibc "/bin/locale'"))))
8d7e7ca6
EF
1845 #t))
1846 (replace 'check
1847 (lambda _
1848 (invoke "python" "-m" "pytest"))))))
44d10b1f
RW
1849 (native-inputs
1850 `(("python-pytest" ,python-pytest)))
61984855 1851 (home-page "https://palletsprojects.com/p/click/")
44d10b1f
RW
1852 (synopsis "Command line library for Python")
1853 (description
1854 "Click is a Python package for creating command line interfaces in a
1855composable way with as little code as necessary. Its name stands for
1856\"Command Line Interface Creation Kit\". It's highly configurable but comes
1857with sensible defaults out of the box.")
1858 (license license:bsd-3)))
1859
1860(define-public python2-click
1861 (package-with-python2 python-click))
1862
1863(define-public python-wheel
1864 (package
1865 (name "python-wheel")
746c074b 1866 (version "0.32.3")
44d10b1f
RW
1867 (source
1868 (origin
1869 (method url-fetch)
1870 (uri (pypi-uri "wheel" version))
1871 (sha256
1872 (base32
746c074b 1873 "1dhxl1bf18bx9szmqcnxbg6204hp3im8089q3hkwh5jfa6zh75q2"))))
44d10b1f
RW
1874 (build-system python-build-system)
1875 (native-inputs
1876 `(("python-jsonschema" ,python-jsonschema)
1877 ("python-pytest-cov" ,python-pytest-cov)))
1878 (home-page "https://bitbucket.org/pypa/wheel/")
1879 (synopsis "Format for built Python packages")
1880 (description
1881 "A wheel is a ZIP-format archive with a specially formatted filename and
1882the @code{.whl} extension. It is designed to contain all the files for a PEP
1883376 compatible install in a way that is very close to the on-disk format. Many
1884packages will be properly installed with only the @code{Unpack} step and the
1885unpacked archive preserves enough information to @code{Spread} (copy data and
1886scripts to their final locations) at any later time. Wheel files can be
1887installed with a newer @code{pip} or with wheel's own command line utility.")
1888 (license license:expat)
1889 (properties `((python2-variant . ,(delay python2-wheel))))))
1890
1891(define-public python2-wheel
1892 (let ((wheel (package-with-python2
1893 (strip-python2-variant python-wheel))))
1894 (package (inherit wheel)
1895 (native-inputs `(("python2-functools32" ,python2-functools32)
1896 ,@(package-native-inputs wheel))))))
1897
1898(define-public python-vcversioner
1899 (package
1900 (name "python-vcversioner")
1901 (version "2.16.0.0")
1902 (source
1903 (origin
1904 (method url-fetch)
1905 (uri (pypi-uri "vcversioner" version))
1906 (sha256
1907 (base32
1908 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
1909 (build-system python-build-system)
1910 (synopsis "Python library for version number discovery")
1911 (description "Vcversioner is a Python library that inspects tagging
1912information in a variety of version control systems in order to discover
1913version numbers.")
1914 (home-page "https://github.com/habnabit/vcversioner")
1915 (license license:isc)))
1916
1917(define-public python2-vcversioner
1918 (package-with-python2 python-vcversioner))
1919
5591fc4f
MC
1920(define-public python-jdcal
1921 (package
1922 (name "python-jdcal")
1923 (version "1.4")
1924 (source
1925 (origin
1926 (method url-fetch)
1927 (uri (pypi-uri "jdcal" version))
1928 (sha256
1929 (base32
1930 "1ja6j2xq97bsl6rv09mhdx7n0xnrsfx0mj5xqza0mxghqmkm02pa"))))
1931 (build-system python-build-system)
1932 (arguments
1933 `(#:phases (modify-phases %standard-phases
1934 (replace 'check
1935 (lambda _
1936 (invoke "pytest"))))))
1937 (native-inputs
1938 `(("python-pytest" ,python-pytest)))
1939 (home-page "https://github.com/phn/jdcal")
1940 (synopsis "Functions to convert between Julian dates Gregorian dates")
1941 (description "This Python library provides functions for converting
1942between Julian dates and Gregorian dates.")
1943 (license license:bsd-2)))
1944
1945(define-public python2-jdcal
1946 (package-with-python2 python-jdcal))
1947
44d10b1f
RW
1948(define-public python-jsonschema
1949 (package
1950 (name "python-jsonschema")
1adde06e 1951 (version "3.0.1")
44d10b1f
RW
1952 (source (origin
1953 (method url-fetch)
786ccb87 1954 (uri (pypi-uri "jsonschema" version))
44d10b1f
RW
1955 (sha256
1956 (base32
1adde06e 1957 "03g20i1xfg4qdlk4475pl4pp7y0h37g1fbgs5qhy678q9xb822hc"))))
44d10b1f
RW
1958 (build-system python-build-system)
1959 (arguments
1960 '(#:phases
1961 (modify-phases %standard-phases
1adde06e
MB
1962 (replace 'check
1963 (lambda _
1964 (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
1965 (invoke "trial" "jsonschema"))))))
44d10b1f 1966 (native-inputs
1adde06e
MB
1967 `(("python-setuptools_scm" ,python-setuptools-scm)
1968 ("python-twisted" ,python-twisted)))
1969 (propagated-inputs
1970 `(("python-attrs" ,python-attrs)
1971 ("python-pyrsistent" ,python-pyrsistent)
1972 ("python-six" ,python-six)))
44d10b1f
RW
1973 (home-page "https://github.com/Julian/jsonschema")
1974 (synopsis "Implementation of JSON Schema for Python")
1975 (description
1976 "Jsonschema is an implementation of JSON Schema for Python.")
1977 (license license:expat)
1978 (properties `((python2-variant . ,(delay python2-jsonschema))))))
1979
1980(define-public python2-jsonschema
1981 (let ((jsonschema (package-with-python2
1982 (strip-python2-variant python-jsonschema))))
1983 (package (inherit jsonschema)
44d10b1f 1984 (propagated-inputs
1adde06e
MB
1985 `(("python2-functools32" ,python2-functools32)
1986 ,@(package-propagated-inputs jsonschema))))))
44d10b1f 1987
914bba28
TGR
1988;; This old version is still required by docker-compose as of 1.24.0.
1989(define-public python-jsonschema-2.6
1990 (package
1991 (name "python-jsonschema")
1992 (version "2.6.0")
1993 (source (origin
1994 (method url-fetch)
1995 (uri (pypi-uri "jsonschema" version))
1996 (sha256
1997 (base32
1998 "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
1999 (build-system python-build-system)
2000 (arguments
2001 '(#:phases
2002 (modify-phases %standard-phases
2003 (replace 'check (lambda _ (invoke "nosetests"))))))
2004 (native-inputs
2005 `(("python-nose" ,python-nose)
2006 ("python-vcversioner" ,python-vcversioner)))
2007 (home-page "https://github.com/Julian/jsonschema")
2008 (synopsis "Implementation of JSON Schema for Python")
2009 (description
2010 "Jsonschema is an implementation of JSON Schema for Python.")
2011 (license license:expat)
2012 (properties `((python2-variant . ,(delay python2-jsonschema))))))
2013
44d10b1f
RW
2014(define-public python-schema
2015 (package
2016 (name "python-schema")
2017 (version "0.6.6")
2018 (source
2019 (origin
2020 (method url-fetch)
2021 (uri (pypi-uri "schema" version))
2022 (sha256
2023 (base32
2024 "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
2025 (build-system python-build-system)
2026 (native-inputs
2027 `(("python-pytest" ,python-pytest)))
2028 (home-page "https://github.com/keleshev/schema")
2029 (synopsis "Simple data validation library")
2030 (description
2031 "@code{python-schema} is a library for validating Python data
2032structures, such as those obtained from config-files, forms, external
2033services or command-line parsing, converted from JSON/YAML (or
2034something else) to Python data-types.")
2035 (license license:psfl)))
2036
2037(define-public python2-schema
2038 (package-with-python2 python-schema))
2039
2040(define-public python-schema-0.5
2041 (package (inherit python-schema)
2042 (version "0.5.0")
2043 (source
2044 (origin
2045 (method url-fetch)
2046 (uri (pypi-uri "schema" version))
2047 (sha256
2048 (base32
2049 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
2050
2051(define-public python2-schema-0.5
2052 (package-with-python2 python-schema-0.5))
2053
2054(define-public python-kitchen
2055 (package
2056 (name "python-kitchen")
2057 (version "1.2.5")
2058 (source
2059 (origin
2060 (method url-fetch)
2061 (uri (pypi-uri "kitchen" version))
2062 (sha256
2063 (base32
2064 "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg"))))
2065 (build-system python-build-system)
2066 (propagated-inputs
2067 `(("python-chardet" ,python-chardet)))
2068 (home-page "https://github.com/fedora-infra/kitchen")
2069 (synopsis "Python API for snippets")
2070 (description "@code{kitchen} module provides a python API for all sorts of
2071little useful snippets of code that everybody ends up writing for their projects
2072but never seem big enough to build an independent release. Use kitchen and stop
2073cutting and pasting that code over and over.")
2074 (license (list license:lgpl2.1+
2075 ;; subprocess.py, test_subprocess.py,
2076 ;; kitchen/pycompat25/defaultdict.py:
2077 license:psfl))))
2078
2079(define-public python2-kitchen
2080 (package-with-python2 python-kitchen))
2081
2082(define-public python-unidecode
2083 (package
2084 (name "python-unidecode")
bd9d7206 2085 (version "1.1.0")
44d10b1f
RW
2086 (source (origin
2087 (method url-fetch)
2088 (uri (pypi-uri "Unidecode" version))
2089 (sha256
2090 (base32
bd9d7206 2091 "00pi0czzwvbf7djhkkjyvimj60wqdx0llbddzfnax650g9b8yscc"))))
44d10b1f
RW
2092 (build-system python-build-system)
2093 (home-page "https://pypi.python.org/pypi/Unidecode")
2094 (synopsis "ASCII transliterations of Unicode text")
2095 (description
2096 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2097useful when integrating with legacy code that doesn't support Unicode, or for
2098ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2099machine identifiers from human-readable Unicode strings that should still be
2100somewhat intelligible.")
2101 (license license:gpl2+)))
2102
2103(define-public python2-unidecode
2104 (package-with-python2 python-unidecode))
2105
2106(define-public python-pyjwt
2107 (package
2108 (name "python-pyjwt")
2109 (version "1.5.3")
2110 (source
2111 (origin
2112 (method url-fetch)
2113 (uri (pypi-uri "PyJWT" version))
2114 (sha256
2115 (base32
2116 "1rxsg14i33vm2i6lz0my628108c81k43v10n4h3p0gx62xdyf2sh"))
2117 (modules '((guix build utils)))
2118 (snippet
2119 '(begin
2120 (for-each delete-file-recursively
2121 (find-files "." "\\.pyc$"))
2122 #t))))
2123 (build-system python-build-system)
2124 (native-inputs
2125 `(("python-pytest" ,python-pytest)
2126 ("python-pytest-cov" ,python-pytest-cov)
2127 ("python-pytest-runner" ,python-pytest-runner)))
2128 (home-page "https://github.com/progrium/pyjwt")
2129 (synopsis "JSON Web Token implementation in Python")
2130 (description
2131 "PyJWT is a JSON Web Token implementation written in Python.")
2132 (license license:expat)))
2133
2134(define-public python2-pyjwt
2135 (package-with-python2 python-pyjwt))
2136
2137(define-public python-pykka
2138 (package
2139 (name "python-pykka")
2140 (version "1.2.1")
2141 (source
2142 (origin
2143 (method url-fetch)
2144 (uri (pypi-uri "Pykka" version))
2145 (sha256
2146 (base32
2147 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2148 (build-system python-build-system)
2149 (native-inputs
2150 `(("python-mock" ,python-mock)
2151 ("python-nose" ,python-nose)
2152 ("python-gevent" ,python-gevent)
2153 ("python-eventlet" ,python-eventlet)))
2154 (home-page "https://www.pykka.org/")
2155 (synopsis "Pykka is a Python implementation of the actor model")
2156 (description
2157 "Pykka is a Python implementation of the actor model.
2158The actor model introduces some simple rules to control the sharing
2159of state and cooperation between execution units, which makes it
2160easier to build concurrent applications.")
2161 (license license:asl2.0)))
2162
2163(define-public python2-pykka
2164 (package-with-python2 python-pykka))
2165
8d22f7e3
VC
2166(define-public python-pymsgbox
2167 (package
2168 (name "python-pymsgbox")
2169 (version "1.0.6")
2170 (source
2171 (origin
2172 (method git-fetch)
2173 (uri (git-reference
2174 ;; LICENSE.txt is not present on pypi
2175 (url "https://github.com/asweigart/PyMsgBox")
2176 (commit "55926b55f46caa969c5ddb87990ebea2737bd66f")))
2177 (file-name (git-file-name name version))
2178 (sha256
2179 (base32
2180 "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg"))))
2181 (arguments
2182 ;; Circular dependency to run tests:
2183 ;; Tests need pyautogui, which depends on pymsgbox.
2184 '(#:tests? #f))
2185 (build-system python-build-system)
2186 (home-page "https://github.com/asweigart/PyMsgBox")
2187 (synopsis "Python module for JavaScript-like message boxes")
2188 (description
2189 "PyMsgBox is a simple, cross-platform, pure Python module for
2190JavaScript-like message boxes. Types of dialog boxes include:
2191@enumerate
2192@item alert
2193@item confirm
2194@item prompt
2195@item password
2196@end enumerate
2197")
2198 (license license:bsd-3)))
2199
44d10b1f
RW
2200(define-public python-pympler
2201 (package
2202 (name "python-pympler")
2203 (home-page "https://pythonhosted.org/Pympler/")
2204 (version "0.5")
2205 (source (origin
2206 (method url-fetch)
2207 (uri (pypi-uri "Pympler" version))
2208 (sha256
2209 (base32
2210 "03qwsbilqgvnbl3a1jmpgixbr2kq6m3fvdlzyr3wdp01bwlc85kx"))))
2211 (build-system python-build-system)
2212 (arguments
2213 `(#:phases (modify-phases %standard-phases
2214 (delete 'check)
2215 (add-after 'install 'check
2216 (lambda* (#:key inputs outputs #:allow-other-keys)
2217 (add-installed-pythonpath inputs outputs)
2218 (invoke "python" "setup.py" "test"))))))
2219 (synopsis "Measure, monitor and analyze memory behavior")
2220 (description
2221 "Pympler is a development tool to measure, monitor and analyze
2222the memory behavior of Python objects in a running Python application.
2223
2224By pympling a Python application, detailed insight in the size and the
2225lifetime of Python objects can be obtained. Undesirable or unexpected
2226runtime behavior like memory bloat and other @samp{pymples} can easily
2227be identified.
2228
2229A web profiling frontend exposes process statistics, garbage
2230visualisation and class tracker statistics.")
2231 (license license:asl2.0)))
2232
2233(define-public python2-pympler
2234 (package-with-python2 python-pympler))
2235
2236(define-public python-itsdangerous
2237 (package
2238 (name "python-itsdangerous")
acfcf2ed 2239 (version "1.1.0")
44d10b1f
RW
2240 (source
2241 (origin
2242 (method url-fetch)
acfcf2ed 2243 (uri (pypi-uri "itsdangerous" version))
44d10b1f
RW
2244 (sha256
2245 (base32
acfcf2ed 2246 "068zpbksq5q2z4dckh2k1zbcq43ay74ylqn77rni797j0wyh66rj"))))
44d10b1f 2247 (build-system python-build-system)
acfcf2ed 2248 (home-page "https://palletsprojects.com/p/itsdangerous/")
44d10b1f
RW
2249 (synopsis "Python library for passing data to/from untrusted environments")
2250 (description
2251 "Itsdangerous provides various helpers to pass trusted data to untrusted
2252environments and back.")
2253 (license license:bsd-3)))
2254
2255(define-public python2-itsdangerous
2256 (package-with-python2 python-itsdangerous))
2257
2258(define-public python-pyyaml
2259 (package
2260 (name "python-pyyaml")
2261 (version "3.13")
2262 (source
2263 (origin
2264 (method url-fetch)
2265 (uri (pypi-uri "PyYAML" version))
2266 (sha256
2267 (base32
2268 "1gx603g484z46cb74j9rzr6sjlh2vndxayicvlyhxdz98lhhkwry"))))
2269 (build-system python-build-system)
2270 (inputs
2271 `(("libyaml" ,libyaml)))
2272 (home-page "http://pyyaml.org/wiki/PyYAML")
2273 (synopsis "YAML parser and emitter for Python")
2274 (description
2275 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2276complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2277API, and sensible error messages. PyYAML supports standard YAML tags and
2278provides Python-specific tags that allow to represent an arbitrary Python
2279object.")
2280 (license license:expat)))
2281
2282(define-public python2-pyyaml
2283 (package-with-python2 python-pyyaml))
2284
2285(define-public python-vine
2286 (package
2287 (name "python-vine")
2288 (version "1.1.4")
2289 (source
2290 (origin
2291 (method url-fetch)
2292 (uri (pypi-uri "vine" version))
2293 (sha256
2294 (base32
2295 "0wkskb2hb494v9gixqnf4bl972p4ibcmxdykzpwjlfa5picns4aj"))))
2296 (build-system python-build-system)
2297 (native-inputs
2298 `(("python-pytest" ,python-pytest)
2299 ("python-case" ,python-case)))
2300 (home-page "https://github.com/celery/vine")
2301 (synopsis "Promises for Python")
2302 (description
2303 "@code{vine} provides a special implementation of promises in that it can
2304be used both for \"promise of a value\" and lazy evaluation. The biggest
2305upside for this is that everything in a promise can also be a promise,
2306e.g. filters, callbacks and errbacks can all be promises.")
2307 (license license:bsd-3)))
2308
2309(define-public python-virtualenv
2310 (package
2311 (name "python-virtualenv")
2782bd51 2312 (version "16.1.0")
44d10b1f
RW
2313 (source
2314 (origin
2315 (method url-fetch)
2316 (uri (pypi-uri "virtualenv" version))
2317 (sha256
2318 (base32
2782bd51 2319 "0242cg3hdq3qdvx5flyrki8lpwlgwf5k45c21ks5049fv7ygm6gq"))))
44d10b1f
RW
2320 (build-system python-build-system)
2321 (arguments
2322 `(#:phases
2323 (modify-phases %standard-phases
2782bd51 2324 (add-before 'check 'disable-failing-test
44d10b1f
RW
2325 (lambda _
2326 ;; Disable failing test. See upstream bug report
2327 ;; https://github.com/pypa/virtualenv/issues/957
2328 (substitute* "tests/test_virtualenv.py"
2329 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2782bd51 2330 #t)))))
44d10b1f
RW
2331 (native-inputs
2332 `(("python-mock" ,python-mock)
2333 ("python-pytest" ,python-pytest)))
2334 (home-page "https://virtualenv.pypa.io/")
2335 (synopsis "Virtual Python environment builder")
2336 (description
2337 "Virtualenv is a tool to create isolated Python environments.")
2338 (license license:expat)))
2339
2340(define-public python2-virtualenv
2341 (package-with-python2 python-virtualenv))
2342
2343(define-public python-markupsafe
2344 (package
2345 (name "python-markupsafe")
753eb411 2346 (version "1.1.1")
44d10b1f
RW
2347 (source
2348 (origin
2349 (method url-fetch)
5182927c 2350 (uri (pypi-uri "MarkupSafe" version))
44d10b1f
RW
2351 (sha256
2352 (base32
753eb411 2353 "0sqipg4fk7xbixqd8kq6rlkxj664d157bdwbh93farcphf92x1r9"))))
44d10b1f 2354 (build-system python-build-system)
753eb411
MB
2355 (arguments
2356 `(#:modules ((ice-9 ftw)
2357 (srfi srfi-1)
2358 (srfi srfi-26)
2359 (guix build utils)
2360 (guix build python-build-system))
2361 #:phases (modify-phases %standard-phases
2362 (replace 'check
2363 (lambda _
2364 (let ((cwd (getcwd))
2365 (libdir (find (cut string-prefix? "lib." <>)
2366 (scandir "build"))))
2367 (setenv "PYTHONPATH"
2368 (string-append cwd "/build/" libdir ":"
2369 (getenv "PYTHONPATH")))
2370 (invoke "pytest" "-vv")))))))
2371 (native-inputs
2372 `(("python-pytest" ,python-pytest)))
44d10b1f
RW
2373 (home-page "https://github.com/mitsuhiko/markupsafe")
2374 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2375 (description
2376 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2377for Python.")
2378 (license license:bsd-3)))
2379
2380(define-public python2-markupsafe
2381 (package-with-python2 python-markupsafe))
2382
2383(define-public python-jinja2
2384 (package
2385 (name "python-jinja2")
4a5c7934 2386 (version "2.10.1")
44d10b1f
RW
2387 (source
2388 (origin
2389 (method url-fetch)
2390 (uri (pypi-uri "Jinja2" version))
2391 (sha256
2392 (base32
4a5c7934 2393 "04shqrs56aj04ipyqykj512rw2l0zfammvj9krawzxz7xc14yp06"))))
44d10b1f
RW
2394 (build-system python-build-system)
2395 (propagated-inputs
2396 `(("python-markupsafe" ,python-markupsafe)))
2397 (home-page "http://jinja.pocoo.org/")
2398 (synopsis "Python template engine")
2399 (description
2400 "Jinja2 is a small but fast and easy to use stand-alone template engine
2401written in pure Python.")
2402 (license license:bsd-3)))
2403
2404(define-public python2-jinja2
2405 (package-with-python2 python-jinja2))
2406
2407(define-public python-pystache
2408 (package
2409 (name "python-pystache")
2410 (version "0.5.4")
2411 (source (origin
2412 (method url-fetch)
2413 (uri (pypi-uri "pystache" version))
2414 (sha256
2415 (base32
2416 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2417 (build-system python-build-system)
2418 (arguments
2419 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
2420 (home-page "http://defunkt.io/pystache/")
2421 (synopsis "Python logic-less template engine")
2422 (description
2423 "Pystache is a Python implementation of the framework agnostic,
2424logic-free templating system Mustache.")
2425 (license license:expat)
2426 (properties `((python2-variant . ,(delay python2-pystache))))))
2427
2428(define-public python2-pystache
2429 (package (inherit (package-with-python2
2430 (strip-python2-variant python-pystache)))
2431 (arguments
2432 `(#:python ,python-2
2433 #:phases
2434 (modify-phases %standard-phases
2435 (replace 'check
2436 (lambda _
dfafc29b 2437 (invoke "python" "test_pystache.py"))))))))
44d10b1f
RW
2438
2439(define-public python-joblib
2440 (package
2441 (name "python-joblib")
2442 (version "0.13.0")
2443 (source (origin
2444 (method url-fetch)
2445 (uri (pypi-uri "joblib" version))
2446 (sha256
2447 (base32
2448 "0612nazad8dxmn3xghfrmjax6456l4xy6hn9cngs7vydi14ds7v5"))))
2449 (build-system python-build-system)
2450 (arguments
2451 `(#:phases
2452 (modify-phases %standard-phases
2453 (replace 'check
2454 (lambda _ (invoke "pytest" "-v" "joblib"))))))
2455 (native-inputs
2456 `(("python-pytest" ,python-pytest)))
2457 (home-page "https://joblib.readthedocs.io/")
2458 (synopsis "Using Python functions as pipeline jobs")
2459 (description
2460 "Joblib is a set of tools to provide lightweight pipelining in Python.
2461In particular, joblib offers: transparent disk-caching of the output values
2462and lazy re-evaluation (memoize pattern), easy simple parallel computing
2463logging and tracing of the execution.")
2464 (license license:bsd-3)))
2465
2466(define-public python2-joblib
2467 (package-with-python2 python-joblib))
2468
a3363341
VC
2469(define-public python-daemon
2470 (package
2471 (name "python-daemon")
2472 (version "2.2.3")
2473 (source
2474 (origin
2475 (method url-fetch)
2476 (uri (pypi-uri "python-daemon" version))
2477 (sha256
2478 (base32
2479 "09fcjdjzk9ywmpnrj62iyxqgcygzdafsz41qlrk2dknzbagcmzmg"))))
2480 (build-system python-build-system)
2481 (arguments
2482 `(#:phases
2483 (modify-phases %standard-phases
2484 (add-before 'check 'disable-tests
2485 (lambda _
2486 ;; FIXME: Determine why test fails
2487 (substitute* "test/test_daemon.py"
2488 (("test_detaches_process_context")
2489 "skip_test_detaches_process_context"))
2490 #t)))))
2491 (propagated-inputs
2492 `(("python-lockfile" ,python-lockfile)))
2493 (native-inputs
2494 `(("python-unittest2" ,python-unittest2)
2495 ("python-testtools" ,python-testtools)
2496 ("python-testscenarios" ,python-testscenarios)
2497 ("python-mock" ,python-mock)
2498 ("python-docutils" ,python-docutils)))
2499 (home-page "https://pagure.io/python-daemon/")
2500 (synopsis "Python library for making a Unix daemon process")
2501 (description "Python-daemon is a library that assists a Python program to
2502turn itself into a well-behaved Unix daemon process, as specified in PEP 3143.
2503
2504This library provides a @code{DaemonContext} class that manages the following
2505important tasks for becoming a daemon process:
2506@enumerate
2507@item Detach the process into its own process group.
2508@item Set process environment appropriate for running inside a chroot.
2509@item Renounce suid and sgid privileges.
2510@item Close all open file descriptors.
2511@item Change the working directory, uid, gid, and umask.
2512@item Set appropriate signal handlers.
2513@item Open new file descriptors for stdin, stdout, and stderr.
2514@item Manage a specified PID lock file.
2515@item Register cleanup functions for at-exit processing.
2516@end enumerate")
2517 ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed.
2518 (license (list license:asl2.0 license:gpl3+))))
2519
44d10b1f
RW
2520(define-public python-docutils
2521 (package
2522 (name "python-docutils")
2523 (version "0.14")
2524 (source
2525 (origin
2526 (method url-fetch)
2527 (uri (pypi-uri "docutils" version))
2528 (sha256
2529 (base32
2530 "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji"))))
2531 (build-system python-build-system)
2532 (arguments
2533 '(#:tests? #f)) ; no setup.py test command
2534 (home-page "http://docutils.sourceforge.net/")
2535 (synopsis "Python Documentation Utilities")
2536 (description
2537 "Docutils is a modular system for processing documentation into useful
2538formats, such as HTML, XML, and LaTeX. For input Docutils supports
2539reStructuredText.")
2540 ;; Most of the source code is public domain, but some source files are
2541 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
2542 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
2543
2544(define-public python2-docutils
2545 (package-with-python2 python-docutils))
2546
2547(define-public python-pygments
2548 (package
2549 (name "python-pygments")
eed81080 2550 (version "2.4.2")
44d10b1f
RW
2551 (source
2552 (origin
2553 (method url-fetch)
2554 (uri (pypi-uri "Pygments" version))
2555 (sha256
2556 (base32
eed81080 2557 "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748"))))
44d10b1f
RW
2558 (build-system python-build-system)
2559 (arguments
2560 ;; FIXME: Tests require sphinx, which depends on this.
2561 '(#:tests? #f))
2562 (home-page "http://pygments.org/")
2563 (synopsis "Syntax highlighting")
2564 (description
2565 "Pygments is a syntax highlighting package written in Python.")
2566 (license license:bsd-2)))
2567
2568(define-public python2-pygments
2569 (package-with-python2 python-pygments))
2570
0f0a5ef9
MC
2571(define-public python-bumpversion
2572 (package
2573 (name "python-bumpversion")
2574 (version "0.5.3")
2575 (source
2576 (origin
2577 (method url-fetch)
2578 (uri (pypi-uri "bumpversion" version))
2579 (sha256
2580 (base32
2581 "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37"))))
2582 (build-system python-build-system)
2583 (home-page "https://github.com/peritus/bumpversion")
2584 (synopsis "Tool to bump software version")
2585 (description "This tool provides a command-line interface (CLI) to bump a
2586software version simply.")
2587 (license license:expat)))
2588
b24fd2c2
MC
2589(define-public python-deprecated
2590 (package
2591 (name "python-deprecated")
2592 (version "1.2.5")
2593 (source
2594 (origin
2595 (method git-fetch)
2596 (uri (git-reference
2597 (url "https://github.com/tantale/deprecated.git")
2598 (commit (string-append "v" version))))
2599 (file-name (git-file-name name version))
2600 (sha256
2601 (base32
2602 "14909glxxwwc4b9qpz2b9jdriwzi5n65ichw85xqppap5f79wcwz"))))
2603 (build-system python-build-system)
2604 (arguments
2605 `(#:phases (modify-phases %standard-phases
2606 (replace 'check
2607 (lambda _
2608 (invoke "pytest"))))))
2609 (propagated-inputs
2610 `(("python-wrapt" ,python-wrapt)))
2611 (native-inputs
2612 `(("python-bumpversion" ,python-bumpversion)
2613 ("python-pytest" ,python-pytest)
2614 ("python-pytest-cov" ,python-pytest-cov)
2615 ("python-sphinx" ,python-sphinx)
2616 ("python-tox" ,python-tox)))
2617 (home-page "https://github.com/tantale/deprecated")
2618 (synopsis "Python decorator to deprecate classes, functions or methods")
2619 (description "The @code{deprecated} decorator provides a convenient way to deprecate
2620to deprecate classes, functions or methods.")
2621 (license license:expat)))
2622
d5a998fa
MC
2623(define-public python-pygithub
2624 (package
2625 (name "python-pygithub")
2626 (version "1.43.7")
2627 (source
2628 ;; We fetch from the Git repo because there are no tests in the PyPI
2629 ;; archive.
2630 (origin
2631 (method git-fetch)
2632 (uri (git-reference
2633 (url "https://github.com/PyGithub/PyGithub.git")
2634 (commit (string-append "v" version))))
2635 (file-name (git-file-name name version))
2636 (sha256
2637 (base32
2638 "0ww92zz0ja9w6rw83vphmn8rwmcn6abg16j4q7zxjc0rrg2cfj9i"))))
2639 (build-system python-build-system)
2640 (arguments
2641 `(#:phases (modify-phases %standard-phases
2642 ;; Some tests rely on the network.
2643 (add-after 'unpack 'disable-failing-tests
2644 (lambda _
2645 (substitute* "tests/Issue142.py"
2646 (("testDecodeJson") "disabled_testDecodeJson"))
2647 #t))
2648 (add-before 'check 'prepare-for-tests
2649 (lambda _
2650 (for-each (lambda (f)
2651 (chmod f #o666))
2652 (find-files "./tests"))
2653 (system* "python" "-m" "lib2to3" "-w" "-n" "tests")
2654 (setenv "PYTHONPATH"
2655 (string-append "./tests:" (getenv "PYTHONPATH")))
2656 #t)))))
2657 (propagated-inputs
2658 `(("python-deprecated" ,python-deprecated)
2659 ("python-pyjwt" ,python-pyjwt)
2660 ("python-requests" ,python-requests)))
2661 (native-inputs `(("python-httpretty" ,python-httpretty)))
2662 (home-page "https://pygithub.readthedocs.io/en/latest/")
2663 (synopsis "Python library for the GitHub API")
2664 (description "This library allows managing GitHub resources such as
2665repositories, user profiles, and organizations in your Python applications,
2666using version 3 of the GitHub application programming interface (API).")
2667 (license license:lgpl3+)))
2668
c0c0bb38
MC
2669(define-public python-rellu
2670 (package
2671 (name "python-rellu")
2672 (version "0.7")
2673 (source
2674 (origin
2675 (method url-fetch)
2676 (uri (pypi-uri "rellu" version))
2677 (sha256
2678 (base32
2679 "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x"))))
2680 (build-system python-build-system)
2681 (propagated-inputs
2682 `(("python-invoke" ,python-invoke)
2683 ("python-pygithub" ,python-pygithub)))
2684 (home-page "https://github.com/robotframework/rellu")
2685 (synopsis "Utilities to create PyPI releases")
2686 (description "This collection of utilities contains tooling and templates
2687to assist in creating releases on GitHub and publishing them on PyPI. It is
2688designed to be used by Robot Framework and tools and libraries in its
2689ecosystem, but can naturally be used also by other projects.")
2690 (license license:asl2.0)))
2691
b9790285
MC
2692(define-public python-robotframework
2693 (package
2694 (name "python-robotframework")
1710b8f8 2695 (version "3.1.2")
b9790285
MC
2696 ;; There are no tests in the PyPI archive.
2697 (source
2698 (origin
2699 (method git-fetch)
2700 (uri (git-reference
2701 (url "https://github.com/robotframework/robotframework.git")
2702 (commit (string-append "v" version))))
2703 (file-name (git-file-name name version))
2704 (sha256
1710b8f8 2705 (base32 "16gnxy0qinh8fhs0qvhff5z2xh49c3cqgm0d7bfjw120df6x7fym"))
b9790285
MC
2706 (patches (search-patches
2707 "python-robotframework-honor-source-date-epoch.patch"))))
2708 (build-system python-build-system)
2709 (arguments
2710 `(#:phases (modify-phases %standard-phases
2711 (add-before 'build 'build-and-install-doc
2712 (lambda* (#:key outputs #:allow-other-keys)
2713 (let* ((doc-output (assoc-ref outputs "doc"))
2714 (doc (string-append doc-output "/share/"
2715 ,name "-" ,version "/")))
2716 (invoke "invoke" "library-docs" "all")
2717 (mkdir-p doc)
2718 (copy-recursively "doc/libraries"
2719 (string-append doc "/libraries"))
2720 #t)))
2721 (replace 'check
2722 (lambda _
2723 (invoke "python" "utest/run.py"))))))
2724 (native-inputs
2725 `(("python-invoke" ,python-invoke)
2726 ("python-rellu" ,python-rellu)
2727 ("python:tk" ,python "tk"))) ;used when building the HTML doc
2728 (outputs '("out" "doc"))
2729 (home-page "https://robotframework.org")
2730 (synopsis "Generic automation framework")
2731 (description "Robot Framework is a generic automation framework for
2732acceptance testing, acceptance test driven development (ATDD), and robotic
2733process automation (RPA).")
2734 (license license:asl2.0)))
2735
5b84c120
MC
2736(define-public python-robotframework-lint
2737 ;; There is no properly tagged release; the commit below seems to correspond
2738 ;; to the 0.9 stable release available from PyPI. The tests are not
2739 ;; included in the PyPI archive, so we fetch the sources from the upstream
2740 ;; Git repo.
2741 (let ((commit "e851879bab1f63e4e53b34a4dc8a67ed95102830")
2742 (revision "1"))
2743 (package
2744 (name "python-robotframework-lint")
2745 (version (git-version "0.9.0" revision commit))
2746 (source
2747 (origin
2748 (method git-fetch)
2749 (uri (git-reference
2750 (url "https://github.com/boakley/robotframework-lint.git")
2751 (commit commit)))
2752 (file-name (git-file-name name version))
2753 (sha256
2754 (base32
2755 "1p6fknqg5sb9qz5857ji4a877657vgfjm5v3zn45994parx6ml1m"))))
2756 (build-system python-build-system)
2757 (arguments
2758 `(#:phases
2759 (modify-phases %standard-phases
2760 (replace 'check
2761 (lambda _
2762 (invoke "python" "-m" "robot" "-A"
2763 "tests/conf/default.args" "tests"))))))
2764 (propagated-inputs
2765 `(("python-robotframework" ,python-robotframework)))
2766 (home-page "https://github.com/boakley/robotframework-lint/")
2767 (synopsis "Static analysis tool (linter) for Robot Framework")
2768 (description "This package provides the @code{rflint} command-line
2769utility, a static analysis tool (linter) for Robot Framework source files.")
2770 (license license:asl2.0))))
2771
c0c64f17
MC
2772(define-public python-robotframework-sshlibrary
2773 (package
2774 (name "python-robotframework-sshlibrary")
2775 (version "3.3.0")
2776 ;; There are no tests in the PyPI archive.
2777 (source
2778 (origin
2779 (method git-fetch)
2780 (uri (git-reference
2781 (url "https://github.com/robotframework/SSHLibrary.git")
2782 (commit (string-append "v" version))))
2783 (file-name (git-file-name name version))
2784 (sha256
2785 (base32
2786 "1mk6dz2jqqndbx4yji09012q6rmadnqdywi7czvj62b0s07dr3r2"))))
2787 (build-system python-build-system)
2788 (arguments
2789 `(#:phases
2790 (modify-phases %standard-phases
2791 (add-before 'build 'build-and-install-doc
2792 (lambda* (#:key outputs #:allow-other-keys)
2793 (let* ((doc-output (assoc-ref outputs "doc"))
2794 (doc (string-append doc-output "/share/"
2795 ,name "-" ,version "/")))
2796 (invoke "chmod" "-R" "+w" "docs")
2797 (invoke "invoke" "kw-docs" "project-docs")
2798 (mkdir-p doc)
2799 (for-each delete-file (find-files "docs" "\\.rst"))
2800 (copy-recursively "docs" doc)
2801 #t)))
2802 (replace 'check
2803 (lambda _
2804 ;; Some tests require an SSH server; we remove them.
2805 (delete-file "utest/test_client_api.py")
2806 (delete-file "utest/test_scp.py")
2807 (invoke "python" "utest/run.py"))))))
2808 (propagated-inputs
2809 `(("python-robotframework" ,python-robotframework)
2810 ("python-paramiko" ,python-paramiko)
2811 ("python-scp" ,python-scp)))
2812 (native-inputs
2813 `(("openssh" ,openssh)
2814 ("which" ,which)
2815 ;; To generate the documentation
2816 ("python-docutils" ,python-docutils)
2817 ("python-invoke" ,python-invoke)
2818 ("python-pygments" ,python-pygments)
2819 ("python-rellu" ,python-rellu)))
2820 (outputs '("out" "doc"))
2821 (home-page "https://github.com/robotframework/SSHLibrary")
2822 (synopsis "Robot Framework library for SSH and SFTP")
2823 (description "SSHLibrary is a Robot Framework library providing support
2824for SSH and SFTP. It has the following main usages:
2825@itemize @bullet
2826@item Executing commands on the remote machine, either blocking or non-blocking.
2827@item Writing and reading in an interactive shell.
2828@item Transferring files and directories over SFTP.
2829@item Ensuring that files and directories exist on the remote machine.
2830@end itemize")
2831 (license license:asl2.0)))
2832
13d825fc
MC
2833(define-public python-scp
2834 (package
2835 (name "python-scp")
2836 (version "0.13.2")
2837 (source
2838 (origin
2839 (method url-fetch)
2840 (uri (pypi-uri "scp" version))
2841 (sha256
2842 (base32
2843 "1crlpw9lnn58fs1c1rmh7s7s9y5gkgpgjsqlvg9qa51kq1knx7gg"))))
2844 (build-system python-build-system)
2845 (arguments
2846 '(#:tests? #f)) ;tests require an SSH server
2847 (propagated-inputs
2848 `(("python-paramiko" ,python-paramiko)))
2849 (home-page "https://github.com/jbardin/scp.py")
2850 (synopsis "SCP protocol module for Python and Paramiko")
2851 (description "The scp module extends the Paramiko library to send and
2852receive files via the SCP1 protocol, as implemented by the OpenSSH
2853@command{scp} program.")
2854 (license license:gpl2+)))
2855
44d10b1f
RW
2856(define-public python-rst.linker
2857 (package
2858 (name "python-rst.linker")
2859 (version "1.10")
2860 (source
2861 (origin
2862 (method url-fetch)
2863 (uri (pypi-uri "rst.linker" version))
2864 (sha256
2865 (base32
2866 "0iqaacp7pj1s8avs4kc0qg0r7dscywaq37y6l9j14glqdikk0wdj"))))
2867 (build-system python-build-system)
2868 (propagated-inputs
2869 `(("python-dateutil" ,python-dateutil)
2870 ("python-six" ,python-six)))
2871 (native-inputs
2872 `(("python-setuptools-scm" ,python-setuptools-scm)))
2873 ;; Test would require path.py, which would introduce a cyclic dependence.
2874 (arguments `(#:tests? #f))
2875 ;; Note: As of version 1.7 the documentation is not worth building.
2876 (home-page "https://github.com/jaraco/rst.linker")
2877 (synopsis "Sphinx plugin to add links and timestamps")
2878 (description "rst.linker allows to automatically replace text by a
2879reStructuredText external reference or timestamps. It's primary purpose is to
2880augment the changelog, but it can be used for other documents, too.")
2881 (license license:expat)))
2882
2883(define-public python2-rst.linker
2884 (package-with-python2 python-rst.linker))
2885
2886(define-public python-feedgenerator
2887 (package
2888 (name "python-feedgenerator")
2889 (version "1.9")
2890 (source
2891 (origin
2892 (method url-fetch)
2893 (uri (pypi-uri "feedgenerator" version))
2894 (sha256
2895 (base32
2896 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
2897 (modules '((guix build utils)))
2898 (snippet
2899 '(begin
2900 ;; Remove pre-compiled .pyc files from source.
2901 (for-each delete-file-recursively
2902 (find-files "." "__pycache__" #:directories? #t))
2903 (for-each delete-file (find-files "." "\\.pyc$"))
2904 #t))))
2905 (build-system python-build-system)
2906 (propagated-inputs
2907 `(("python-pytz" ,python-pytz)
2908 ("python-six" ,python-six)))
2909 (home-page "https://github.com/getpelican/feedgenerator")
2910 (synopsis
2911 "Standalone version of Django's Atom/RSS feed generator")
2912 (description
2913 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2914which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
2915 (license license:bsd-3)))
2916
2917(define-public python2-feedgenerator
2918 (package-with-python2 python-feedgenerator))
2919
2920(define-public python-toml
2921 (package
2922 (name "python-toml")
2923 (version "0.9.4")
2924 (source
2925 (origin
2926 (method url-fetch)
2927 (uri (pypi-uri "toml" version))
2928 (sha256
2929 (base32
2930 "0bdbpbip67wdm6c7xwc6mmbmskyradj4cdxn1iibj4fcx1nbv1lf"))))
2931 (build-system python-build-system)
2932 (arguments
2933 `(#:tests? #f)) ;no tests suite in release
2934 (home-page "https://github.com/uiri/toml")
2935 (synopsis "Library for TOML")
2936 (description
2937 "@code{toml} is a library for parsing and creating Tom's Obvious, Minimal
2938Language (TOML) configuration files.")
2939 (license license:expat)))
2940
346c8752
BG
2941(define-public python-jsonrpc-server
2942 (package
2943 (name "python-jsonrpc-server")
2944 (version "0.1.2")
2945 (source
2946 (origin
2947 (method url-fetch)
2948 (uri (pypi-uri "python-jsonrpc-server" version))
2949 (sha256
2950 (base32
2951 "0m4ykpcdy52x37n1ikysp07j7p8ialcdvvvsrjp3545sn7iiid09"))))
2952 (build-system python-build-system)
2953 (propagated-inputs
2954 `(("python-future" ,python-future)
2955 ("python-mock" ,python-mock)
2956 ("python-pytest" ,python-pytest)))
2957 (home-page
2958 "https://github.com/palantir/python-jsonrpc-server")
2959 (synopsis "JSON RPC 2.0 server library")
2960 (description
1df5407c 2961 "This package provides a JSON RPC 2.0 server library for Python.")
346c8752
BG
2962 (license license:expat)))
2963
56f4ad47
BG
2964(define-public python-pydocstyle
2965 (package
2966 (name "python-pydocstyle")
2967 (version "3.0.0")
2968 (source
2969 (origin
2970 (method url-fetch)
2971 (uri (pypi-uri "pydocstyle" version))
2972 (sha256
2973 (base32
2974 "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap"))))
2975 (build-system python-build-system)
2976 (propagated-inputs
2977 `(("python-six" ,python-six)
2978 ("python-snowballstemmer" ,python-snowballstemmer)))
2979 (home-page
2980 "https://github.com/PyCQA/pydocstyle/")
2981 (synopsis "Python docstring style checker")
2982 (description
2983 "This package provides a style checker for the Python Language
2984Server (PLS).")
2985 (license license:expat)))
2986
be4d840c
BG
2987(define-public python-language-server
2988 (package
2989 (name "python-language-server")
ccbaeba3 2990 (version "0.26.1")
be4d840c
BG
2991 (source
2992 (origin
2993 (method url-fetch)
2994 (uri (pypi-uri "python-language-server" version))
2995 (sha256
2996 (base32
ccbaeba3 2997 "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s"))))
be4d840c
BG
2998 (build-system python-build-system)
2999 (propagated-inputs
3000 `(("python-pluggy" ,python-pluggy)
3001 ("python-jsonrpc-server" ,python-jsonrpc-server)
3002 ("python-jedi" ,python-jedi)
3003 ("python-yapf" ,python-yapf)
3004 ("python-pyflakes" ,python-pyflakes)
3005 ("python-pydocstyle" ,python-pydocstyle)
3006 ("python-pycodestyle" ,python-pycodestyle)
3007 ("python-mccabe" ,python-mccabe)
3008 ("python-rope" ,python-rope)
fe4a4bd2
BG
3009 ("python-autopep8" ,python-autopep8)
3010 ("python-pylint" ,python-pylint)))
be4d840c
BG
3011 (home-page "https://github.com/palantir/python-language-server")
3012 (synopsis "Python implementation of the Language Server Protocol")
3013 (description
3014 "The Python Language Server (pyls) is an implementation of the Python 3
3015language specification for the Language Server Protocol (LSP). This tool is
3016used in text editing environments to provide a complete and integrated
3017feature-set for programming Python effectively.")
3018 (license license:expat)))
3019
44d10b1f
RW
3020(define-public python-black
3021 (package
3022 (name "python-black")
3023 (version "18.6b4")
3024 (source
3025 (origin
3026 (method url-fetch)
3027 (uri (pypi-uri "black" version))
3028 (sha256
3029 (base32
3030 "0i4sfqgz6w15vd50kbhi7g7rifgqlf8yfr8y78rypd56q64qn592"))))
3031 (build-system python-build-system)
3032 (arguments
3033 `(#:phases
3034 (modify-phases %standard-phases
3035 (add-after 'patch-source-shebangs 'patch-extra-shebangs
3036 (lambda _
3037 (let ((python3 (which "python3")))
3038 (substitute* '("tests/data/fmtonoff.py"
3039 "tests/data/string_prefixes.py"
3040 "tests/data/function.py")
3041 (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version)
3042 (string-append "#!" python3 (if (string? minor-version)
3043 minor-version
3044 ""))))))))))
3045 (propagated-inputs
3046 `(("python-click" ,python-click)
3047 ("python-attrs" ,python-attrs)
3048 ("python-appdirs" ,python-appdirs)
3049 ("python-toml" ,python-toml)))
3050 (home-page "https://github.com/ambv/black")
3051 (synopsis "The uncompromising code formatter")
3052 (description "Black is the uncompromising Python code formatter.")
3053 (license license:expat)))
3054
3055(define-public python-blinker
3056 (package
3057 (name "python-blinker")
3058 (version "1.4")
3059 (source
3060 (origin
3061 (method url-fetch)
3062 (uri (pypi-uri "blinker" version))
3063 (sha256
3064 (base32
3065 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
3066 (build-system python-build-system)
3067 (home-page "http://pythonhosted.org/blinker/")
3068 (synopsis "Fast, simple object-to-object and broadcast signaling")
3069 (description
3070 "Blinker provides a fast dispatching system that allows any number of
3071interested parties to subscribe to events, or \"signals\".")
3072 (license license:expat)))
3073
3074(define-public python2-blinker
3075 (package-with-python2 python-blinker))
3076
3077(define-public pelican
3078 (package
3079 (name "pelican")
aa71b690 3080 (version "4.0.1")
44d10b1f
RW
3081 (source
3082 (origin
3083 (method url-fetch)
3084 (uri (pypi-uri "pelican" version))
3085 (sha256
3086 (base32
aa71b690 3087 "05yda7n6r0ll18fpdjzkzyr0ls8hbb86fnjyb33k9jvv5avah2lr"))))
44d10b1f
RW
3088 (build-system python-build-system)
3089 (propagated-inputs
3090 `(("python-feedgenerator" ,python-feedgenerator)
3091 ("python-jinja2" ,python-jinja2)
3092 ("python-pygments" ,python-pygments)
3093 ("python-docutils" ,python-docutils)
3094 ("python-pytz" ,python-pytz)
3095 ("python-blinker" ,python-blinker)
3096 ("python-unidecode" ,python-unidecode)
3097 ("python-six" ,python-six)
3098 ("python-dateutil" ,python-dateutil)
3099 ("python-markdown" ,python-markdown)))
3100 (home-page "https://getpelican.com/")
3101 (arguments
3102 `(;; XXX Requires a lot more packages to do unit tests :P
3103 #:tests? #f
3104 #:phases (modify-phases %standard-phases
3105 (add-before
3106 'install 'adjust-requires
3107 ;; Since feedgenerator is installed from git, it doesn't
3108 ;; conform to the version requirements.
3109 ;;
3110 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3111 ;; version requirement so setuptools doesn't get confused.
3112 (lambda _
3113 (substitute* "setup.py"
3114 (("['\"]feedgenerator.*?['\"]")
3115 "'feedgenerator'")))))))
3116 (synopsis "Python-based static site publishing system")
3117 (description
3118 "Pelican is a tool to generate a static blog from reStructuredText,
3119Markdown input files, and more. Pelican uses Jinja2 for templating
3120and is very extensible.")
3121 (license license:agpl3+)))
3122
8c141421
JH
3123(define-public mallard-ducktype
3124 (package
3125 (name "mallard-ducktype")
12cc3da5 3126 (version "1.0.2")
8c141421
JH
3127 (source
3128 (origin
3129 (method git-fetch)
12cc3da5
JH
3130 ;; git-reference because tests are not included in pypi source tarball
3131 ;; https://issues.guix.gnu.org/issue/36755#2
8c141421
JH
3132 (uri (git-reference
3133 (url "https://github.com/projectmallard/mallard-ducktype.git")
3134 (commit version)))
3135 (file-name (git-file-name name version))
3136 (sha256
3137 (base32
12cc3da5 3138 "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c"))))
8c141421 3139 (build-system python-build-system)
5246655f
EF
3140 (arguments
3141 '(#:phases
3142 (modify-phases %standard-phases
3143 (replace 'check
3144 (lambda _
3145 (with-directory-excursion "tests"
3146 (invoke "sh" "runtests")))))))
8c141421
JH
3147 (home-page "http://projectmallard.org")
3148 (synopsis "Convert Ducktype to Mallard documentation markup")
3149 (description
3150 "Ducktype is a lightweight syntax that can represent all the semantics
3151of the Mallard XML documentation system. Ducktype files can be converted to
3152Mallard using the @command{ducktype} tool. The yelp-tools package
3153provides additional functionality on the produced Mallard documents.")
3154 (license license:expat)))
3155
44d10b1f
RW
3156(define-public python-scikit-image
3157 (package
3158 (name "python-scikit-image")
9ff04084 3159 (version "0.14.2")
44d10b1f
RW
3160 (source
3161 (origin
3162 (method url-fetch)
3163 (uri (pypi-uri "scikit-image" version))
3164 (sha256
9ff04084 3165 (base32 "07qchljkyxvg5nrm12fvszi7pmjk4m01qp0w0z8syxzxxs20pz8s"))))
44d10b1f
RW
3166 (build-system python-build-system)
3167 (arguments
3168 ;; TODO: Some tests require running X11 server. Disable them?
3169 '(#:tests? #f))
3170 ;; See DEPENDS.txt for the list of build and run time requiremnts
3171 (propagated-inputs
3172 `(("python-cloudpickle" ,python-cloudpickle)
3173 ("python-dask" ,python-dask)
3174 ("python-matplotlib" ,python-matplotlib)
3175 ("python-networkx" ,python-networkx)
3176 ("python-numpy" ,python-numpy)
3177 ("python-pillow" ,python-pillow)
3178 ("python-pywavelets" ,python-pywavelets)
3179 ("python-scipy" ,python-scipy)
3180 ("python-six" ,python-six)))
3181 (native-inputs
3182 `(("python-cython" ,python-cython)))
3183 (home-page "http://scikit-image.org/")
3184 (synopsis "Image processing in Python")
3185 (description
3186 "Scikit-image is a collection of algorithms for image processing.")
3187 (license license:bsd-3)))
3188
3189(define-public python2-scikit-image
3190 (package-with-python2 python-scikit-image))
3191
3192(define-public python-cython
3193 (package
3194 (name "python-cython")
756a9809 3195 (version "0.29.13")
44d10b1f
RW
3196 (source
3197 (origin
3198 (method url-fetch)
3199 (uri (pypi-uri "Cython" version))
3200 (sha256
3201 (base32
756a9809 3202 "13k37lrcgagwwnzr5bzririsscb793vndj234d475x1h9ad0d7f2"))))
44d10b1f
RW
3203 (build-system python-build-system)
3204 ;; we need the full python package and not just the python-wrapper
3205 ;; because we need libpython3.3m.so
3206 (inputs
3207 `(("python" ,python)))
3208 (arguments
3209 `(#:phases
3210 (modify-phases %standard-phases
3211 (add-before 'check 'set-HOME
3212 ;; some tests require access to "$HOME/.cython"
3213 (lambda _ (setenv "HOME" "/tmp") #t))
3214
3215 ;; FIXME: These tests started failing on armhf after the 0.28 update
3216 ;; (commit c69d11c5930), both with an error such as this:
3217 ;; compiling (cpp) and running dictcomp ...
3218 ;; === C/C++ compiler error output: ===
3219 ;; ‘
3220 ;; dictcomp.cpp:5221: confused by earlier errors, bailing out
3221 ;; See <https://hydra.gnu.org/build/2948724> for logs.
3222 ,@(if (target-arm32?)
3223 `((add-before 'check 'disable-failing-tests
3224 (lambda _
3225 (let ((disabled-tests (open-file "tests/bugs.txt" "a")))
3226 (for-each (lambda (test)
3227 (format disabled-tests "~a\n" test))
3228 '("memslice" "dictcomp"))
3229 (close-port disabled-tests)))))
3230 '())
3231
3232 (replace 'check
3233 (lambda _
275cce3d
MB
3234 ;; Disable compiler optimizations to greatly reduce the running
3235 ;; time of the test suite.
3236 (setenv "CFLAGS" "-O0")
3237
3238 (invoke "python" "runtests.py" "-vv"
3239 "-j" (number->string (parallel-job-count))))))))
f319409b 3240 (home-page "https://cython.org/")
44d10b1f
RW
3241 (synopsis "C extensions for Python")
3242 (description "Cython is an optimising static compiler for both the Python
3243programming language and the extended Cython programming language. It makes
3244writing C extensions for Python as easy as Python itself.")
3245 (license license:asl2.0)
3246 (properties `((python2-variant . ,(delay python2-cython))))))
3247
3248(define-public python2-cython
3249 (package (inherit (package-with-python2
3250 (strip-python2-variant python-cython)))
3251 (name "python2-cython")
3252 (inputs
3253 `(("python-2" ,python-2))))) ; this is not automatically changed
3254
3255;; The RPython toolchain currently does not support Python 3.
3256(define-public python2-rpython
3257 (package
3258 (name "python2-rpython")
3259 (version "0.2.1")
3260 (source
3261 (origin
3262 (method url-fetch)
3263 (uri (pypi-uri "rpython" version))
3264 (sha256
3265 (base32
3266 "02z9cvxf0y41dcvwnvf2zn0albhhw1drvjjbq27m6i1piw1k6fc0"))))
3267 (build-system python-build-system)
3268 (arguments `(#:python ,python-2))
3269 (native-inputs
3270 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
3271 (home-page "https://rpython.readthedocs.org")
3272 (synopsis "Framework for implementing interpreters and virtual machines")
3273 (description "RPython is a translation and support framework for
3274producing implementations of dynamic languages, emphasizing a clean separation
3275between language specification and implementation aspects.")
3276 (license license:expat)))
3277
3278;; NOTE: when upgrading numpy please make sure that python-pandas and
3279;; python-scipy still build, as these three packages are often used together.
3280(define-public python-numpy
3281 (package
3282 (name "python-numpy")
3283 (version "1.15.4")
3284 (source
3285 (origin
3286 (method url-fetch)
3287 (uri (string-append
3288 "https://github.com/numpy/numpy/releases/download/v"
3289 version "/numpy-" version ".tar.gz"))
3290 (sha256
3291 (base32
3292 "102vcl2qq4pjbm7a3d67vkkvn4466ngia1d8wi5avqwqh8j0jvkn"))))
3293 (build-system python-build-system)
3294 (inputs
3295 `(("openblas" ,openblas)
3296 ("lapack" ,lapack)))
3297 (native-inputs
3298 `(("python-cython" ,python-cython)
3299 ("python-pytest" ,python-pytest)
3300 ("gfortran" ,gfortran)))
3301 (arguments
3302 `(#:phases
3303 (modify-phases %standard-phases
3304 (add-before 'build 'configure-blas-lapack
3305 (lambda* (#:key inputs #:allow-other-keys)
3306 (call-with-output-file "site.cfg"
3307 (lambda (port)
3308 (format port
3309 "[openblas]
3310libraries = openblas
3311library_dirs = ~a/lib
3312include_dirs = ~a/include
3313
3314# backslash-n to make emacs happy
3315\n[lapack]
3316lapack_libs = lapack
3317library_dirs = ~a/lib
3318include_dirs = ~a/include
3319"
3320 (assoc-ref inputs "openblas")
3321 (assoc-ref inputs "openblas")
3322 (assoc-ref inputs "lapack")
3323 (assoc-ref inputs "lapack"))))
3324 #t))
3325 (add-before 'build 'fix-executable-paths
3326 (lambda* (#:key inputs #:allow-other-keys)
3327 ;; Make /gnu/store/...-bash-.../bin/sh the default shell,
3328 ;; instead of /bin/sh.
3329 (substitute* "numpy/distutils/exec_command.py"
3330 (("(os.environ.get\\('SHELL', ')(/bin/sh'\\))" match match-start match-end)
3331 (string-append match-start (assoc-ref inputs "bash") match-end)))
3332 ;; Use "gcc" executable, not "cc".
3333 (substitute* "numpy/distutils/system_info.py"
3334 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3335 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3336 #t))
3337 ;; Tests can only be run after the library has been installed and not
3338 ;; within the source directory.
3339 (delete 'check)
3340 (add-after 'install 'check
3341 (lambda* (#:key outputs inputs #:allow-other-keys)
3342 ;; Make installed package available for running the tests
3343 (add-installed-pythonpath inputs outputs)
3344 ;; Make sure "f2py" etc is found.
3345 (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
3346 ":" (getenv "PATH")))
3347 (with-directory-excursion "/tmp"
3348 (invoke "python" "-c"
3349 "import numpy; numpy.test(verbose=2)")))))))
3350 (home-page "http://www.numpy.org/")
3351 (synopsis "Fundamental package for scientific computing with Python")
3352 (description "NumPy is the fundamental package for scientific computing
3353with Python. It contains among other things: a powerful N-dimensional array
3354object, sophisticated (broadcasting) functions, tools for integrating C/C++
3355and Fortran code, useful linear algebra, Fourier transform, and random number
3356capabilities.")
3357 (license license:bsd-3)))
3358
3359(define-public python2-numpy
3360 (package-with-python2 python-numpy))
3361
3362;; NOTE: NumPy 1.8 is packaged only for Python 2 because it is of
3363;; interest only for legacy code going back to NumPy's predecessor
3364;; Numeric.
3365(define-public python2-numpy-1.8
3366 (package (inherit python2-numpy)
3367 (version "1.8.2")
3368 (source
3369 (origin
3370 (method url-fetch)
3371 (uri (string-append
3372 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3373 (file-name (string-append "python2-numpy-" version ".tar.gz"))
3374 (sha256
3375 (base32
3376 "0sc20gz1b17xnyrkp5frca3ql5qfalpv916hfg2kqxpwr6jg0f1g"))))
3377 (arguments
3378 (substitute-keyword-arguments (package-arguments python2-numpy)
3379 ((#:phases phases)
3380 `(modify-phases ,phases
3381 (replace 'configure-blas-lapack
3382 (lambda* (#:key inputs #:allow-other-keys)
3383 (call-with-output-file "site.cfg"
3384 (lambda (port)
3385 (format port
3386 "[openblas]
3387libraries = openblas,lapack
3388library_dirs = ~a/lib:~a/lib
3389include_dirs = ~a/include:~a/include
3390"
3391 (assoc-ref inputs "openblas")
3392 (assoc-ref inputs "lapack")
3393 (assoc-ref inputs "openblas")
3394 (assoc-ref inputs "lapack"))))
3395 #t))))))
3396 (native-inputs
3397 `(("python2-nose" ,python2-nose)))
3398 (description "NumPy is the fundamental package for scientific computing
3399with Python. It contains among other things: a powerful N-dimensional array
3400object, sophisticated (broadcasting) functions, tools for integrating C/C++
3401and Fortran code, useful linear algebra, Fourier transform, and random number
3402capabilities. Version 1.8 is the last one to contain the numpy.oldnumeric API
3403that includes the compatibility layer numpy.oldnumeric with NumPy's predecessor
3404Numeric.")
3405 (license license:bsd-3)))
3406
3407(define-public python-munch
3408 (package
3409 (name "python-munch")
3410 (version "2.0.4")
3411 (source
3412 (origin
3413 (method url-fetch)
3414 (uri (pypi-uri "munch" version))
3415 (sha256
3416 (base32
3417 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3418 (build-system python-build-system)
3419 (home-page "https://github.com/Infinidat/munch")
3420 (synopsis "Dot-accessible dictionary")
3421 (description "Munch is a dot-accessible dictionary similar to JavaScript
3422objects.")
3423 (license license:expat)))
3424
3425(define-public python2-munch
3426 (package-with-python2 python-munch))
3427
3428(define-public python-colormath
3429 (package
3430 (name "python-colormath")
3431 (version "3.0.0")
3432 (source
3433 (origin
3434 (method url-fetch)
3435 (uri (pypi-uri "colormath" version))
3436 (sha256
3437 (base32
3438 "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix"))))
3439 (build-system python-build-system)
3440 (propagated-inputs
3441 `(("python-networkx" ,python-networkx)
3442 ("python-numpy" ,python-numpy)))
3443 (home-page "https://github.com/gtaylor/python-colormath")
3444 (synopsis "Color math and conversion library")
3445 (description
3446 "This is a Python library for color math and conversions.")
3447 (license license:bsd-3)))
3448
3449(define-public python2-colormath
3450 (package-with-python2 python-colormath))
3451
3452(define-public python-spectra
3453 (package
3454 (name "python-spectra")
3455 (version "0.0.11")
3456 (source
3457 (origin
3458 (method url-fetch)
3459 (uri (pypi-uri "spectra" version))
3460 (sha256
3461 (base32
3462 "1f322x914bhkg6r5gv1vmnir3iy0k5kih0fd2gp3rdkw32jn5cwf"))))
3463 (build-system python-build-system)
3464 (arguments
3465 `(#:phases
3466 (modify-phases %standard-phases
3467 (replace 'check
38ec0f6a 3468 (lambda _ (invoke "nosetests" "-v"))))))
44d10b1f
RW
3469 (propagated-inputs
3470 `(("python-colormath" ,python-colormath)))
3471 (native-inputs
3472 `(("python-nose" ,python-nose)))
3473 (home-page "https://github.com/jsvine/spectra")
3474 (synopsis "Color scales and color conversion")
3475 (description
3476 "This package provides a Python library intended to make color math,
3477color scales, and color space conversion easy. It has support for:
3478
3479@enumerate
3480@item Color scales
3481@item Color ranges
3482@item Color blending
3483@item Brightening/darkening colors
3484@item Saturating/desaturating colors
3485@item Conversion to/from multiple color spaces.
3486@end enumerate\n")
3487 (license license:expat)))
3488
3489(define-public python2-spectra
3490 (package-with-python2 python-spectra))
3491
3492(define-public python-numpy-documentation
3493 (package
3494 (name "python-numpy-documentation")
3495 (version (package-version python-numpy))
3496 (source (package-source python-numpy))
3497 (build-system python-build-system)
3498 (native-inputs
3499 `(("python-matplotlib" ,python-matplotlib)
3500 ("python-numpy" ,python-numpy)
3501 ("pkg-config" ,pkg-config)
3502 ("python-sphinx" ,python-sphinx)
3503 ("python-numpydoc" ,python-numpydoc)
f75aa97f 3504 ("texlive" ,(texlive-union (list texlive-fonts-cm-super
44d10b1f
RW
3505 texlive-fonts-ec
3506 texlive-generic-ifxetex
3507 texlive-generic-pdftex
f75aa97f 3508 texlive-amsfonts
44d10b1f
RW
3509 texlive-latex-capt-of
3510 texlive-latex-cmap
3511 texlive-latex-environ
3512 texlive-latex-eqparbox
3513 texlive-latex-etoolbox
3514 texlive-latex-expdlist
3515 texlive-latex-fancyhdr
3516 texlive-latex-fancyvrb
3517 texlive-latex-fncychap
3518 texlive-latex-float
3519 texlive-latex-framed
3520 texlive-latex-geometry
3521 texlive-latex-graphics
3522 texlive-latex-hyperref
3523 texlive-latex-mdwtools
3524 texlive-latex-multirow
3525 texlive-latex-needspace
3526 texlive-latex-oberdiek
3527 texlive-latex-parskip
3528 texlive-latex-preview
3529 texlive-latex-tabulary
3530 texlive-latex-threeparttable
3531 texlive-latex-titlesec
3532 texlive-latex-trimspaces
3533 texlive-latex-ucs
3534 texlive-latex-upquote
3535 texlive-latex-url
3536 texlive-latex-varwidth
3537 texlive-latex-wrapfig)))
3538 ("texinfo" ,texinfo)
3539 ("perl" ,perl)
3540 ("scipy-sphinx-theme"
3541 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3542 (method git-fetch)
3543 (uri (git-reference
3544 (url "https://github.com/scipy/scipy-sphinx-theme.git")
3545 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
3546 (sha256
3547 (base32
3548 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
3549 ,@(package-native-inputs python-numpy)))
3550 (arguments
3551 `(#:tests? #f ; we're only generating the documentation
3552 #:phases
3553 (modify-phases %standard-phases
3554 (delete 'build)
3555 (replace 'install
3556 (lambda* (#:key inputs outputs #:allow-other-keys)
3557 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3558 (doc (string-append
3559 data "/doc/" ,name "-"
3560 ,(package-version python-numpy)))
3561 (info-reader (string-append data "/info"))
3562 (html (string-append doc "/html"))
3563 (scipy-sphinx-theme "scipy-sphinx-theme")
3564 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3565 (pyver ,(string-append "PYVER=")))
3566
3567 ;; FIXME: this is needed to for texlive-union to generate
3568 ;; fonts, which are not found.
3569 (setenv "HOME" "/tmp")
3570
3571 (with-directory-excursion "doc"
3572 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3573 (mkdir-p html)
4fc898da
RW
3574 (invoke "make" "html" pyver)
3575 (invoke "make" "latex" "PAPER=a4" pyver)
3576 (invoke "make" "-C" "build/latex"
44d10b1f
RW
3577 "all-pdf" "PAPER=a4" pyver)
3578 ;; FIXME: Generation of the info file fails.
4fc898da 3579 ;; (invoke "make" "info" pyver)
44d10b1f
RW
3580 ;; (mkdir-p info)
3581 ;; (copy-file "build/texinfo/numpy.info"
3582 ;; (string-append info "/numpy.info"))
3583 (for-each (lambda (file)
3584 (copy-file (string-append "build/latex" file)
3585 (string-append doc file)))
3586 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3587 (with-directory-excursion "build/html"
3588 (for-each (lambda (file)
3589 (let* ((dir (dirname file))
3590 (tgt-dir (string-append html "/" dir)))
3591 (unless (equal? "." dir)
3592 (mkdir-p tgt-dir))
3593 (install-file file html)))
3594 (find-files "." ".*")))))
3595 #t)))))
3596 (home-page (package-home-page python-numpy))
3597 (synopsis "Documentation for the python-numpy package")
3598 (description (package-description python-numpy))
3599 (license (package-license python-numpy))))
3600
3601(define-public python2-numpy-documentation
3602 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
3603 (package
3604 (inherit numpy-documentation)
3605 (native-inputs `(("python2-functools32" ,python2-functools32)
3606 ,@(package-native-inputs numpy-documentation))))))
3607
3608(define-public python-pygit2
3609 (package
3610 (name "python-pygit2")
dac8b275 3611 (version "0.28.2")
44d10b1f
RW
3612 (source
3613 (origin
3614 (method url-fetch)
3615 (uri (pypi-uri "pygit2" version))
3616 (sha256
dac8b275 3617 (base32 "11kzj5mjkspvplnpdb6bj8dcj6rgmkk986k8hjcklyg5yaxkz32d"))))
44d10b1f
RW
3618 (build-system python-build-system)
3619 (arguments
c3ecab0d 3620 '(#:tests? #f)) ; tests don't run correctly in our environment
44d10b1f
RW
3621 (propagated-inputs
3622 `(("python-six" ,python-six)
3623 ("python-cffi" ,python-cffi)
3624 ("libgit2" ,libgit2)
3625 ("python-tox" ,python-tox)))
3626 (native-inputs
3627 `(("python-pytest" ,python-pytest)))
3628 (home-page "https://github.com/libgit2/pygit2")
3629 (synopsis "Python bindings for libgit2")
3630 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3631library, libgit2 implements Git plumbing.")
3632 ;; GPL2.0 only, with linking exception.
3633 (license license:gpl2)))
3634
3635(define-public python2-pygit2
3636 (package-with-python2 python-pygit2))
3637
3638(define-public python-pyparsing
3639 (package
3640 (name "python-pyparsing")
6d3cff5a 3641 (version "2.3.1")
44d10b1f
RW
3642 (source
3643 (origin
3644 (method url-fetch)
3645 (uri (pypi-uri "pyparsing" version))
3646 (sha256
6d3cff5a 3647 (base32 "0yk6xl885b91dmlhlsap7x78hk2rdr879fln9anbq6k4ca42djb6"))))
44d10b1f
RW
3648 (build-system python-build-system)
3649 (outputs '("out" "doc"))
3650 (arguments
3651 `(#:tests? #f ; no test target
3652 #:phases
3653 (modify-phases %standard-phases
3654 (add-after 'install 'install-doc
3655 (lambda* (#:key outputs #:allow-other-keys)
3656 (let* ((doc (string-append (assoc-ref outputs "doc")
3657 "/share/doc/" ,name "-" ,version))
3658 (html-doc (string-append doc "/html"))
3659 (examples (string-append doc "/examples")))
3660 (mkdir-p html-doc)
3661 (mkdir-p examples)
3662 (for-each
3663 (lambda (dir tgt)
3664 (map (lambda (file)
3665 (install-file file tgt))
3666 (find-files dir ".*")))
3667 (list "docs" "htmldoc" "examples")
3668 (list doc html-doc examples))
3669 #t))))))
3670 (home-page "https://github.com/pyparsing/pyparsing")
3671 (synopsis "Python parsing class library")
3672 (description
3673 "The pyparsing module is an alternative approach to creating and
3674executing simple grammars, vs. the traditional lex/yacc approach, or the use
3675of regular expressions. The pyparsing module provides a library of classes
3676that client code uses to construct the grammar directly in Python code.")
3677 (license license:expat)))
3678
3679(define-public python2-pyparsing
3680 (package-with-python2 python-pyparsing))
3681
3682(define-public python-numpydoc
3683 (package
3684 (name "python-numpydoc")
3685 (version "0.8.0")
3686 (source
3687 (origin
3688 (method url-fetch)
3689 (uri (pypi-uri "numpydoc" version))
3690 (sha256
3691 (base32
3692 "1zazxg3m8j4fksv3f7v7vpf4bj9qb1vj3r326am0vdip141vzx31"))))
3693 (build-system python-build-system)
3694 (propagated-inputs
3695 `(("python-sphinx" ,python-sphinx)))
3696 (native-inputs
3697 `(("python-nose" ,python-nose)))
3698 (home-page "https://pypi.python.org/pypi/numpydoc")
3699 (synopsis
3700 "Numpy's Sphinx extensions")
3701 (description
3702 "Sphinx extension to support docstrings in Numpy format.")
3703 (license license:bsd-2)))
3704
3705(define-public python2-numpydoc
3706 (package-with-python2 python-numpydoc))
3707
3708(define-public python-numexpr
3709 (package
3710 (name "python-numexpr")
3711 (version "2.6.5")
3712 (source
3713 (origin
3714 (method url-fetch)
3715 (uri (pypi-uri "numexpr" version))
3716 (sha256
3717 (base32
3718 "1frnbcwmsi312154x274xl28xazr1k8vjby83fwyla2n10a81bgq"))))
3719 (build-system python-build-system)
3720 (arguments `(#:tests? #f)) ; no tests included
3721 (propagated-inputs
3722 `(("python-numpy" ,python-numpy)))
3723 (home-page "https://github.com/pydata/numexpr")
3724 (synopsis "Fast numerical expression evaluator for NumPy")
3725 (description
3726 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3727expressions that operate on arrays are accelerated and use less memory than
3728doing the same calculation in Python. In addition, its multi-threaded
3729capabilities can make use of all your cores, which may accelerate
3730computations, most specially if they are not memory-bounded (e.g. those using
3731transcendental functions).")
3732 (license license:expat)))
3733
3734(define-public python2-numexpr
3735 (package-with-python2 python-numexpr))
3736
3737(define-public python-cycler
3738 (package
3739 (name "python-cycler")
3740 (version "0.10.0")
3741 (source (origin
3742 (method url-fetch)
3743 (uri (pypi-uri "cycler" version))
3744 (sha256
3745 (base32
3746 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
3747 (build-system python-build-system)
3748 (arguments
3749 ;; XXX: The current version requires 'coveralls' which we don't have.
3750 ;; Enable this for the next release which uses 'python-pytest'.
3751 '(#:tests? #f))
3752 (propagated-inputs
3753 `(("python-six" ,python-six)))
3754 (home-page "http://matplotlib.org/cycler/")
3755 (synopsis "Composable keyword argument iterator")
3756 (description
3757 "When using @code{matplotlib} and plotting more than one line, it is
3758common to want to be able to want to be able to cycle over one or more artist
3759styles; but the plotting logic can quickly become involved.
3760To address this and enable easy cycling over arbitrary @code{kwargs}, the
3761@code{Cycler} class was developed.")
3762 (license license:bsd-3)))
3763
3764(define-public python2-cycler
3765 (package-with-python2 python-cycler))
3766
3767(define-public python-colorspacious
3768 (package
3769 (name "python-colorspacious")
3770 (version "1.1.0")
3771 (source
dee92e65
TGR
3772 (origin
3773 (method git-fetch)
3774 (uri (git-reference
3775 (url "https://github.com/njsmith/colorspacious.git")
3776 (commit (string-append "v" version))))
3777 (file-name (git-file-name name version))
3778 (sha256
3779 (base32 "0g0lxqiscy5g5rq9421vv7abg0c90jzy0zmas2z3hya6k2dr5aid"))))
44d10b1f
RW
3780 (build-system python-build-system)
3781 (propagated-inputs
3782 `(("python-numpy" ,python-numpy)))
3783 (native-inputs
3784 `(("python-nose" ,python-nose)))
3785 (arguments
3786 `(#:phases
3787 (modify-phases %standard-phases
3788 (replace 'check
3789 (lambda _
c988afda 3790 (invoke "nosetests" "--all-modules" "-v" "colorspacious"))))))
44d10b1f
RW
3791 (home-page "https://github.com/njsmith/colorspacious")
3792 (synopsis "Python library for colorspace conversions")
3793 (description "@code{colorspacious} is a Python library that lets you
3794convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
3795 (license license:expat)))
3796
3797(define-public python2-colorspacious
3798 (package-with-python2 python-colorspacious))
3799
3800(define-public python-matplotlib
3801 (package
3802 (name "python-matplotlib")
3803 (version "2.2.3")
3804 (source
3805 (origin
3806 (method url-fetch)
3807 (uri (pypi-uri "matplotlib" version))
3808 (sha256
3809 (base32
3810 "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
3811 (build-system python-build-system)
3812 (propagated-inputs ; the following packages are all needed at run time
3813 `(("python-cycler" ,python-cycler)
3814 ("python-kiwisolver" ,python-kiwisolver)
3815 ("python-pyparsing" ,python-pyparsing)
3816 ("python-pygobject" ,python-pygobject)
3817 ("gobject-introspection" ,gobject-introspection)
3818 ("python-tkinter" ,python "tk")
3819 ("python-dateutil" ,python-dateutil)
3820 ("python-numpy" ,python-numpy)
3821 ("python-pillow" ,python-pillow)
3822 ("python-pytz" ,python-pytz)
3823 ("python-six" ,python-six)
44d10b1f
RW
3824 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3825 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3826 ;; object. For this reason we need to import both libraries.
3827 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3828 ("python-pycairo" ,python-pycairo)
44d10b1f
RW
3829 ("python-cairocffi" ,python-cairocffi)))
3830 (inputs
3831 `(("libpng" ,libpng)
3832 ("imagemagick" ,imagemagick)
3833 ("freetype" ,freetype)
3834 ("cairo" ,cairo)
3835 ("glib" ,glib)
3836 ;; FIXME: Add backends when available.
3837 ;("python-wxpython" ,python-wxpython)
3838 ("tcl" ,tcl)
3839 ("tk" ,tk)))
3840 (native-inputs
3841 `(("pkg-config" ,pkg-config)
3842 ("python-nose" ,python-nose)
3843 ("python-mock" ,python-mock)))
3844 (arguments
3845 `(#:phases
3846 (modify-phases %standard-phases
3847 (add-before 'build 'configure-environment
3848 (lambda* (#:key outputs inputs #:allow-other-keys)
34c2a16b
RW
3849 (let ((cairo (assoc-ref inputs "cairo")))
3850 ;; Setting this directory in the 'basedirlist' of 'setup.cfg'
44d10b1f 3851 ;; has not effect.
34c2a16b 3852 (setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
44d10b1f
RW
3853 (setenv "HOME" (getcwd))
3854 (call-with-output-file "setup.cfg"
3855 (lambda (port)
3856 (format port "[directories]~%
3857basedirlist = ~a,~a~%
3858 [rc_options]~%
3859backend = TkAgg~%"
3860 (assoc-ref inputs "tcl")
3861 (assoc-ref inputs "tk")))))
3862 #t)))))
3863 (home-page "http://matplotlib.org")
3864 (synopsis "2D plotting library for Python")
3865 (description
3866 "Matplotlib is a Python 2D plotting library which produces publication
3867quality figures in a variety of hardcopy formats and interactive environments
3868across platforms. Matplotlib can be used in Python scripts, the python and
3869ipython shell, web application servers, and six graphical user interface
3870toolkits.")
3871 (license license:psfl)
3872 (properties `((python2-variant . ,(delay python2-matplotlib))))))
3873
3874(define-public python2-matplotlib
3875 (let ((matplotlib (package-with-python2
3876 (strip-python2-variant python-matplotlib))))
3877 (package (inherit matplotlib)
3878 ;; Make sure to use special packages for Python 2 instead
3879 ;; of those automatically rewritten by package-with-python2.
3880 (propagated-inputs
3881 `(("python2-pycairo" ,python2-pycairo)
3882 ("python2-backports-functools-lru-cache"
3883 ,python2-backports-functools-lru-cache)
3884 ("python2-functools32" ,python2-functools32)
3885 ("python2-pygobject-2" ,python2-pygobject-2)
3886 ("python2-subprocess32" ,python2-subprocess32)
3887 ("python2-tkinter" ,python-2 "tk")
3888 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3889 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
3890
3891(define-public python-matplotlib-documentation
3892 (package
3893 (name "python-matplotlib-documentation")
3894 (version (package-version python-matplotlib))
3895 (source (package-source python-matplotlib))
3896 (build-system python-build-system)
3897 (native-inputs
3898 `(("python-matplotlib" ,python-matplotlib)
3899 ("python-colorspacious" ,python-colorspacious)
3900 ("python-sphinx" ,python-sphinx)
3901 ("python-sphinx-gallery" ,python-sphinx-gallery)
3902 ("python-numpydoc" ,python-numpydoc)
3903 ("python-ipython" ,python-ipython)
e7a53914 3904 ("python-ipykernel" ,python-ipykernel)
44d10b1f
RW
3905 ("python-mock" ,python-mock)
3906 ("graphviz" ,graphviz)
f75aa97f 3907 ("texlive" ,(texlive-union (list texlive-amsfonts
e7a53914
RW
3908 texlive-latex-amsmath
3909 texlive-latex-enumitem
3910 texlive-latex-expdlist
3911 texlive-latex-geometry
3912 texlive-latex-preview
3913 texlive-latex-type1cm
3914 texlive-latex-ucs
3915
3916 texlive-generic-pdftex
3917
e7a53914
RW
3918 texlive-fonts-ec
3919 texlive-fonts-adobe-times
3920 texlive-fonts-txfonts)))
44d10b1f
RW
3921 ("texinfo" ,texinfo)
3922 ,@(package-native-inputs python-matplotlib)))
3923 (arguments
3924 `(#:tests? #f ; we're only generating documentation
3925 #:phases
3926 (modify-phases %standard-phases
3927 (replace 'build
3928 (lambda _
3929 (chdir "doc")
e7a53914
RW
3930 (setenv "PYTHONPATH"
3931 (string-append (getenv "PYTHONPATH")
3932 ":" (getcwd) "/../examples/units"))
44d10b1f 3933 (substitute* "conf.py"
e7a53914
RW
3934 ;; Don't use git.
3935 (("^SHA = check_output.*")
3936 (string-append "SHA = \"" ,version "\"\n"))
3937 ;; Don't fetch intersphinx files from the Internet
3938 (("^explicit_order_folders" m)
3939 (string-append "intersphinx_mapping = {}\n" m))
3940 (("'sphinx.ext.intersphinx',") "")
3941 ;; Disable URL embedding which requires internet access.
3942 (("'https://docs.scipy.org/doc/numpy'") "None")
3943 (("'https://docs.scipy.org/doc/scipy/reference'") "None"))
3944 (invoke "make"
3945 "SPHINXBUILD=sphinx-build"
3946 "SPHINXOPTS=" ; don't abort on warnings
3947 "html" "texinfo")))
44d10b1f
RW
3948 (replace 'install
3949 (lambda* (#:key inputs outputs #:allow-other-keys)
3950 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3951 (doc (string-append data "/doc/python-matplotlib-" ,version))
3952 (info (string-append data "/info"))
3953 (html (string-append doc "/html")))
3954 (mkdir-p html)
3955 (mkdir-p info)
3956 (copy-recursively "build/html" html)
3957 (symlink (string-append html "/_images")
3958 (string-append info "/matplotlib-figures"))
3959 (with-directory-excursion "build/texinfo"
3960 (substitute* "matplotlib.texi"
3961 (("@image\\{([^,]*)" all file)
3962 (string-append "@image{matplotlib-figures/" file)))
3963 (symlink (string-append html "/_images")
3964 "./matplotlib-figures")
e7a53914
RW
3965 (invoke "makeinfo" "--no-split"
3966 "-o" "matplotlib.info" "matplotlib.texi"))
3967 (install-file "build/texinfo/matplotlib.info" info))
44d10b1f
RW
3968 #t)))))
3969 (home-page (package-home-page python-matplotlib))
3970 (synopsis "Documentation for the python-matplotlib package")
3971 (description (package-description python-matplotlib))
3972 (license (package-license python-matplotlib))))
3973
3974(define-public python2-matplotlib-documentation
3975 (package-with-python2 python-matplotlib-documentation))
3976
55dae98f
RW
3977(define-public python-matplotlib-venn
3978 (package
3979 (name "python-matplotlib-venn")
3980 (version "0.11.5")
3981 (source
3982 (origin
3983 (method url-fetch)
3984 (uri (pypi-uri "matplotlib-venn" version ".zip"))
3985 (sha256
3986 (base32
3987 "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy"))))
3988 (build-system python-build-system)
3989 (arguments '(#:tests? #f)) ; tests are not included
3990 (propagated-inputs
3991 `(("python-matplotlib" ,python-matplotlib)
3992 ("python-numpy" ,python-numpy)
3993 ("python-scipy" ,python-scipy)))
3994 (native-inputs
3995 `(("unzip" ,unzip)))
3996 (home-page "https://github.com/konstantint/matplotlib-venn")
3997 (synopsis "Plot area-proportional Venn diagrams")
3998 (description
3999 "This package provides tools for plotting area-proportional two- and
4000three-way Venn diagrams in @code{matplotlib}.")
4001 (license license:expat)))
4002
44d10b1f
RW
4003(define-public python2-pysnptools
4004 (package
4005 (name "python2-pysnptools")
5d1ade85 4006 (version "0.3.13")
44d10b1f
RW
4007 (source
4008 (origin
4009 (method url-fetch)
5d1ade85 4010 (uri (pypi-uri "pysnptools" version))
44d10b1f
RW
4011 (sha256
4012 (base32
5d1ade85 4013 "0lnis5xsl7bi0hz4f7gbicahzi5zlxkc21nk3g374xv8fb5hb3qm"))))
44d10b1f
RW
4014 (build-system python-build-system)
4015 (arguments
5d1ade85
RW
4016 `(#:python ,python-2 ; only Python 2.7 is supported
4017 #:tests? #f)) ; test files (e.g. examples/toydata.bim) not included
44d10b1f
RW
4018 (propagated-inputs
4019 `(("python2-numpy" ,python2-numpy)
4020 ("python2-scipy" ,python2-scipy)
4021 ("python2-pandas" ,python2-pandas)))
44d10b1f 4022 (native-inputs
5d1ade85 4023 `(("python2-cython" ,python2-cython)))
1b66989b 4024 (home-page "http://microsoftgenomics.github.io/PySnpTools/")
44d10b1f
RW
4025 (synopsis "Library for reading and manipulating genetic data")
4026 (description
4027 "PySnpTools is a library for reading and manipulating genetic data. It
4028can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4029those files. It can also efficiently manipulate ranges of integers using set
4030operators such as union, intersection, and difference.")
4031 (license license:asl2.0)))
4032
4033(define-public python-scipy
4034 (package
4035 (name "python-scipy")
5cfc1632 4036 (version "1.2.2")
44d10b1f
RW
4037 (source
4038 (origin
4039 (method url-fetch)
4040 (uri (pypi-uri "scipy" version))
4041 (sha256
4042 (base32
5cfc1632 4043 "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4"))))
44d10b1f
RW
4044 (build-system python-build-system)
4045 (propagated-inputs
4046 `(("python-numpy" ,python-numpy)
4047 ("python-matplotlib" ,python-matplotlib)
4048 ("python-pyparsing" ,python-pyparsing)))
4049 (inputs
4050 `(("lapack" ,lapack)
4051 ("openblas" ,openblas)))
4052 (native-inputs
4053 `(("python-cython" ,python-cython)
4054 ("python-pytest" ,python-pytest)
4055 ("python-sphinx" ,python-sphinx)
4056 ("python-numpydoc" ,python-numpydoc)
4057 ("gfortran" ,gfortran)
4058 ("perl" ,perl)
4059 ("which" ,which)))
4060 (outputs '("out" "doc"))
4061 (arguments
4062 `(#:phases
4063 (modify-phases %standard-phases
4064 (add-after 'unpack 'disable-broken-tests
4065 (lambda _
4066 (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py"
4067 (("^( +)def test_threads_parallel\\(self\\):" m indent)
4068 (string-append indent
4069 "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
4070 m)))
4071 (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py"
4072 (("^def test_parallel_threads\\(\\):" m)
4073 (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
4074 m)))
4075 #t))
4076 (add-before 'build 'configure-openblas
4077 (lambda* (#:key inputs #:allow-other-keys)
4078 (call-with-output-file "site.cfg"
4079 (lambda (port)
4080 (format port
4081 "[blas]
4082libraries = openblas
4083library_dirs = ~a/lib
4084include_dirs = ~a/include
4085
4086# backslash-n to make emacs happy
4087\n[atlas]
4088library_dirs = ~a/lib
4089atlas_libs = openblas
4090"
4091 (assoc-ref inputs "openblas")
4092 (assoc-ref inputs "openblas")
4093 (assoc-ref inputs "openblas"))))
4094 #t))
4095 (add-after 'install 'install-doc
4096 (lambda* (#:key inputs outputs #:allow-other-keys)
4097 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4098 (doc (string-append data "/doc/" ,name "-" ,version))
4099 (html (string-append doc "/html"))
4100 (pyver ,(string-append "PYVER=" (version-major+minor
4101 (package-version python))))
4102 ;; By default it tries to run sphinx-build through the Python
4103 ;; interpreter which won't work with our shell wrapper.
4104 (sphinxbuild "SPHINXBUILD=LANG=C sphinx-build"))
4105 ;; Make installed package available for building the
4106 ;; documentation
4107 (add-installed-pythonpath inputs outputs)
4108 (with-directory-excursion "doc"
4109 ;; Fix generation of images for mathematical expressions.
4110 (substitute* (find-files "source" "conf\\.py")
4111 (("pngmath_use_preview = True")
4112 "pngmath_use_preview = False"))
4113 (mkdir-p html)
4114 (invoke "make" "html" pyver sphinxbuild)
4115 (with-directory-excursion "build/html"
4116 (for-each (lambda (file)
4117 (let* ((dir (dirname file))
4118 (tgt-dir (string-append html "/" dir)))
4119 (install-file file html)))
4120 (find-files "." ".*")))))
4121 #t))
4122 ;; Tests can only be run after the library has been installed and not
4123 ;; within the source directory.
4124 (delete 'check)
4125 (add-after 'install 'check
4126 (lambda* (#:key inputs outputs #:allow-other-keys)
4127 (add-installed-pythonpath inputs outputs)
4128 (with-directory-excursion "/tmp"
4129 (invoke "python" "-c"
4130 "import scipy; scipy.test(verbose=2)")))))))
4131 (home-page "https://www.scipy.org/")
4132 (synopsis "The Scipy library provides efficient numerical routines")
4133 (description "The SciPy library is one of the core packages that make up
4134the SciPy stack. It provides many user-friendly and efficient numerical
4135routines such as routines for numerical integration and optimization.")
4136 (properties `((python2-variant . ,(delay python2-scipy))))
4137 (license license:bsd-3)))
4138
4139(define-public python2-scipy
4140 (package-with-python2
4141 (strip-python2-variant python-scipy)))
4142
4143(define-public python-socksipy-branch
4144 (package
4145 (name "python-socksipy-branch")
4146 (version "1.01")
4147 (source
4148 (origin
4149 (method url-fetch)
4150 (uri (pypi-uri "SocksiPy-branch" version))
4151 (sha256
4152 (base32
4153 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4154 (build-system python-build-system)
4155 (arguments
4156 `(#:tests? #f)) ; There are no tests
4157 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4158 (synopsis "Python SOCKS module")
4159 (description
4160 "SocksiPy - A Python SOCKS client module. It provides a
4161socket-like interface that supports connections to any TCP
4162service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4163The original version was developed by Dan Haim, this is a
4164branch created by Mario Vilas to address some open issues,
4165as the original project seems to have been abandoned circa 2007.")
4166 (license license:bsd-3)))
4167
4168(define-public python2-socksipy-branch
4169 (package-with-python2 python-socksipy-branch))
4170
4171(define-public python-pycodestyle
4172 (package
4173 (name "python-pycodestyle")
4174 (version "2.4.0")
4175 (source
4176 (origin
4177 (method url-fetch)
4178 (uri (pypi-uri "pycodestyle" version))
4179 (sha256
4180 (base32
4181 "0fhy4vnlgpjq4qd1wdnl6pvdw7rah0ypmn8c9mkhz8clsndskz6b"))))
4182 (build-system python-build-system)
4183 (home-page "https://pycodestyle.readthedocs.io/")
4184 (synopsis "Python style guide checker")
4185 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4186Python code against some of the style conventions in
4187@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
4188 (license license:expat)))
4189
4190(define-public python2-pycodestyle
4191 (package-with-python2 python-pycodestyle))
4192
4193(define-public python-multidict
4194 (package
4195 (name "python-multidict")
4196 (version "4.2.0")
4197 (source
4198 (origin
4199 (method url-fetch)
4200 (uri (pypi-uri "multidict" version))
4201 (sha256
4202 (base32
4203 "1vf5bq8hn5a9rvhr5v4fwbmarfsp35hhr8gs74kqfijy34j2f194"))))
4204 (build-system python-build-system)
4205 (native-inputs
4206 `(("python-pytest" ,python-pytest)
4207 ("python-pytest-runner" ,python-pytest-runner)))
4208 (home-page "https://github.com/aio-libs/multidict/")
4209 (synopsis "Multidict implementation")
4210 (description "Multidict is dict-like collection of key-value pairs
4211where key might be occurred more than once in the container.")
4212 (license license:asl2.0)))
4213
4214(define-public python-orderedmultidict
4215 (package
4216 (name "python-orderedmultidict")
4217 (version "0.7.11")
4218 (source
4219 (origin
4220 (method url-fetch)
4221 (uri (pypi-uri "orderedmultidict" version))
4222 (sha256
4223 (base32
4224 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
4225 (build-system python-build-system)
4226 (arguments
4227 `(#:phases
4228 (modify-phases %standard-phases
4229 (add-after 'unpack 'fix-tests
4230 (lambda _
4231 ;; The package uses nosetest for running the tests.
4232 ;; Adding this initfile allows to run the test suite
4233 ;; without requiring nosetest.
d1c4f329
RW
4234 (with-output-to-file "tests/__init__.py" newline)
4235 #t)))))
44d10b1f
RW
4236 (propagated-inputs
4237 `(("python-six" ,python-six)))
4238 (native-inputs
4239 `(("python-pycodestyle" ,python-pycodestyle)))
4240 (home-page "https://github.com/gruns/orderedmultidict")
4241 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4242 (description "This package contains a library for ordered multivalue
4243dictionaries. A multivalue dictionary is a dictionary that can store
4244multiple values for the same key. An ordered multivalue dictionary is a
4245multivalue dictionary that retains the order of insertions and deletions.")
4246 (license license:unlicense)))
4247
4248(define-public python2-orderedmultidict
4249 (package-with-python2 python-orderedmultidict))
4250
4251(define-public python-autopep8
4252 (package
4253 (name "python-autopep8")
4254 (version "1.3.5")
4255 (source
4256 (origin
4257 (method url-fetch)
4258 (uri (pypi-uri "autopep8" version))
4259 (sha256
4260 (base32
4261 "192bvhzi4d0claqxgzymvv7k3qnj627742bc8sgxpzjj42pd9112"))))
4262 (build-system python-build-system)
4263 (propagated-inputs
4264 `(("python-pycodestyle" ,python-pycodestyle)))
4265 (home-page "https://github.com/hhatto/autopep8")
4266 (synopsis "Format Python code according to the PEP 8 style guide")
4267 (description
4268 "@code{autopep8} automatically formats Python code to conform to
4269the PEP 8 style guide. It uses the pycodestyle utility to determine
4270what parts of the code needs to be formatted. @code{autopep8} is
4271capable of fixing most of the formatting issues that can be reported
4272by pycodestyle.")
4273 (license (license:non-copyleft
4274 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4275
4276(define-public python2-autopep8
4277 (package-with-python2 python-autopep8))
4278
4279(define-public python-distutils-extra
4280 (package
4281 (name "python-distutils-extra")
4282 (version "2.38")
4283 (source
4284 (origin
4285 (method url-fetch)
4286 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4287 version "/+download/python-distutils-extra-"
4288 version ".tar.gz"))
4289 (sha256
4290 (base32
4291 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4292 (build-system python-build-system)
4293 (home-page "https://launchpad.net/python-distutils-extra/")
4294 (synopsis "Enhancements to Python's distutils")
4295 (description
4296 "The python-distutils-extra module enables you to easily integrate
4297gettext support, themed icons, and scrollkeeper-based documentation into
4298Python's distutils.")
4299 (license license:gpl2)))
4300
4301(define-public python2-distutils-extra
4302 (package-with-python2 python-distutils-extra))
4303
4304(define-public python2-elib.intl
4305 (package
4306 (name "python2-elib.intl")
4307 (version "0.0.3")
4308 (source
4309 (origin
4310 ;; This project doesn't tag releases or publish tarballs, so we take
4311 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4312 (method git-fetch)
4313 (uri (git-reference
4314 (url "https://github.com/dieterv/elib.intl.git")
4315 (commit "d09997cfef")))
4316 (file-name (string-append name "-" version "-checkout"))
4317 (sha256
4318 (base32
4319 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4320 (build-system python-build-system)
4321 (arguments
4322 ;; incompatible with Python 3 (exception syntax)
4323 `(#:python ,python-2
4324 #:tests? #f))
4325 (home-page "https://github.com/dieterv/elib.intl")
4326 (synopsis "Enhanced internationalization for Python")
4327 (description
4328 "The elib.intl module provides enhanced internationalization (I18N)
4329services for your Python modules and applications.")
4330 (license license:lgpl3+)))
4331
4332(define-public python-olefile
4333 (package
4334 (name "python-olefile")
5bef0f10 4335 (version "0.46")
44d10b1f
RW
4336 (source
4337 (origin
4338 (method url-fetch)
5bef0f10
MB
4339 (uri (string-append "https://github.com/decalage2/olefile/releases/"
4340 "download/v" version "/olefile-" version ".tar.gz"))
44d10b1f
RW
4341 (file-name (string-append name "-" version ".tar.gz"))
4342 (sha256
4343 (base32
5bef0f10 4344 "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m"))))
44d10b1f 4345 (build-system python-build-system)
5bef0f10 4346 (home-page "https://www.decalage.info/python/olefileio")
44d10b1f
RW
4347 (synopsis "Read and write Microsoft OLE2 files.")
4348 (description
4349 "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured
4350Storage or Compound Document, Microsoft Office). It is an improved version of
4351the OleFileIO module from PIL, the Python Image Library.")
4352 (license license:bsd-3)))
4353
4354(define-public python2-olefile
4355 (package-with-python2 python-olefile))
4356
4357(define-public python-pillow
4358 (package
4359 (name "python-pillow")
6263b5b3 4360 (version "6.1.0")
44d10b1f
RW
4361 (source
4362 (origin
4363 (method url-fetch)
4364 (uri (pypi-uri "Pillow" version))
4365 (sha256
4366 (base32
6263b5b3 4367 "1pnrsz0f0n0c819v1pdr8j6rm8xvhc9f3kh1fv9xpdp9n5ygf108"))))
44d10b1f
RW
4368 (build-system python-build-system)
4369 (native-inputs
4370 `(("python-pytest" ,python-pytest)))
4371 (inputs
4372 `(("freetype" ,freetype)
4373 ("lcms" ,lcms)
4374 ("zlib" ,zlib)
4375 ("libjpeg" ,libjpeg)
4376 ("openjpeg" ,openjpeg)
4377 ("libtiff" ,libtiff)
4378 ("libwebp" ,libwebp)))
4379 (propagated-inputs
4380 `(("python-olefile" ,python-olefile)))
4381 (arguments
4382 `(#:phases
4383 (modify-phases %standard-phases
4384 (add-after 'unpack 'patch-ldconfig
4385 (lambda _
4386 (substitute* "setup.py"
4387 (("\\['/sbin/ldconfig', '-p'\\]") "['true']"))))
4388 (delete 'check) ; We must run checks after python-pillow is installed.
4389 (add-after 'install 'check-installed
4390 (lambda* (#:key outputs inputs #:allow-other-keys)
4391 (begin
4392 (setenv "HOME" (getcwd))
4393 ;; Make installed package available for running the tests.
4394 (add-installed-pythonpath inputs outputs)
4395 (invoke "python" "selftest.py" "--installed")
4396 (invoke "python" "-m" "pytest" "-vv")))))))
4397 (home-page "https://python-pillow.org")
4398 (synopsis "Fork of the Python Imaging Library")
4399 (description
4400 "The Python Imaging Library adds image processing capabilities to your
4401Python interpreter. This library provides extensive file format support, an
4402efficient internal representation, and fairly powerful image processing
4403capabilities. The core image library is designed for fast access to data
4404stored in a few basic pixel formats. It should provide a solid foundation for
4405a general image processing tool.")
4406 (license (license:x11-style
4407 "http://www.pythonware.com/products/pil/license.htm"
4408 "The PIL Software License"))))
4409
4410(define-public python2-pillow
4411 (package-with-python2 python-pillow))
4412
4413(define-public python-pycparser
4414 (package
4415 (name "python-pycparser")
c6c0940e 4416 (version "2.19")
44d10b1f
RW
4417 (source
4418 (origin
4419 (method url-fetch)
4420 (uri (pypi-uri "pycparser" version))
4421 (sha256
4422 (base32
c6c0940e 4423 "1cr5dcj9628lkz1qlwq3fv97c25363qppkmcayqvd05dpy573259"))))
44d10b1f
RW
4424 (outputs '("out" "doc"))
4425 (build-system python-build-system)
4426 (native-inputs
4427 `(("pkg-config" ,pkg-config)))
4428 (arguments
4429 `(#:phases
4430 (modify-phases %standard-phases
4431 (replace 'check
4432 (lambda _
4433 (with-directory-excursion "tests"
acb75c03
RW
4434 (invoke "python" "all_tests.py"))
4435 #t))
44d10b1f
RW
4436 (add-after 'install 'install-doc
4437 (lambda* (#:key outputs #:allow-other-keys)
4438 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4439 (doc (string-append data "/doc/" ,name "-" ,version))
4440 (examples (string-append doc "/examples")))
4441 (mkdir-p examples)
4442 (for-each (lambda (file)
4443 (copy-file (string-append "." file)
4444 (string-append doc file)))
4445 '("/README.rst" "/CHANGES" "/LICENSE"))
c6c0940e
MB
4446 (copy-recursively "examples" examples)
4447 #t))))))
44d10b1f
RW
4448 (home-page "https://github.com/eliben/pycparser")
4449 (synopsis "C parser in Python")
4450 (description
4451 "Pycparser is a complete parser of the C language, written in pure Python
4452using the PLY parsing library. It parses C code into an AST and can serve as
4453a front-end for C compilers or analysis tools.")
4454 (license license:bsd-3)))
4455
4456(define-public python2-pycparser
4457 (package-with-python2 python-pycparser))
4458
4459(define-public python-pywavelets
4460 (package
4461 (name "python-pywavelets")
4462 (version "1.0.1")
4463 (home-page "https://github.com/PyWavelets/pywt")
4464 (source (origin
4465 (method url-fetch)
4466 (uri (pypi-uri "PyWavelets" version))
4467 (sha256
4468 (base32
4469 "1p3qv2v66ghnqrb1f98wyyhp9dz71jwcd6kfpsax65sfdpiyqp1w"))))
4470 (build-system python-build-system)
4471 (arguments
4472 '(#:modules ((ice-9 ftw)
4473 (srfi srfi-1)
4474 (srfi srfi-26)
4475 (guix build utils)
4476 (guix build python-build-system))
4477 #:phases (modify-phases %standard-phases
4478 (replace 'check
4479 (lambda _
4480 (let ((cwd (getcwd))
4481 (libdir (find (cut string-prefix? "lib." <>)
4482 (scandir "build"))))
4483 (with-directory-excursion (string-append cwd "/build/" libdir)
4484 (invoke "nosetests" "-v" "."))))))))
4485 (native-inputs
4486 `(("python-matplotlib" ,python-matplotlib) ;for tests
4487 ("python-nose" ,python-nose)))
4488 (propagated-inputs
4489 `(("python-numpy" ,python-numpy)))
4490 (synopsis "Wavelet transforms in Python")
4491 (description
4492 "PyWavelets is a library for wavelet transforms in Python. Wavelets are
4493mathematical basis functions that are localized in both time and frequency.
4494Wavelet transforms are time-frequency transforms employing wavelets. They are
4495similar to Fourier transforms, the difference being that Fourier transforms are
4496localized only in frequency instead of in time and frequency.")
4497 (license license:expat)))
4498
4499(define-public python2-pywavelets
4500 (package-with-python2 python-pywavelets))
4501
4502(define-public python-xcffib
4503 (package
4504 (name "python-xcffib")
4505 (version "0.6.0")
4506 (source
4507 (origin
4508 (method url-fetch)
4509 (uri (pypi-uri "xcffib" version))
4510 (sha256
4511 (base32
4512 "04k91yxyb3pgc5lvxmivh8w71yjrap2g57yk3s73x4rm4nvjq51n"))))
4513 (build-system python-build-system)
4514 (inputs
4515 `(("libxcb" ,libxcb)))
4516 (propagated-inputs
4517 `(("python-cffi" ,python-cffi) ; used at run time
4518 ("python-six" ,python-six)))
4519 (arguments
4520 `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
4521 #:tests? #f
4522 #:phases
4523 (modify-phases %standard-phases
4524 (add-after 'unpack 'fix-libxcb-path
4525 (lambda* (#:key inputs #:allow-other-keys)
4526 (let ((libxcb (assoc-ref inputs "libxcb")))
4527 (substitute* '("xcffib/__init__.py")
4528 (("^soname = \"") (string-append "soname = \"" libxcb "/lib/")))
4529 #t)))
4530 (add-after 'install 'install-doc
4531 (lambda* (#:key outputs #:allow-other-keys)
4532 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4533 "/doc/" ,name "-" ,version)))
4534 (mkdir-p doc)
4535 (copy-file "README.md"
4536 (string-append doc "/README.md"))
4537 #t))))))
4538 (home-page "https://github.com/tych0/xcffib")
4539 (synopsis "XCB Python bindings")
4540 (description
4541 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4542support for Python 3 and PyPy. It is based on cffi.")
4543 (license license:expat)))
4544
4545(define-public python2-xcffib
4546 (package-with-python2 python-xcffib))
4547
4548(define-public python-cairocffi
4549 (package
4550 (name "python-cairocffi")
4551 (version "0.9.0")
4552 (source
4553 (origin
4554 (method url-fetch)
4555 (uri (pypi-uri "cairocffi" version))
4556 (sha256
4557 (base32
4558 "0dq3k4zhqd8cwsf3nyjqvjqm8wkvrjn1wjf44rl3v0h8kqx6qf0m"))
4559 (patches (search-patches "python-cairocffi-dlopen-path.patch"))))
4560 (build-system python-build-system)
4561 (outputs '("out" "doc"))
4562 (inputs
4563 `(("glib" ,glib)
4564 ("gtk+" ,gtk+)
4565 ("gdk-pixbuf" ,gdk-pixbuf)
4566 ("cairo" ,cairo)
4567 ("pango" ,pango)))
4568 (native-inputs
4569 `(("pkg-config" ,pkg-config)
4570 ("python-pytest" ,python-pytest)
4571 ("python-pytest-cov" ,python-pytest-cov)
4572 ("python-pytest-runner" ,python-pytest-runner)
4573 ("python-sphinx" ,python-sphinx)
4574 ("python-docutils" ,python-docutils)))
4575 (propagated-inputs
4576 `(("python-xcffib" ,python-xcffib))) ; used at run time
4577 (arguments
4578 `(#:phases
4579 (modify-phases %standard-phases
4580 (add-after 'unpack 'patch-paths
4581 (lambda* (#:key inputs outputs #:allow-other-keys)
4582 (substitute* (find-files "." "\\.py$")
4583 (("dlopen\\(ffi, 'cairo'")
4584 (string-append "dlopen(ffi, '" (assoc-ref inputs "cairo")
4585 "/lib/libcairo.so.2'"))
4586 (("dlopen\\(ffi, 'gdk-3'")
4587 (string-append "dlopen(ffi, '" (assoc-ref inputs "gtk+")
4588 "/lib/libgtk-3.so.0'"))
4589 (("dlopen\\(ffi, 'gdk_pixbuf-2.0'")
4590 (string-append "dlopen(ffi, '" (assoc-ref inputs "gdk-pixbuf")
4591 "/lib/libgdk_pixbuf-2.0.so.0'"))
4592 (("dlopen\\(ffi, 'glib-2.0'")
4593 (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
4594 "/lib/libglib-2.0.so.0'"))
4595 (("dlopen\\(ffi, 'gobject-2.0'")
4596 (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
4597 "/lib/libgobject-2.0.so.0'"))
4598 (("dlopen\\(ffi, 'pangocairo-1.0'")
4599 (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
4600 "/lib/libpangocairo-1.0.so.0'"))
4601 (("dlopen\\(ffi, 'pango-1.0'")
4602 (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
4603 "/lib/libpango-1.0.so.0'")))
4604 #t))
4605 (add-after 'install 'install-doc
4606 (lambda* (#:key inputs outputs #:allow-other-keys)
4607 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4608 (doc (string-append data "/doc/" ,name "-" ,version))
4609 (html (string-append doc "/html")))
4610 (setenv "LD_LIBRARY_PATH"
4611 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4612 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4613 (setenv "LANG" "en_US.UTF-8")
4614 (mkdir-p html)
4615 (for-each (lambda (file)
4616 (copy-file (string-append "." file)
4617 (string-append doc file)))
4618 '("/README.rst" "/CHANGES" "/LICENSE"))
4619 (system* "python" "setup.py" "build_sphinx")
4620 (copy-recursively "docs/_build/html" html)
4621 #t))))))
4622 (home-page "https://github.com/Kozea/cairocffi")
4623 (synopsis "Python bindings and object-oriented API for Cairo")
4624 (description
4625 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4626Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4627graphics library with support for multiple backends including image buffers,
4628PNG, PostScript, PDF, and SVG file output.")
4629 (license license:bsd-3)))
4630
4631(define-public python2-cairocffi
4632 (package-with-python2 python-cairocffi))
4633
4634(define-public python-decorator
4635 (package
4636 (name "python-decorator")
4637 (version "4.3.0")
4638 (source
4639 (origin
4640 (method url-fetch)
4641 (uri (pypi-uri "decorator" version))
4642 (sha256
4643 (base32 "0308djallnh00v112y5b7nadl657ysmkp6vc8xn51d6yzc9zm7n3"))))
4644 (build-system python-build-system)
4645 (home-page "https://pypi.python.org/pypi/decorator/")
4646 (synopsis "Python module to simplify usage of decorators")
4647 (description
4648 "The aim of the decorator module is to simplify the usage of decorators
4649for the average programmer, and to popularize decorators usage giving examples
4650of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4651etc. The core of this module is a decorator factory.")
4652 (license license:expat)))
4653
4654(define-public python2-decorator
4655 (package-with-python2 python-decorator))
4656
4657(define-public python-drmaa
4658 (package
4659 (name "python-drmaa")
4660 (version "0.7.7")
4661 (source
4662 (origin
4663 (method url-fetch)
4664 (uri (pypi-uri "drmaa" version))
4665 (sha256
4666 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
4667 (build-system python-build-system)
4668 ;; The test suite requires libdrmaa which is provided by the cluster
4669 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4670 ;; should be set to the path of the libdrmaa library.
4671 (arguments '(#:tests? #f))
4672 (native-inputs
4673 `(("python-nose" ,python-nose)))
4674 (home-page "https://pypi.python.org/pypi/drmaa")
4675 (synopsis "Python bindings for the DRMAA library")
4676 (description
4677 "A Python package for Distributed Resource Management (DRM) job
4678submission and control. This package is an implementation of the DRMAA 1.0
4679Python language binding specification.")
4680 (license license:bsd-3)))
4681
4682(define-public python2-drmaa
4683 (package-with-python2 python-drmaa))
4684
4685(define-public python-grako
4686 (package
4687 (name "python-grako")
4688 (version "3.99.9")
4689 (source
4690 (origin
4691 (method url-fetch)
4692 (uri
4693 (pypi-uri "grako" version ".zip"))
4694 (sha256
4695 (base32
4696 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
4697 (build-system python-build-system)
4698 (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
4699 (native-inputs
4700 `(("unzip" ,unzip)
4701 ("python-pytest" ,python-pytest)
4702 ("python-pytest-runner" ,python-pytest-runner)))
4703 (home-page "https://bitbucket.org/neogeny/grako")
4704 (synopsis "EBNF parser generator")
4705 (description
4706 "Grako takes a grammar in a variation of EBNF as input, and outputs a
4707memoizing PEG/Packrat parser in Python.")
4708 (license license:bsd-3)))
4709
4710(define-public python2-grako
4711 (package-with-python2 python-grako))
4712
4713(define-public python-gridmap
4714 (package
4715 (name "python-gridmap")
4716 (version "0.13.0")
4717 (source
4718 (origin
768fea0f
TGR
4719 (method git-fetch)
4720 (uri (git-reference
4721 (url "https://github.com/pygridtools/gridmap.git")
4722 (commit (string-append "v" version))))
4723 (file-name (git-file-name name version))
44d10b1f 4724 (sha256
768fea0f 4725 (base32 "1478lbwsr1w24cii2x01m2910fvh8r43ghnb78nc972a96hqiknm"))))
44d10b1f
RW
4726 (build-system python-build-system)
4727 (arguments
4728 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
4729 (propagated-inputs
4730 `(("python-psutil" ,python-psutil)
4731 ("python-drmaa" ,python-drmaa)
4732 ("python-pyzmq" ,python-pyzmq)))
4733 (home-page "https://github.com/pygridtools/gridmap")
4734 (synopsis "Create jobs on a cluster directly from Python")
4735 (description
4736 "Gridmap is a Python package to allow you to easily create jobs on the
4737cluster directly from Python. You can directly map Python functions onto the
4738cluster without needing to write any wrapper code yourself.")
4739 (license license:gpl3+)))
4740
4741(define-public python2-gridmap
4742 (package-with-python2 python-gridmap))
4743
4744(define-public python-honcho
4745 (package
4746 (name "python-honcho")
4747 (version "1.0.1")
4748 (source
4749 (origin
8524d130
TGR
4750 (method git-fetch)
4751 (uri (git-reference
4752 (url "https://github.com/nickstenning/honcho.git")
4753 (commit (string-append "v" version))))
4754 (file-name (git-file-name name version))
44d10b1f 4755 (sha256
8524d130 4756 (base32 "11bd87474qpif20xdcn0ra1idj5k16ka51i658wfpxwc6nzsn92b"))))
44d10b1f
RW
4757 (build-system python-build-system)
4758 (native-inputs
4759 `(("python-pytest" ,python-pytest)
4760 ("python-mock" ,python-mock)
4761 ("python-tox" ,python-tox)
4762 ("which" ,which))) ;for tests
4763 (propagated-inputs
4764 `(("python-jinja2" ,python-jinja2)))
4765 (arguments
4766 `(#:phases
4767 (modify-phases %standard-phases
4768 (delete 'check)
4769 (add-after 'install 'check
4770 (lambda* (#:key outputs inputs #:allow-other-keys)
4771 ;; fix honcho path in testsuite
4772 (substitute* "tests/conftest.py"
4773 (("'honcho'") (string-append "'" (assoc-ref outputs "out")
4774 "/bin/honcho" "'")))
4775 ;; It's easier to run tests after install.
4776 ;; Make installed package available for running the tests
4777 (add-installed-pythonpath inputs outputs)
95b707fb 4778 (invoke "py.test" "-v"))))))
44d10b1f
RW
4779 (home-page "https://github.com/nickstenning/honcho")
4780 (synopsis "Manage Procfile-based applications")
4781 (description
4782 "A Procfile is a file which describes how to run an application
50fceab0 4783consisting of several processes. honcho starts all listed processes.
44d10b1f
RW
4784The output of all running processes is collected by honcho and
4785displayed.")
4786 (license license:expat)))
4787
4788(define-public python2-honcho
4789 (package-with-python2 python-honcho))
4790
4791(define-public python-pexpect
4792 (package
4793 (name "python-pexpect")
4794 (version "4.6.0")
4795 (source
4796 (origin
4797 (method url-fetch)
4798 (uri (pypi-uri "pexpect" version))
4799 (sha256
4800 (base32 "1fla85g47iaxxpjhp9vkxdnv4pgc7rplfy6ja491smrrk0jqi3ia"))))
4801 (build-system python-build-system)
4802 (arguments
4803 `(#:phases
4804 (modify-phases %standard-phases
4805 (add-before 'check 'prepare-tests
4806 (lambda _
4807 (substitute* (find-files "tests")
4808 (("/bin/ls") (which "ls"))
4809 (("/bin/echo") (which "echo"))
4810 (("/bin/which") (which "which"))
4811 ;; Many tests try to use the /bin directory which
4812 ;; is not present in the build environment.
4813 ;; Use one that's non-empty and unlikely to change.
4814 (("/bin'") "/dev'"))
4815 ;; XXX: Socket connection test gets "Connection reset by peer".
4816 ;; Why does it not work? Delete for now.
4817 (delete-file "tests/test_socket.py")
4818 #t))
4819 (replace 'check (lambda _ (invoke "nosetests" "-v"))))))
4820 (native-inputs
4821 `(("python-nose" ,python-nose)
4822 ("python-pytest" ,python-pytest)
4823 ("man-db" ,man-db)
4824 ("which" ,which)
4825 ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
4826 (propagated-inputs
4827 `(("python-ptyprocess" ,python-ptyprocess)))
4828 (home-page "http://pexpect.readthedocs.org/")
4829 (synopsis "Controlling interactive console applications")
4830 (description
4831 "Pexpect is a pure Python module for spawning child applications;
4832controlling them; and responding to expected patterns in their output.
4833Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4834child application and control it as if a human were typing commands.")
4835 (license license:isc)))
4836
4837(define-public python2-pexpect
4838 (package-with-python2 python-pexpect))
4839
4840(define-public python-setuptools-scm
4841 (package
4842 (name "python-setuptools-scm")
4843 (version "3.1.0")
4844 (source (origin
4845 (method url-fetch)
4846 (uri (pypi-uri "setuptools_scm" version))
4847 (sha256
4848 (base32
4849 "0h4bglwfz8b9prqljv8z3w9rgydfyxzaj05bm1y6zs5m6shz548i"))))
4850 (build-system python-build-system)
4851 (home-page "https://github.com/pypa/setuptools_scm/")
4852 (synopsis "Manage Python package versions in SCM metadata")
4853 (description
4854 "Setuptools_scm handles managing your Python package versions in
4855@dfn{software configuration management} (SCM) metadata instead of declaring
4856them as the version argument or in a SCM managed file.")
4857 (license license:expat)))
4858
4859(define-public python2-setuptools-scm
4860 (package-with-python2 python-setuptools-scm))
4861
bb74ea09
RW
4862(define-public python-pathlib2
4863 (package
4864 (name "python-pathlib2")
4865 (version "2.3.3")
4866 (source
4867 (origin
4868 (method url-fetch)
4869 (uri (pypi-uri "pathlib2" version))
4870 (sha256
4871 (base32
4872 "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695"))))
4873 (build-system python-build-system)
4874 (propagated-inputs
4875 `(("python-scandir" ,python-scandir)
4876 ("python-six" ,python-six)))
4877 (home-page "https://pypi.python.org/pypi/pathlib2/")
746d3384 4878 (synopsis "Object-oriented file system paths")
bb74ea09
RW
4879 (description "The goal of pathlib2 is to provide a backport of the
4880standard @code{pathlib} module which tracks the standard library module, so
4881all the newest features of the standard @code{pathlib} can be used also on
4882older Python versions.")
4883 (license license:expat)))
4884
15b65617
RW
4885(define-public python-importlib-metadata
4886 (package
4887 (name "python-importlib-metadata")
4888 (version "0.18")
4889 (source
4890 (origin
4891 (method url-fetch)
4892 (uri (pypi-uri "importlib_metadata" version))
4893 (sha256
4894 (base32
4895 "1nqj6vj2z4byi8flzf2lbldhqgicsz9mkpv4k69kjd8p8qxy4vnb"))))
4896 (build-system python-build-system)
4897 (propagated-inputs
4898 `(("python-configparser" ,python-configparser)
4899 ("python-contextlib2" ,python-contextlib2)
4900 ("python-docutils" ,python-docutils)
4901 ("python-pathlib2" ,python-pathlib2)
4902 ("python-rst.linker" ,python-rst.linker)
4903 ("python-zipp" ,python-zipp)))
4904 (native-inputs
4905 `(("python-setuptools-scm" ,python-setuptools-scm)
4906 ("python-sphinx" ,python-sphinx)))
4907 (home-page "https://importlib-metadata.readthedocs.io/")
4908 (synopsis "Read metadata from Python packages")
4909 (description
4910 "@code{importlib_metadata} is a library which provides an API for
4911accessing an installed Python package's metadata, such as its entry points or
4912its top-level name. This functionality intends to replace most uses of
4913@code{pkg_resources} entry point API and metadata API. Along with
4914@code{importlib.resources} in Python 3.7 and newer, this can eliminate the
4915need to use the older and less efficient @code{pkg_resources} package.")
4916 (license license:asl2.0)))
4917
37c173d1
RW
4918(define-public python-jaraco-packaging
4919 (package
4920 (name "python-jaraco-packaging")
4921 (version "6.1")
4922 (source
4923 (origin
4924 (method url-fetch)
4925 (uri (pypi-uri "jaraco.packaging" version))
4926 (sha256
4927 (base32
4928 "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm"))))
4929 (build-system python-build-system)
4930 (propagated-inputs
4931 `(("python-pytest" ,python-pytest)
4932 ("python-pytest-checkdocs" ,python-pytest-checkdocs)
4933 ("python-pytest-flake8" ,python-pytest-flake8)
4934 ("python-rst.linker" ,python-rst.linker)
4935 ("python-setuptools" ,python-setuptools)
4936 ("python-setuptools-scm" ,python-setuptools-scm)
4937 ("python-six" ,python-six)
4938 ("python-sphinx" ,python-sphinx)))
4939 (home-page "https://github.com/jaraco/jaraco.packaging")
4940 (synopsis "Tools to supplement packaging Python releases")
4941 (description
4942 "This package provides various tools to supplement packaging Python
4943releases.")
4944 (license license:expat)))
4945
44d10b1f
RW
4946(define-public python-pathpy
4947 (package
4948 (name "python-pathpy")
49ad11e9 4949 (version "11.5.0")
44d10b1f
RW
4950 (source
4951 (origin
4952 (method url-fetch)
4953 (uri (pypi-uri "path.py" version))
4954 (sha256
49ad11e9
RW
4955 (base32 "1jxkf91syzxlpiwgm83fjfz1m5xh3jrvv4iyl5wjsnkk599pls5n"))))
4956 (outputs '("out" "doc"))
44d10b1f
RW
4957 (build-system python-build-system)
4958 (propagated-inputs
4959 `(("python-appdirs" ,python-appdirs)))
4960 (native-inputs
4961 `(("python-setuptools-scm" ,python-setuptools-scm)
4962 ("python-sphinx" ,python-sphinx)
4963 ("python-rst.linker" ,python-rst.linker)
4964 ("python-pytest" ,python-pytest)
49ad11e9
RW
4965 ("python-pytest-runner" ,python-pytest-runner)
4966 ("python-jaraco-packaging" ,python-jaraco-packaging)))
44d10b1f 4967 (arguments
49ad11e9
RW
4968 `(#:phases
4969 (modify-phases %standard-phases
4970 (add-after 'build 'build-doc
4971 (lambda _
4972 (setenv "LANG" "en_US.UTF-8")
4973 (invoke "python" "setup.py" "build_sphinx")))
4974 (add-after 'install 'install-doc
4975 (lambda* (#:key outputs #:allow-other-keys)
4976 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4977 (doc (string-append data "/doc/" ,name "-" ,version))
4978 (html (string-append doc "/html")))
4979 (mkdir-p html)
4980 (for-each (lambda (file)
4981 (copy-file file (string-append doc "/" file)))
4982 '("README.rst" "CHANGES.rst"))
4983 (copy-recursively "build/sphinx/html" html)
4984 #t)))
4985 (replace 'check
4986 (lambda _
4987 ;; The import time test aborts if an import takes longer than
4988 ;; 100ms. It may very well take a little longer than that.
4989 (invoke "pytest" "-v" "-k" "not test_import_time"))))))
44d10b1f
RW
4990 (home-page "https://github.com/jaraco/path.py")
4991 (synopsis "Python module wrapper for built-in os.path")
4992 (description
4993 "@code{path.py} implements path objects as first-class entities, allowing
4994common operations on files to be invoked on those path objects directly.")
4995 (license license:expat)))
4996
4997(define-public python2-pathpy
4998 (package-with-python2 python-pathpy))
4999
5000(define-public python-simplegeneric
5001 (package
5002 (name "python-simplegeneric")
5003 (version "0.8.1")
5004 (source
5005 (origin
5006 (method url-fetch)
6c8c3980 5007 (uri (pypi-uri "simplegeneric" version ".zip"))
44d10b1f
RW
5008 (sha256
5009 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5010 (build-system python-build-system)
5011 (native-inputs
5012 `(("unzip" ,unzip)))
5013 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5014 (synopsis "Python module for simple generic functions")
5015 (description
5016 "The simplegeneric module lets you define simple single-dispatch generic
5017functions, akin to Python’s built-in generic functions like @code{len()},
5018@code{iter()} and so on. However, instead of using specially-named methods,
5019these generic functions use simple lookup tables, akin to those used by
5020e.g. @code{pickle.dump()} and other generic functions found in the Python
5021standard library.")
5022 (license license:zpl2.1)))
5023
5024(define-public python2-simplegeneric
5025 (package-with-python2 python-simplegeneric))
5026
5027(define-public python-ipython-genutils
5028 ;; TODO: This package is retired, check if can be removed, see description.
5029 (package
5030 (name "python-ipython-genutils")
5031 (version "0.1.0")
5032 (source
5033 (origin
5034 (method url-fetch)
c9671d4b 5035 (uri (pypi-uri "ipython_genutils" version))
44d10b1f
RW
5036 (sha256
5037 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5038 (build-system python-build-system)
5039 (arguments `(#:tests? #f)) ; no tests
5040 (home-page "https://ipython.org")
5041 (synopsis "Vestigial utilities from IPython")
5042 (description
5043 "This package provides retired utilities from IPython. No packages
5044outside IPython/Jupyter should depend on it.
5045
5046This package shouldn't exist. It contains some common utilities shared by
5047Jupyter and IPython projects during The Big Split. As soon as possible, those
5048packages will remove their dependency on this, and this package will go
5049away.")
5050 (license license:bsd-3)))
5051
5052(define-public python2-ipython-genutils
5053 (package-with-python2 python-ipython-genutils))
5054
5055(define-public python-traitlets
5056 (package
5057 (name "python-traitlets")
5058 (version "4.3.2")
5059 (source
5060 (origin
5061 (method url-fetch)
5062 (uri (pypi-uri "traitlets" version))
5063 (sha256
5064 (base32
5065 "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww"))))
5066 (build-system python-build-system)
5067 (arguments
5068 `(#:phases
5069 (modify-phases %standard-phases
5070 (replace 'check (lambda _ (invoke "pytest" "-vv" "traitlets"))))))
5071 (propagated-inputs
5072 `(("python-ipython-genutils" ,python-ipython-genutils)
5073 ("python-decorator" ,python-decorator))) ;not needed for >4.3.2
5074 (native-inputs
5075 `(("python-pytest" ,python-pytest)))
5076 (properties `((python2-variant . ,(delay python2-traitlets))))
5077 (home-page "https://ipython.org")
5078 (synopsis "Configuration system for Python applications")
5079 (description
5080 "Traitlets is a framework that lets Python classes have attributes with
5081type checking, dynamically calculated default values, and ‘on change’
5082callbacks. The package also includes a mechanism to use traitlets for
5083configuration, loading values from files or from command line arguments. This
5084is a distinct layer on top of traitlets, so you can use traitlets in your code
5085without using the configuration machinery.")
5086 (license license:bsd-3)))
5087
5088(define-public python2-traitlets
5089 (let ((traitlets (package-with-python2 (strip-python2-variant python-traitlets))))
5090 (package
5091 (inherit traitlets)
5092 (propagated-inputs
5093 `(("python2-enum34" ,python2-enum34)
5094 ,@(package-propagated-inputs traitlets))))))
5095
5096(define-public python-jupyter-core
5097 (package
5098 (name "python-jupyter-core")
5099 (version "4.4.0")
5100 (source
5101 (origin
5102 (method url-fetch)
5103 (uri (string-append (pypi-uri "jupyter_core" version)))
5104 (sha256
5105 (base32
5106 "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s"))))
5107 (build-system python-build-system)
5108 ;; FIXME: not sure how to run the tests
5109 (arguments `(#:tests? #f))
5110 (propagated-inputs
5111 `(("python-traitlets" ,python-traitlets)))
5112 (home-page "http://jupyter.org/")
5113 (synopsis "Jupyter base package")
5114 (description
5115 "Jupyter core is the base package on which Jupyter projects rely.")
5116 (license license:bsd-3)))
5117
5118(define-public python2-jupyter-core
5119 (package-with-python2 python-jupyter-core))
5120
5121(define-public python-jupyter-client
5122 (package
5123 (name "python-jupyter-client")
5124 (version "5.2.4")
5125 (source
5126 (origin
5127 (method url-fetch)
5128 (uri (pypi-uri "jupyter_client" version))
5129 (sha256
5130 (base32
5131 "0l9mh7ccrpl3lppym3dnky8n1nk7xarzzdcxf4q2s7aw203cpydm"))))
5132 (build-system python-build-system)
5133 ;; Tests fail because of missing native python kernel which I assume is
5134 ;; provided by the ipython package, which we cannot use because it would
5135 ;; cause a dependency cycle.
ddc586ea
LC
5136 (arguments
5137 `(#:tests? #f
5138
5139 #:phases (modify-phases %standard-phases
5140 (add-after 'unpack 'set-tool-file-names
5141 (lambda* (#:key inputs #:allow-other-keys)
5142 (let ((iproute (assoc-ref inputs "iproute")))
5143 (substitute* "jupyter_client/localinterfaces.py"
5144 (("'ip'")
5145 (string-append "'" iproute "/sbin/ip'")))
5146 #t))))))
5147 (inputs
5148 `(("iproute" ,iproute)))
44d10b1f
RW
5149 (propagated-inputs
5150 `(("python-pyzmq" ,python-pyzmq)
5151 ("python-traitlets" ,python-traitlets)
5152 ("python-jupyter-core" ,python-jupyter-core)))
5153 (home-page "http://jupyter.org/")
5154 (synopsis "Jupyter protocol implementation and client libraries")
5155 (description
5156 "The @code{jupyter_client} package contains the reference implementation
5157of the Jupyter protocol. It also provides client and kernel management APIs
5158for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5159installing @code{kernelspec}s for use with Jupyter frontends.")
5160 (license license:bsd-3)))
5161
5162(define-public python2-jupyter-client
5163 (package-with-python2 python-jupyter-client))
5164
5165(define-public python-ipykernel
5166 (package
5167 (name "python-ipykernel")
82110dea 5168 (version "5.1.1")
44d10b1f
RW
5169 (source
5170 (origin
5171 (method url-fetch)
5172 (uri (pypi-uri "ipykernel" version))
5173 (sha256
82110dea 5174 (base32 "173nm29g85w8cac3fg40b27qaq26g41wgg6qn79ql1hq4w2n5sgh"))))
44d10b1f
RW
5175 (build-system python-build-system)
5176 (arguments
5177 `(#:phases
5178 (modify-phases %standard-phases
5179 (replace 'check
5180 (lambda _
5181 (setenv "HOME" "/tmp")
5182 (invoke "pytest" "-v")
aa856d02
LC
5183 #t))
5184 (add-after 'install 'set-python-file-name
5185 (lambda* (#:key outputs #:allow-other-keys)
5186 ;; Record the absolute file name of the 'python' executable in
5187 ;; 'kernel.json'.
5188 (let ((out (assoc-ref outputs "out")))
5189 (substitute* (string-append out "/share/jupyter"
5190 "/kernels/python3/kernel.json")
5191 (("\"python\"")
5192 (string-append "\"" (which "python") "\"")))
5193 #t))))))
44d10b1f
RW
5194 (propagated-inputs
5195 `(("python-ipython" ,python-ipython)
5196 ;; imported at runtime during connect
5197 ("python-jupyter-client" ,python-jupyter-client)))
5198 (native-inputs
5199 `(("python-pytest" ,python-pytest)
5200 ("python-nose" ,python-nose)))
5201 (home-page "https://ipython.org")
5202 (synopsis "IPython Kernel for Jupyter")
5203 (description
5204 "This package provides the IPython kernel for Jupyter.")
5205 (license license:bsd-3)))
5206
0f378947 5207;; Version 5.1.1 and above no longer support Python 2.
44d10b1f 5208(define-public python2-ipykernel
0f378947
RW
5209 (package
5210 (name "python2-ipykernel")
5211 (version "5.1.0")
5212 (source
5213 (origin
5214 (method url-fetch)
5215 (uri (pypi-uri "ipykernel" version))
5216 (sha256
5217 (base32 "0br95qhrd5k65g10djngiy27hs0642301hlf2q142i8djabvzh0g"))))
5218 (build-system python-build-system)
5219 (arguments
5220 `(#:python ,python-2
5221 #:phases
5222 (modify-phases %standard-phases
5223 (replace 'check
5224 (lambda _
5225 (setenv "HOME" "/tmp")
5226 (invoke "pytest" "-v")
5227 #t)))))
5228 (propagated-inputs
5229 `(("python2-ipython" ,python2-ipython)
5230 ;; imported at runtime during connect
5231 ("python2-jupyter-client" ,python2-jupyter-client)))
5232 (native-inputs
5233 `(("python2-pytest" ,python2-pytest)
5234 ("python2-nose" ,python2-nose)))
5235 (home-page "https://ipython.org")
5236 (synopsis "IPython Kernel for Jupyter")
5237 (description
5238 "This package provides the IPython kernel for Jupyter.")
5239 (license license:bsd-3)))
44d10b1f 5240
966aa714
AE
5241(define-public python-pari-jupyter
5242 (package
5243 (name "python-pari-jupyter")
5244 (version "1.3.2")
5245 (source
5246 (origin
5247 (method url-fetch)
5248 (uri (pypi-uri "pari_jupyter" version))
5249 (sha256
5250 (base32
5251 "1yash0p422nnin7z58b99d0p23nx79f5m0mainc9hsjg72jhdhr6"))))
5252 (build-system python-build-system)
5253 (propagated-inputs
5254 `(("python-ipykernel" ,python-ipykernel)))
5255 (inputs
5256 `(("pari-gp" ,pari-gp)
5257 ("readline" ,readline)))
5258 (arguments
5259 `(#:tests? #f)) ; no test suite
5260 (home-page
5261 "https://github.com/jdemeyer/pari_jupyter")
5262 (synopsis "A Jupyter kernel for PARI/GP")
5263 (description "The package provides a PARI/GP kernel for Jupyter.")
5264 (license license:gpl3+)))
5265
dede052a
RW
5266(define-public python-backcall
5267 (package
5268 (name "python-backcall")
5269 (version "0.1.0")
5270 (source
5271 (origin
5272 (method url-fetch)
5273 (uri (pypi-uri "backcall" version))
5274 (sha256
5275 (base32
5276 "1r01dqch3f8fdj3n6fviw8hxqrs6w5v0qw4izmvqzry1w9dxiv1q"))))
5277 (build-system python-build-system)
5278 (home-page "https://github.com/takluyver/backcall/")
5279 (synopsis "Specifications for callback functions passed in to an API")
5280 (description
5281 "If your code lets other people supply callback functions, it's important
5282to specify the function signature you expect, and check that functions support
5283that. Adding extra parameters later would break other peoples code unless
5284you're careful. The @code{backcall} package provides a way of specifying the
5285callback signature using a prototype function.")
5286 (license license:bsd-3)))
5287
44d10b1f
RW
5288;; This is the latest release of the LTS version of ipython with support for
5289;; Python 2.7 and Python 3.x. Later non-LTS versions starting from 6.0 have
8b5f756c
RW
5290;; dropped support for Python 2.7.
5291(define-public python2-ipython
44d10b1f 5292 (package
8b5f756c 5293 (name "python2-ipython")
44d10b1f
RW
5294 (version "5.8.0")
5295 (source
5296 (origin
5297 (method url-fetch)
5298 (uri (pypi-uri "ipython" version ".tar.gz"))
5299 (sha256
5300 (base32 "01l93i4hspf0lvhmycvc8j378bslm9rw30mwfspsl6v1ayc69b2b"))))
5301 (build-system python-build-system)
44d10b1f 5302 (propagated-inputs
8b5f756c
RW
5303 `(("python2-backports-shutil-get-terminal-size"
5304 ,python2-backports-shutil-get-terminal-size)
5305 ("python2-pathlib2" ,python2-pathlib2)
5306 ("python2-pyzmq" ,python2-pyzmq)
5307 ("python2-prompt-toolkit" ,python2-prompt-toolkit-1)
5308 ("python2-terminado" ,python2-terminado)
5309 ("python2-matplotlib" ,python2-matplotlib)
5310 ("python2-numpy" ,python2-numpy)
5311 ("python2-numpydoc" ,python2-numpydoc)
5312 ("python2-jinja2" ,python2-jinja2)
5313 ("python2-mistune" ,python2-mistune)
5314 ("python2-pexpect" ,python2-pexpect)
5315 ("python2-pickleshare" ,python2-pickleshare)
5316 ("python2-simplegeneric" ,python2-simplegeneric)
5317 ("python2-jsonschema" ,python2-jsonschema)
5318 ("python2-traitlets" ,python2-traitlets)
5319 ("python2-nbformat" ,python2-nbformat)
5320 ("python2-pygments" ,python2-pygments)))
5321 (inputs
5322 `(("readline" ,readline)
5323 ("which" ,which)))
5324 (native-inputs
5325 `(("graphviz" ,graphviz)
5326 ("pkg-config" ,pkg-config)
5327 ("python2-requests" ,python2-requests) ;; for tests
5328 ("python2-testpath" ,python2-testpath)
5329 ("python2-mock" ,python2-mock)
5330 ("python2-nose" ,python2-nose)))
5331 (arguments
5332 `(#:python ,python-2
5333 #:phases
5334 (modify-phases %standard-phases
5335 (add-before 'check 'delete-broken-tests
5336 (lambda* (#:key inputs #:allow-other-keys)
5337 ;; These tests throw errors for unknown reasons.
5338 (delete-file "IPython/core/tests/test_profile.py")
5339 (delete-file "IPython/core/tests/test_interactiveshell.py")
5340 (delete-file "IPython/core/tests/test_magic.py")
5341 #t)))))
5342 (home-page "https://ipython.org")
5343 (synopsis "IPython is a tool for interactive computing in Python")
5344 (description
5345 "IPython provides a rich architecture for interactive computing with:
5346Powerful interactive shells, a browser-based notebook, support for interactive
5347data visualization, embeddable interpreters and tools for parallel
5348computing.")
5349 (license license:bsd-3)))
5350
5351(define-public python-ipython
5352 (package
5353 (name "python-ipython")
5354 (version "7.5.0")
5355 (source
5356 (origin
5357 (method url-fetch)
5358 (uri (pypi-uri "ipython" version ".tar.gz"))
5359 (sha256
5360 (base32 "09mbxq37mfn88xjnib7qfzaq9krr7gf1jxwy1p6mcjr254082h78"))))
5361 (build-system python-build-system)
5362 (propagated-inputs
5363 `(("python-backcall" ,python-backcall)
5364 ("python-pyzmq" ,python-pyzmq)
5365 ("python-prompt-toolkit" ,python-prompt-toolkit)
44d10b1f
RW
5366 ("python-terminado" ,python-terminado)
5367 ("python-matplotlib" ,python-matplotlib)
5368 ("python-numpy" ,python-numpy)
5369 ("python-numpydoc" ,python-numpydoc)
8b5f756c 5370 ("python-jedi" ,python-jedi)
44d10b1f
RW
5371 ("python-jinja2" ,python-jinja2)
5372 ("python-mistune" ,python-mistune)
5373 ("python-pexpect" ,python-pexpect)
5374 ("python-pickleshare" ,python-pickleshare)
5375 ("python-simplegeneric" ,python-simplegeneric)
5376 ("python-jsonschema" ,python-jsonschema)
5377 ("python-traitlets" ,python-traitlets)
5378 ("python-nbformat" ,python-nbformat)
5379 ("python-pygments" ,python-pygments)))
5380 (inputs
5381 `(("readline" ,readline)
5382 ("which" ,which)))
5383 (native-inputs
5384 `(("graphviz" ,graphviz)
5385 ("pkg-config" ,pkg-config)
5386 ("python-requests" ,python-requests) ;; for tests
5387 ("python-testpath" ,python-testpath)
8b5f756c 5388 ("python-nose" ,python-nose)))
44d10b1f
RW
5389 (arguments
5390 `(#:phases
5391 (modify-phases %standard-phases
44d10b1f
RW
5392 ;; Tests can only be run after the library has been installed and not
5393 ;; within the source directory.
5394 (delete 'check)
5395 (add-after 'install 'check
5396 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5397 (if tests?
5398 (begin
5399 ;; Make installed package available for running the tests
5400 (add-installed-pythonpath inputs outputs)
5401 (setenv "HOME" "/tmp/") ;; required by a test
5402 ;; We only test the core because one of the other tests
5403 ;; tries to import ipykernel.
5404 (invoke "python" "IPython/testing/iptest.py"
5405 "-v" "IPython/core/tests"))
5406 #t)))
5407 (add-before 'check 'fix-tests
5408 (lambda* (#:key inputs #:allow-other-keys)
5409 (substitute* "./IPython/utils/_process_posix.py"
5410 (("/usr/bin/env', 'which") (which "which")))
5411 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5412 (("#!/usr/bin/env python")
5413 (string-append "#!" (which "python"))))
44d10b1f
RW
5414 ;; This test introduces a circular dependency on ipykernel
5415 ;; (which depends on ipython).
5416 (delete-file "IPython/core/tests/test_display.py")
8b5f756c 5417 ;; AttributeError: module 'IPython.core' has no attribute 'formatters'
44d10b1f 5418 (delete-file "IPython/core/tests/test_interactiveshell.py")
44d10b1f
RW
5419 #t)))))
5420 (home-page "https://ipython.org")
5421 (synopsis "IPython is a tool for interactive computing in Python")
5422 (description
5423 "IPython provides a rich architecture for interactive computing with:
5424Powerful interactive shells, a browser-based notebook, support for interactive
5425data visualization, embeddable interpreters and tools for parallel
5426computing.")
8b5f756c 5427 (license license:bsd-3)))
44d10b1f 5428
8b5f756c
RW
5429(define-public python-ipython-documentation
5430 (package
5431 (inherit python-ipython)
5432 (name "python-ipython-documentation")
5433 (version (package-version python-ipython))
5434 (arguments
5435 `(#:phases
5436 (modify-phases %standard-phases
5437 (delete 'build)
5438 (delete 'check)
5439 (replace 'install
5440 (lambda* (#:key outputs #:allow-other-keys)
5441 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
5442 (doc (string-append data "/doc/" ,name "-" ,version))
5443 (html (string-append doc "/html"))
5444 (man1 (string-append data "/man/man1"))
5445 (info (string-append data "/info"))
5446 (examples (string-append doc "/examples"))
5447 (python-arg (string-append "PYTHON=" (which "python"))))
5448 (setenv "LANG" "en_US.utf8")
5449 (with-directory-excursion "docs"
5450 ;; FIXME: pdf fails to build
5451 ;;(system* "make" "pdf" "PAPER=a4")
5452 (system* "make" python-arg "html")
5453 ;; FIXME: the generated texi file contains ^@^@, which trips
5454 ;; up the parser.
5455 ;; (system* "make" python-arg "info")
5456 )
5457 (copy-recursively "docs/man" man1)
5458 (copy-recursively "examples" examples)
5459 (copy-recursively "docs/build/html" html)
5460 ;; (copy-file "docs/build/latex/ipython.pdf"
5461 ;; (string-append doc "/ipython.pdf"))
5462 (mkdir-p info)
5463 ;; (copy-file "docs/build/texinfo/ipython.info"
5464 ;; (string-append info "/ipython.info"))
5465 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))
5466 #t)))))
5467 (inputs
5468 `(("python-ipython" ,python-ipython)
5469 ("python-ipykernel" ,python-ipykernel)))
5470 (native-inputs
5471 `(("python-sphinx" ,python-sphinx)
5472 ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
5473 ;; FIXME: It's possible that a smaller union would work just as well.
f75aa97f 5474 ("texlive" ,(texlive-union (list texlive-amsfonts
8b5f756c
RW
5475 texlive-fonts-ec
5476 texlive-generic-ifxetex
5477 texlive-generic-pdftex
8b5f756c
RW
5478 texlive-latex-capt-of
5479 texlive-latex-cmap
5480 texlive-latex-environ
5481 texlive-latex-eqparbox
5482 texlive-latex-etoolbox
5483 texlive-latex-expdlist
5484 texlive-latex-fancyhdr
5485 texlive-latex-fancyvrb
5486 texlive-latex-fncychap
5487 texlive-latex-float
5488 texlive-latex-framed
5489 texlive-latex-geometry
5490 texlive-latex-graphics
5491 texlive-latex-hyperref
5492 texlive-latex-mdwtools
5493 texlive-latex-multirow
5494 texlive-latex-needspace
5495 texlive-latex-oberdiek
5496 texlive-latex-parskip
5497 texlive-latex-preview
5498 texlive-latex-tabulary
5499 texlive-latex-threeparttable
5500 texlive-latex-titlesec
5501 texlive-latex-trimspaces
5502 texlive-latex-ucs
5503 texlive-latex-upquote
5504 texlive-latex-url
5505 texlive-latex-varwidth
5506 texlive-latex-wrapfig)))
5507 ("texinfo" ,texinfo)))))
44d10b1f
RW
5508
5509(define-public python-urwid
5510 (package
5511 (name "python-urwid")
5512 (version "2.0.1")
5513 (source
5514 (origin
5515 (method url-fetch)
5516 (uri (pypi-uri "urwid" version))
5517 (sha256
5518 (base32
5519 "1g6cpicybvbananpjikmjk8npmjk4xvak1wjzji62wc600wkwkb4"))))
5520 (build-system python-build-system)
5521 (home-page "http://urwid.org")
5522 (synopsis "Console user interface library for Python")
5523 (description
5524 "Urwid is a curses-based UI/widget library for Python. It includes many
5525features useful for text console applications.")
5526 (license license:lgpl2.1+)))
5527
5528(define-public python2-urwid
5529 (package-with-python2 python-urwid))
5530
5531(define-public python-urwidtrees
5532 (package
5533 (name "python-urwidtrees")
5534 (version "1.0.2")
5535 (source
5536 (origin
5537 (method url-fetch)
5538 ;; package author intends on distributing via github rather than pypi:
5539 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5540 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5541 version ".tar.gz"))
5542 (file-name (string-append name "-" version ".tar.gz"))
5543 (sha256
5544 (base32
5545 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
5546 (build-system python-build-system)
5547 (arguments
5548 '(#:tests? #f)) ; no tests
5549 (propagated-inputs `(("python-urwid" ,python-urwid)))
5550 (home-page "https://github.com/pazz/urwidtrees")
5551 (synopsis "Tree widgets for urwid")
5552 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5553toolkit. Use it to build trees of widgets.")
5554 (license license:gpl3+)))
5555
5556(define-public python2-urwidtrees
5557 (package-with-python2 python-urwidtrees))
5558
5559(define-public python-ua-parser
5560 (package
5561 (name "python-ua-parser")
5562 (version "0.8.0")
5563 (source
5564 (origin
5565 (method url-fetch)
5566 (uri (pypi-uri "ua-parser" version))
5567 (sha256
5568 (base32
5569 "1jwdf58rhchjzzrad405pviv0iq24xa2xmmmdgcm2c8s6b4wzfwp"))))
5570 (build-system python-build-system)
5571 (arguments
5572 `(#:tests? #f)) ;no test suite in release
5573 (native-inputs
5574 `(("python-pyyaml" ,python-pyyaml)))
5575 (home-page "https://github.com/ua-parser/uap-python")
5576 (synopsis "User agent parser")
5577 (description
5578 "@code{ua-parser} is a Python port of Browserscope's user agent parser.")
5579 (license license:asl2.0)))
5580
5581(define-public python2-ua-parser
5582 (package-with-python2 python-ua-parser))
5583
5584(define-public python-user-agents
5585 (package
5586 (name "python-user-agents")
5587 (version "1.1.0")
5588 (source
5589 (origin
5590 (method url-fetch)
5591 (uri (pypi-uri "user-agents" version))
5592 (sha256
5593 (base32
5594 "0fc00cd3j8dahq1zzn8pkgfgd7lq37bp2scmdma2n1c049vicgb4"))))
5595 (build-system python-build-system)
5596 (arguments
5597 `(#:tests? #f)) ;missing devices.json test file in release
5598 (propagated-inputs
5599 `(("python-ua-parser" ,python-ua-parser)))
5600 (home-page "https://github.com/selwin/python-user-agents")
5601 (synopsis "User Agent strings parsing library")
5602 (description
5603 "A library to identify devices (phones, tablets) and their capabilities by
5604parsing (browser/HTTP) user agent strings.")
5605 (license license:expat)))
5606
5607(define-public python2-user-agents
5608 (package-with-python2 python-user-agents))
5609
5610(define-public python-dbus
5611 (package
5612 (name "python-dbus")
5613 (version "1.2.8")
5614 (source
5615 (origin
5616 (method url-fetch)
5617 (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/"
5618 "dbus-python-" version ".tar.gz"))
5619 (sha256
5620 (base32
5621 "0vvvjmiwnc9cjlks3gcdk43ap7llhlpz7cm1wbw0nc2yfsxjpwdb"))))
5622 (build-system gnu-build-system)
5623 (arguments
5624 '(#:phases
5625 (modify-phases %standard-phases
5626 (add-before
5627 'check 'pre-check
5628 (lambda _
5629 ;; XXX: For the missing '/etc/machine-id'.
5630 (substitute* "test/run-test.sh"
5631 (("DBUS_FATAL_WARNINGS=1")
5632 "DBUS_FATAL_WARNINGS=0"))
5633 #t)))))
5634 (native-inputs
5635 `(("pkg-config" ,pkg-config)))
5636 (inputs
5637 `(("python" ,python-wrapper)
5638 ("dbus-glib" ,dbus-glib)))
5639 (synopsis "Python bindings for D-bus")
5640 (description "python-dbus provides bindings for libdbus, the reference
5641implementation of D-Bus.")
5642 (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/")
5643 (license license:expat)))
5644
5645(define-public python2-dbus
5646 (package (inherit python-dbus)
5647 (name "python2-dbus")
5648 (inputs `(("python" ,python-2)
5649 ,@(alist-delete "python"
5650 (package-inputs python-dbus)
5651 equal?)))
5652 ;; FIXME: on Python 2, the test_utf8 fails with:
5653 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5654 (arguments `(#:tests? #f))))
5655
fb236fdd
AG
5656(define-public python-notify2
5657 (package
5658 (name "python-notify2")
5659 (version "0.3.1")
5660 (source
5661 (origin
5662 (method url-fetch)
5663 (uri (pypi-uri "notify2" version))
5664 (sha256
5665 (base32
5666 "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik"))))
5667 (build-system python-build-system)
5668 (arguments `(#:tests? #f)) ; tests depend on system state
5669 (native-inputs
5670 `(("python-dbus" ,python-dbus)))
5671 (home-page "https://bitbucket.org/takluyver/pynotify2")
5672 (synopsis "Python interface to D-Bus notifications")
5673 (description
5674 "Pynotify2 provides a Python interface for sending D-Bus notifications.
5675It is a reimplementation of pynotify in pure Python, and an alternative to
5676the GObject Introspection bindings to libnotify for non-GTK applications.")
5677 (license (list license:bsd-2
5678 license:lgpl2.1+))))
5679
5680(define-public python2-notify2
5681 (package-with-python2 python-notify2))
5682
44d10b1f
RW
5683(define-public python-lxml
5684 (package
5685 (name "python-lxml")
5686 (version "4.2.5")
5687 (source
5688 (origin
5689 (method url-fetch)
5690 (uri (pypi-uri "lxml" version))
5691 (sha256
5692 (base32
5693 "0zw0y9hs0nflxhl9cs6ipwwh53szi3w2x06wl0k9cylyqac0cwin"))))
5694 (build-system python-build-system)
5695 (inputs
5696 `(("libxml2" ,libxml2)
5697 ("libxslt" ,libxslt)))
5698 (home-page "http://lxml.de/")
5699 (synopsis
5700 "Python XML processing library")
5701 (description
5702 "The lxml XML toolkit is a Pythonic binding for the C libraries
5703libxml2 and libxslt.")
5704 (license license:bsd-3))) ; and a few more, see LICENSES.txt
5705
5706(define-public python2-lxml
5707 (package-with-python2 python-lxml))
5708
5709;; beautifulsoup4 has a totally different namespace than 3.x,
5710;; and pypi seems to put it under its own name, so I guess we should too
5711(define-public python-beautifulsoup4
5712 (package
5713 (name "python-beautifulsoup4")
abb53e6f 5714 (version "4.7.1")
44d10b1f
RW
5715 (source
5716 (origin
5717 (method url-fetch)
5718 (uri (pypi-uri "beautifulsoup4" version))
5719 (sha256
5720 (base32
abb53e6f 5721 "0j2kycz2dxgx68xzjm7rxg5xn6v61gq5ifvxyg99slmqkybnal4l"))))
44d10b1f
RW
5722 (build-system python-build-system)
5723 (arguments
5724 `(#:phases
5725 (modify-phases %standard-phases
5726 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5727 ;; must use this conversion script when building with Python 3. The
5728 ;; conversion script also runs the tests.
5729 ;; For more information, see the file 'convert-py3k' in the source
5730 ;; distribution.
5731 (replace 'check
dff0197e 5732 (lambda _ (invoke "./convert-py3k"))))))
f83e10e4 5733 (propagated-inputs
abb53e6f 5734 `(("python-soupsieve" ,python-soupsieve)))
44d10b1f
RW
5735 (home-page
5736 "https://www.crummy.com/software/BeautifulSoup/bs4/")
5737 (synopsis
5738 "Python screen-scraping library")
5739 (description
5740 "Beautiful Soup is a Python library designed for rapidly setting up
5741screen-scraping projects. It offers Pythonic idioms for navigating,
5742searching, and modifying a parse tree, providing a toolkit for
5743dissecting a document and extracting what you need. It automatically
5744converts incoming documents to Unicode and outgoing documents to UTF-8.")
5745 (license license:expat)
5746 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
5747
5748(define-public python2-beautifulsoup4
5749 (package
5750 (inherit (package-with-python2
5751 (strip-python2-variant python-beautifulsoup4)))
5752 (arguments `(#:python ,python-2))))
5753
ad74978a
BT
5754(define-public python-soupsieve
5755 (package
5756 (name "python-soupsieve")
e9cb6edd 5757 (version "1.9.2")
ad74978a
BT
5758 (source
5759 (origin
5760 (method url-fetch)
5761 (uri (pypi-uri "soupsieve" version))
5762 (sha256
5763 (base32
e9cb6edd 5764 "0in9rc9q3h8w5b4qf7kvl3qxcvw6vrz35ckblchgf70hm6pg3dbj"))))
ad74978a
BT
5765 (build-system python-build-system)
5766 (arguments `(#:tests? #f))
5767 ;;XXX: 2 tests fail currently despite claming they were to be
5768 ;;skipped. Also, beautifulsoup4 may depend on this in the future, so we
5769 ;;don't want to create a circular dependency.
5770 (home-page "https://github.com/facelessuser/soupsieve")
5771 (synopsis "CSS selector library")
5772 (description
5773 "Soup Sieve is a CSS selector library designed to be used with Beautiful
5774Soup 4. It aims to provide selecting, matching, and filtering using modern
5775CSS selectors. Soup Sieve currently provides selectors from the CSS level 1
5776specifications up through the latest CSS level 4 drafts and beyond (though
5777some are not yet implemented).")
d00b83fb 5778 (properties `((python2-variant . ,(delay python2-soupsieve))))
ad74978a
BT
5779 (license license:expat)))
5780
5781(define-public python2-soupsieve
d00b83fb 5782 (let ((base (package-with-python2 (strip-python2-variant python-soupsieve))))
ad74978a
BT
5783 (package
5784 (inherit base)
5785 (propagated-inputs
d00b83fb
MB
5786 `(("python2-backports-functools-lru-cache"
5787 ,python2-backports-functools-lru-cache)
5788 ,@(package-propagated-inputs base))))))
ad74978a 5789
44d10b1f
RW
5790(define-public python-netifaces
5791 (package
5792 (name "python-netifaces")
5793 (version "0.10.7")
5794 (source
5795 (origin
5796 (method url-fetch)
5797 (uri (pypi-uri "netifaces" version))
5798 (sha256
5799 (base32
5800 "1gccklrcplbbqh81g1mdgpa5y8na7kkf29cq2ka3f5a2fp5hyndx"))))
5801 (build-system python-build-system)
5802 (home-page "https://github.com/al45tair/netifaces")
5803 (synopsis
5804 "Python module for portable network interface information")
5805 (description
5806 "Netifaces is a Python module providing information on network
5807interfaces in an easy and portable manner.")
5808 (license license:expat)))
5809
5810(define-public python2-netifaces
5811 (package-with-python2 python-netifaces))
5812
5813(define-public python-networkx
5814 (package
5815 (name "python-networkx")
5816 (version "2.2")
5817 (source
5818 (origin
5819 (method url-fetch)
5820 (uri (pypi-uri "networkx" version ".zip"))
5821 (sha256
5822 (base32 "12swxb15299v9vqjsq4z8rgh5sdhvpx497xwnhpnb0gynrx6zra5"))))
5823 (build-system python-build-system)
5824 ;; python-decorator is needed at runtime.
5825 (propagated-inputs
5826 `(("python-decorator" ,python-decorator)))
5827 (native-inputs
5828 `(("python-nose" ,python-nose)
5829 ("unzip" ,unzip)))
5830 (home-page "https://networkx.github.io/")
5831 (synopsis "Python module for creating and manipulating graphs and networks")
5832 (description
5833 "NetworkX is a Python package for the creation, manipulation, and study
5834of the structure, dynamics, and functions of complex networks.")
5835 (license license:bsd-3)))
5836
5837(define-public python2-networkx
5838 (package-with-python2 python-networkx))
5839
5840(define-public python-datrie
5841 (package
5842 (name "python-datrie")
5843 (version "0.7.1")
5844 (source
5845 (origin
5846 (method url-fetch)
5847 (uri (pypi-uri "datrie" version))
5848 (sha256
5849 (base32
5850 "08r0if7dry2q7p34gf7ffyrlnf4bdvnprxgydlfxgfnvq8f3f4bs"))))
5851 (build-system python-build-system)
5852 (arguments
5853 `(#:phases (modify-phases %standard-phases
5854 (add-before 'build 'cythonize
5855 (lambda _
5856 ;; Regenerate Cython classes to solve ABI issues with Python
5857 ;; 3.7.0. See <https://github.com/pytries/datrie/issues/52>.
5858 (invoke "cython" "src/datrie.pyx" "src/cdatrie.pxd"
5859 "src/stdio_ext.pxd" "-a"))))))
5860 (native-inputs
5861 `(("python-cython" ,python-cython)
5862 ("python-hypothesis" ,python-hypothesis)
5863 ("python-pytest" ,python-pytest)
5864 ("python-pytest-runner" ,python-pytest-runner)))
5865 (home-page "https://github.com/kmike/datrie")
5866 (synopsis "Fast, efficiently stored trie for Python")
5867 (description
5868 "This package provides a fast, efficiently stored trie implementation for
5869Python.")
5870 (license license:lgpl2.1+)))
5871
5872(define-public snakemake
5873 (package
5874 (name "snakemake")
5875 (version "5.2.4")
5876 (source
5877 (origin
5878 (method url-fetch)
5879 (uri (pypi-uri "snakemake" version))
5880 (sha256
5881 (base32 "0gj0xxgiq3mp9qyyrbfzldiaq1giliqw0in64nqiz7vx49myqj7z"))))
5882 (build-system python-build-system)
5883 (arguments
5884 ;; TODO: Package missing test dependencies.
5885 '(#:tests? #f
5886 #:phases
5887 (modify-phases %standard-phases
5888 ;; For cluster execution Snakemake will call Python. Since there is
5889 ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
5890 ;; this by calling the snakemake wrapper instead.
5891 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
5892 (lambda* (#:key outputs #:allow-other-keys)
5893 (substitute* "snakemake/executors.py"
5894 (("\\{sys.executable\\} -m snakemake")
5895 (string-append (assoc-ref outputs "out")
5896 "/bin/snakemake")))
5897 #t)))))
5898 (propagated-inputs
5899 `(("python-gitpython" ,python-gitpython)
5900 ("python-wrapt" ,python-wrapt)
5901 ("python-requests" ,python-requests)
5902 ("python-appdirs" ,python-appdirs)
5903 ("python-configargparse" ,python-configargparse)
5904 ("python-datrie" ,python-datrie)
5905 ("python-docutils" ,python-docutils)
5906 ("python-jinja2" ,python-jinja2)
5907 ("python-jsonschema" ,python-jsonschema)
5908 ("python-networkx" ,python-networkx)
5909 ("python-pyyaml" ,python-pyyaml)
5910 ("python-ratelimiter" ,python-ratelimiter)))
5911 (home-page "https://snakemake.readthedocs.io")
5912 (synopsis "Python-based execution environment for make-like workflows")
5913 (description
5914 "Snakemake aims to reduce the complexity of creating workflows by
5915providing a clean and modern domain specific specification language (DSL) in
5916Python style, together with a fast and comfortable execution environment.")
5917 (license license:expat)))
5918
5919;; This is currently needed for the pigx-* packages.
5920(define-public snakemake-4
5921 (package (inherit snakemake)
5922 (version "4.4.0")
5923 (source
5924 (origin
5925 (method url-fetch)
5926 (uri (pypi-uri "snakemake" version))
5927 (sha256
5928 (base32 "0g0paia4z7w3srnqdmavq3hrb2x7qnpf81jx50njl0p7y4y0j8jv"))))
5929 (propagated-inputs
5930 `(("python-wrapt" ,python-wrapt)
5931 ("python-requests" ,python-requests)
5932 ("python-appdirs" ,python-appdirs)
5933 ("python-configargparse" ,python-configargparse)
5934 ("python-pyyaml" ,python-pyyaml)
5935 ("python-ratelimiter" ,python-ratelimiter)))))
5936
5937(define-public python-pyqrcode
5938 (package
5939 (name "python-pyqrcode")
5940 (version "1.2.1")
5941 (source
5942 (origin
5943 (method url-fetch)
5944 (uri (pypi-uri "PyQRCode" version))
5945 (sha256
5946 (base32
5947 "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx"))))
5948 (build-system python-build-system)
5949 (home-page
5950 "https://github.com/mnooner256/pyqrcode")
5951 (synopsis "QR code generator")
5952 (description
5953 "Pyqrcode is a QR code generator written purely in Python with
5954SVG, EPS, PNG and terminal output.")
5955 (license license:bsd-3)))
5956
5957(define-public python-seaborn
5958 (package
5959 (name "python-seaborn")
5960 (version "0.9.0")
5961 (source
5962 (origin
5963 (method url-fetch)
5964 (uri (pypi-uri "seaborn" version))
5965 (sha256
5966 (base32 "0bqysi3fxfjl1866m5jq8z7mynhqbqnikim74dmzn8539iwkzj3n"))))
5967 (build-system python-build-system)
5968 (arguments
5969 `(#:phases
5970 (modify-phases %standard-phases
5971 (add-before 'check 'start-xserver
5972 (lambda* (#:key inputs #:allow-other-keys)
5973 (let ((xorg-server (assoc-ref inputs "xorg-server")))
5974 ;; There must be a running X server and make check doesn't
5975 ;; start one. Therefore we must do it.
5976 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
5977 (setenv "DISPLAY" ":1")
5978 #t)))
5979 (replace 'check (lambda _ (invoke "pytest" "seaborn") #t)))))
5980 (propagated-inputs
5981 `(("python-pandas" ,python-pandas)
5982 ("python-matplotlib" ,python-matplotlib)
5983 ("python-numpy" ,python-numpy)
5984 ("python-scipy" ,python-scipy)))
5985 (native-inputs
5986 `(("python-pytest" ,python-pytest)
5987 ("xorg-server" ,xorg-server)))
5988 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5989 (synopsis "Statistical data visualization")
5990 (description
5991 "Seaborn is a library for making attractive and informative statistical
5992graphics in Python. It is built on top of matplotlib and tightly integrated
5993with the PyData stack, including support for numpy and pandas data structures
5994and statistical routines from scipy and statsmodels.")
5995 (license license:bsd-3)))
5996
5997(define-public python2-seaborn
5998 (package-with-python2 python-seaborn))
5999
6000(define-public python-mpmath
6001 (package
6002 (name "python-mpmath")
6003 (version "0.19")
6004 (source (origin
6005 (method url-fetch)
6006 (uri (string-append "http://mpmath.org/files/mpmath-"
6007 version ".tar.gz"))
6008 (sha256
6009 (base32
6010 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
6011 (build-system python-build-system)
6012 (arguments
6013 '(#:phases
6014 (modify-phases %standard-phases
6015 (replace 'check
6016 (lambda _
5d7a6f1c 6017 (invoke "python" "mpmath/tests/runtests.py" "-local"))))))
44d10b1f
RW
6018 (home-page "http://mpmath.org")
6019 (synopsis "Arbitrary-precision floating-point arithmetic in python")
6020 (description
6021 "@code{mpmath} can be used as an arbitrary-precision substitute for
6022Python's float/complex types and math/cmath modules, but also does much
6023more advanced mathematics.")
6024 (license license:bsd-3)))
6025
6026(define-public python2-mpmath
6027 (package-with-python2 python-mpmath))
6028
6029(define-public python-bigfloat
6030 (package
6031 (name "python-bigfloat")
6032 (version "0.3.0")
6033 (source
6034 (origin
6035 (method url-fetch)
6036 (uri (pypi-uri "bigfloat" version))
6037 (sha256
6038 (base32 "0xd7q4l7v0f463diznjv4k9wlaks80pn9drdqmfifi7zx8qvybi6"))))
6039 (build-system python-build-system)
6040 (inputs
6041 `(("mpfr" ,mpfr)))
6042 (home-page "https://github.com/mdickinson/bigfloat")
6043 (synopsis "Arbitrary precision floating-point arithmetic for Python")
6044 (description
e36de31b 6045 "This package provides a Python interface to the MPFR library for
44d10b1f
RW
6046multiprecision arithmetic.")
6047 (license license:lgpl3+)))
6048
6049(define-public python2-bigfloat
6050 (package-with-python2 python-bigfloat))
6051
6052(define-public python-sympy
6053 (package
6054 (name "python-sympy")
6055 (version "1.1.1")
6056 (source
6057 (origin
6058 (method url-fetch)
6059 (uri (string-append
6060 "https://github.com/sympy/sympy/releases/download/sympy-"
6061 version "/sympy-" version ".tar.gz"))
6062 (sha256
6063 (base32 "190n29sppw7g8ihilc5451y7jlfcaw56crqiqbf1jff43dlmfnxc"))))
6064 (build-system python-build-system)
6065 (arguments
6066 `(#:phases
6067 (modify-phases %standard-phases
6068 ;; Run the core tests after installation. By default it would run
6069 ;; *all* tests, which take a very long time to complete and are known
6070 ;; to be flaky.
6071 (delete 'check)
6072 (add-after 'install 'check
6073 (lambda* (#:key outputs #:allow-other-keys)
6074 (invoke "python3" "-c" "import sympy; sympy.test(\"/core\")")
6075 #t)))))
6076 (propagated-inputs
6077 `(("python-mpmath" ,python-mpmath)))
6078 (home-page "http://www.sympy.org/")
6079 (synopsis "Python library for symbolic mathematics")
6080 (description
6081 "SymPy is a Python library for symbolic mathematics. It aims to become a
6082full-featured computer algebra system (CAS) while keeping the code as simple
6083as possible in order to be comprehensible and easily extensible.")
6084 (license license:bsd-3)))
6085
6086(define-public python2-sympy
6087 (package
6088 (inherit (package-with-python2 python-sympy))
6089 (arguments
6090 `(#:phases
6091 (modify-phases %standard-phases
6092 ;; Run the core tests after installation. By default it would run
6093 ;; *all* tests, which take a very long time to complete and are known
6094 ;; to be flaky.
6095 (delete 'check)
6096 (add-after 'install 'check
6097 (lambda* (#:key outputs #:allow-other-keys)
6098 (invoke "python" "-c" "import sympy; sympy.test(\"/core\")")
6099 #t)))))))
6100
6101(define-public python-q
6102 (package
6103 (name "python-q")
6104 (version "2.6")
6105 (source
6106 (origin
6107 (method url-fetch)
6108 (uri (pypi-uri "q" version))
6109 (sha256
6110 (base32
6111 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
6112 (build-system python-build-system)
6113 (home-page "https://github.com/zestyping/q")
6114 (synopsis "Quick-and-dirty debugging output for tired programmers")
6115 (description
6116 "q is a Python module for \"print\" style of debugging Python code. It
6117provides convenient short API for print out of values, tracebacks, and
6118falling into the Python interpreter.")
6119 (license license:asl2.0)))
6120
6121(define-public python2-q
6122 (package-with-python2 python-q))
6123
6124(define-public python2-xlib
6125 (package
6126 (name "python2-xlib")
6127 (version "0.14")
6128 (source (origin
6129 (method url-fetch)
6130 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6131 "/" version "/"
6132 "python-xlib-" version ".tar.gz"))
6133 (sha256
6134 (base32
6135 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6136 (build-system python-build-system)
6137 (arguments
6138 `(#:python ,python-2 ;Python 2 only
6139 #:tests? #f)) ;no tests
6140 (home-page "http://python-xlib.sourceforge.net/")
6141 (synopsis "Python X11 client library")
6142 (description
6143 "The Python X Library is intended to be a fully functional X client
6144library for Python programs. It is useful to implement low-level X clients.
6145It is written entirely in Python.")
6146 (license license:gpl2+)))
6147
6148(define-public python-singledispatch
6149 (package
6150 (name "python-singledispatch")
6151 (version "3.4.0.3")
6152 (source
6153 (origin
6154 (method url-fetch)
6155 (uri (pypi-uri "singledispatch" version))
6156 (sha256
6157 (base32
6158 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6159 (build-system python-build-system)
6160 (native-inputs
6161 `(("python-six" ,python-six))) ; required for conversion, not at run-time
6162 (home-page
6163 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6164 (synopsis "Backport of singledispatch feature from Python 3.4")
6165 (description
6166 "This library brings functools.singledispatch from Python 3.4 to Python
61672.6-3.3.")
6168 (license license:expat)))
6169
6170(define-public python2-singledispatch
6171 (package-with-python2 python-singledispatch))
6172
6173;; the python- version can be removed with python-3.5
6174(define-public python-backports-abc
6175 (package
6176 (name "python-backports-abc")
6177 (version "0.5")
6178 (source
6179 (origin
6180 (method url-fetch)
6181 (uri (pypi-uri "backports_abc" version))
6182 (sha256
6183 (base32
6184 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6185 (build-system python-build-system)
6186 (home-page "https://github.com/cython/backports_abc")
6187 (synopsis "Backport of additions to the 'collections.abc' module")
6188 (description
6189 "Python-backports-abc provides a backport of additions to the
36a4366d 6190@code{collections.abc} module in Python-3.5.")
44d10b1f
RW
6191 (license license:psfl)))
6192
6193(define-public python2-backports-abc
6194 (package-with-python2 python-backports-abc))
6195
6196(define-public python-backports-csv
6197 (package
6198 (name "python-backports-csv")
6199 (version "1.0.5")
6200 (source
6201 (origin
6202 (method url-fetch)
6203 (uri (pypi-uri "backports.csv" version))
6204 (sha256
6205 (base32
6206 "1imzbrradkfn8s2m1qcimyn74dn1mz2p3j381jljn166rf2i6hlc"))))
6207 (build-system python-build-system)
6208 (home-page "https://github.com/ryanhiebert/backports.csv")
6209 (synopsis "Backport of Python 3's csv module for Python 2")
6210 (description
6211 "Provides a backport of Python 3's @code{csv} module for parsing
6212comma separated values. The API of the @code{csv} module in Python 2
6213is drastically different from the @code{csv} module in Python 3.
6214This is due, for the most part, to the difference between str in
6215Python 2 and Python 3.")
6216 (license license:psfl)))
6217
6218(define-public python2-backports-csv
6219 (package-with-python2 python-backports-csv))
6220
6221(define-public python2-backports-shutil-get-terminal-size
6222 (package
6223 (name "python2-backports-shutil-get-terminal-size")
6224 (version "1.0.0")
6225 (source
6226 (origin
6227 (method url-fetch)
6228 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6229 (sha256
6230 (base32
6231 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6232 (build-system python-build-system)
6233 (arguments
6234 `(#:python ,python-2
6235 #:phases
6236 (modify-phases %standard-phases
6237 (replace 'check
6238 (lambda _
4a4a7d9a 6239 (invoke "py.test" "-v"))))))
44d10b1f
RW
6240 (native-inputs
6241 `(("python2-pytest" ,python2-pytest)))
6242 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6243 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6244 (description
6245 "This package provides a backport of the @code{get_terminal_size
6246function} from Python 3.3's @code{shutil}.
6247Unlike the original version it is written in pure Python rather than C,
6248so it might be a tiny bit slower.")
6249 (license license:expat)))
6250
6251(define-public python-waf
6252 (package
6253 (name "python-waf")
6254 (version "2.0.11")
6255 (source (origin
6256 (method url-fetch)
6257 (uri (string-append "https://waf.io/"
6258 "waf-" version ".tar.bz2"))
6259 (sha256
6260 (base32
6261 "13zrniwkmfqgsgzi9v5m1367fppp9yzrz6z2ny6hy8dmpb8mj4z4"))))
6262 (build-system python-build-system)
6263 (arguments
6264 '(#:phases
6265 (modify-phases %standard-phases
6266 (replace 'build
6267 (lambda _
6268 (invoke "python" "waf-light" "configure" "build")))
6269 (replace 'check
6270 (lambda _
6271 (invoke "python" "waf" "--version")))
6272 (replace 'install
6273 (lambda* (#:key outputs #:allow-other-keys)
6274 (let ((out (assoc-ref outputs "out")))
6275 (install-file "waf" (string-append out "/bin")))
6276 #t))
6277 ;; waf breaks when it is wrapped.
6278 (delete 'wrap))))
6279 (home-page "https://waf.io/")
6280 (synopsis "Python-based build system")
6281 (description
6282 "Waf is a Python-based framework for configuring, compiling and installing
6283applications.")
6284 (license license:bsd-3)))
6285
6286(define-public python2-waf
6287 (package-with-python2 python-waf))
6288
6289(define-public python-pyzmq
6290 (package
6291 (name "python-pyzmq")
6292 (version "17.1.2")
6293 (source
6294 (origin
6295 (method url-fetch)
6296 (uri (pypi-uri "pyzmq" version))
6297 (sha256
6298 (base32 "1pyxxrz60f88ffm0y6vpbx3q8jcr9ybz8fcilihwzwhh36n84ax7"))))
6299 (build-system python-build-system)
6300 (arguments
6301 `(#:configure-flags
6302 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6303 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6304 ;; --inplace' for 'python setup.py test' to work.
6305 #:tests? #f))
6306 (inputs
6307 `(("zeromq" ,zeromq)))
6308 (native-inputs
6309 `(("pkg-config" ,pkg-config)
6310 ("python-nose" ,python-nose)))
6311 (home-page "https://github.com/zeromq/pyzmq")
6312 (synopsis "Python bindings for 0MQ")
6313 (description
6314 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
6315 (license license:bsd-4)))
6316
6317(define-public python2-pyzmq
6318 (package-with-python2 python-pyzmq))
6319
6320(define-public python-pep8
6321 ;; This package has been renamed to ‘pycodestyle’ and is no longer updated.
6322 ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking
6323 ;; some dependents' test suites, and nothing more.
6324 (package
6325 (name "python-pep8")
6326 (version "1.7.0")
6327 (source
6328 (origin
6329 (method url-fetch)
6330 (uri (pypi-uri "pep8" version))
6331 (sha256
6332 (base32
6333 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
6334 (build-system python-build-system)
6335 (home-page "https://pep8.readthedocs.org/")
6336 (synopsis "Python style guide checker")
6337 (description
6338 "This tools checks Python code against some of the style conventions in
6339PEP 8.")
6340 (license license:expat)))
6341
6342(define-public python2-pep8
6343 (package-with-python2 python-pep8))
6344
6345(define-public python-pyflakes
6346 (package
6347 (name "python-pyflakes")
6348 (version "2.0.0")
6349 (source
6350 (origin
6351 (method url-fetch)
6352 (uri (pypi-uri "pyflakes" version))
6353 (sha256
6354 (base32
6355 "0jba28czyvimdc72llms3f17swp3i8jdcabf5w0j00adfbn64xls"))))
6356 (build-system python-build-system)
6357 (home-page
6358 "https://github.com/pyflakes/pyflakes")
6359 (synopsis "Passive checker of Python programs")
6360 (description
6361 "Pyflakes statically checks Python source code for common errors.")
6362 (license license:expat)))
6363
6364(define-public python2-pyflakes
6365 (package-with-python2 python-pyflakes))
6366
6367(define-public python-mccabe
6368 (package
6369 (name "python-mccabe")
6370 (version "0.6.1")
6371 (source
6372 (origin
6373 (method url-fetch)
6374 (uri (pypi-uri "mccabe" version))
6375 (sha256
6376 (base32
6377 "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx"))))
6378 (build-system python-build-system)
6379 (native-inputs
6380 `(("python-pytest" ,python-pytest-bootstrap)
6381 ("python-pytest-runner" ,python-pytest-runner)))
6382 (home-page "https://github.com/flintwork/mccabe")
6383 (synopsis "McCabe checker, plugin for flake8")
6384 (description
6385 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
6386complexity of Python source code.")
6387 (license license:expat)))
6388
6389(define-public python2-mccabe
6390 (package-with-python2 python-mccabe))
6391
6392(define-public python-mccabe-0.2.1
6393 (package (inherit python-mccabe)
6394 (version "0.2.1")
6395 (source
6396 (origin
6397 (method url-fetch)
6398 (uri (pypi-uri "mccabe" version))
6399 (sha256
6400 (base32
6401 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
6402
6403(define-public python2-mccabe-0.2.1
6404 (package-with-python2 python-mccabe-0.2.1))
6405
6406;; Flake8 2.4.1 requires an older version of pep8.
6407;; This should be removed ASAP.
6408(define-public python-pep8-1.5.7
6409 (package (inherit python-pep8)
6410 (version "1.5.7")
6411 (source
f3576970
RW
6412 (origin
6413 (method url-fetch)
6414 (uri (pypi-uri "pep8" version))
6415 (sha256
6416 (base32
6417 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
44d10b1f
RW
6418 (arguments
6419 ;; XXX Tests not compatible with Python 3.5.
6420 '(#:tests? #f))))
6421
6422(define-public python2-pep8-1.5.7
6423 (package-with-python2 python-pep8-1.5.7))
6424
6425;; Flake8 2.4.1 requires an older version of pyflakes.
6426;; This should be removed ASAP.
6427(define-public python-pyflakes-0.8.1
6428 (package (inherit python-pyflakes)
6429 (version "0.8.1")
6430 (source
8c4dffb5
RW
6431 (origin
6432 (method url-fetch)
6433 (uri (pypi-uri "pyflakes" version))
6434 (sha256
6435 (base32
6436 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
44d10b1f
RW
6437 (arguments
6438 ;; XXX Tests not compatible with Python 3.5.
6439 '(#:tests? #f))))
6440
6441(define-public python2-pyflakes-0.8.1
6442 (package-with-python2 python-pyflakes-0.8.1))
6443
6444;; This package is used by hypothesis which has thousands of dependent packages.
6445;; FIXME: Consolidate this with "python-flake8" below in the next rebuild cycle.
6446(define-public python-flake8-3.5
6447 (package
6448 (name "python-flake8")
6449 (version "3.5.0")
6450 (source
6451 (origin
6452 (method url-fetch)
6453 (uri (pypi-uri "flake8" version))
6454 (sha256
6455 (base32
6456 "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj"))))
6457 (build-system python-build-system)
6458 (arguments
6459 `(#:phases
6460 (modify-phases %standard-phases
6461 ;; Two errors don't seem to have assigned codes.
6462 (add-after 'unpack 'delete-broken-test
6463 (lambda _ (delete-file "tests/unit/test_pyflakes_codes.py") #t))
6464 (add-after 'unpack 'fix-problem-with-pycodestyle
6465 (lambda _
6466 ;; See https://gitlab.com/pycqa/flake8/merge_requests/230
6467 ;; This should no longer be needed with the next release.
6468 (substitute* "setup.py"
6469 (("PEP8_PLUGIN\\('break_around_binary_operator'\\),")
6470 "PEP8_PLUGIN('break_after_binary_operator'),\
6471PEP8_PLUGIN('break_before_binary_operator'),"))
6472 #t))
6473 (delete 'check)
6474 (add-after 'install 'check
6475 (lambda* (#:key inputs outputs #:allow-other-keys)
6476 (add-installed-pythonpath inputs outputs)
6477 (invoke "pytest" "-v")
6478 #t)))))
6479 (propagated-inputs
6480 `(("python-pycodestyle" ,python-pycodestyle)
6481 ("python-pyflakes" ,python-pyflakes)
6482 ("python-mccabe" ,python-mccabe)))
6483 (native-inputs
6484 `(("python-mock" ,python-mock)
6485 ("python-pytest" ,python-pytest-bootstrap)
6486 ("python-pytest-runner" ,python-pytest-runner)))
6487 (home-page "https://gitlab.com/pycqa/flake8")
6488 (synopsis
6489 "The modular source code checker: pep8, pyflakes and co")
6490 (description
6491 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
6492 (properties `((python2-variant . ,(delay python2-flake8-3.5))))
6493 (license license:expat)))
6494
6495(define-public python2-flake8-3.5
6496 (let ((base (package-with-python2 (strip-python2-variant python-flake8-3.5))))
6497 (package (inherit base)
6498 (propagated-inputs
6499 `(("python2-configparser" ,python2-configparser)
6500 ("python2-enum34" ,python2-enum34)
6501 ,@(package-propagated-inputs base))))))
6502
6503;; Version 3.5.0 has compatibility issues with Pyflakes 2.0, so we need
6504;; this newer version. Keep it as a separate variable for now to avoid
6505;; rebuilding "python-hypothesis"; this should be removed in the next
6506;; rebuild cycle.
6507(define-public python-flake8
6508 (package
6509 (inherit python-flake8-3.5)
6510 (version "3.6.0")
6511 (source (origin
6512 (method url-fetch)
6513 (uri (pypi-uri "flake8" version))
6514 (sha256
6515 (base32
6516 "0w0nprx22rbvrrkbfx9v5jc5gskbm08g219l7r8wai8zfswgadba"))))
6517 (arguments
6518 (substitute-keyword-arguments (package-arguments python-flake8-3.5)
6519 ((#:phases phases)
6520 `(modify-phases ,phases
6521 (delete 'delete-broken-test)
6522 (delete 'fix-problem-with-pycodestyle)))))
6523 (properties `((python2-variant . ,(delay python2-flake8))))))
6524
6525(define-public python2-flake8
6526 (let ((base (package-with-python2 (strip-python2-variant python-flake8))))
6527 (package (inherit base)
6528 (propagated-inputs
6529 (package-propagated-inputs python2-flake8-3.5)))))
6530
6531;; python-hacking requires flake8 <2.6.0.
6532(define-public python-flake8-2.5
6533 (package
6534 (inherit python-flake8)
6535 (version "2.5.5")
6536 (source (origin
6537 (method url-fetch)
6538 (uri (pypi-uri "flake8" version))
6539 (sha256
6540 (base32
6541 "1snylqwbmrylbx3r1wpz8ggk98f6bcag4441ag8mm2l7wyn58sij"))))
6542 (propagated-inputs
6543 `(("python-pep8" ,python-pep8)
6544 ,@(package-propagated-inputs python-flake8)))
6545 (properties `((python2-variant . ,(delay python2-flake8-2.5))))))
6546
6547(define-public python2-flake8-2.5
6548 (package
6549 (inherit python2-flake8)
6550 (version (package-version python-flake8-2.5))
6551 (source (origin
6552 (inherit (package-source python-flake8-2.5))))
6553 (propagated-inputs
6554 `(("python2-pep8" ,python2-pep8)
6555 ,@(package-propagated-inputs python2-flake8)))))
6556
6557(define-public python-flake8-polyfill
6558 (package
6559 (name "python-flake8-polyfill")
6560 (version "1.0.2")
6561 (source
6562 (origin
6563 (method url-fetch)
6564 (uri (pypi-uri "flake8-polyfill" version))
6565 (sha256
6566 (base32
6567 "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4"))))
6568 (build-system python-build-system)
6569 (arguments
6570 '(#:phases
6571 (modify-phases %standard-phases
6572 (replace 'check
6573 (lambda _
6574 (setenv "PYTHONPATH"
6575 (string-append (getcwd) "/build/lib:"
6576 (getenv "PYTHONPATH")))
4f0a0894 6577 (invoke "py.test" "-v"))))))
44d10b1f
RW
6578 (native-inputs
6579 `(("python-flake8" ,python-flake8)
6580 ("python-mock" ,python-mock)
6581 ("python-pep8" ,python-pep8)
6582 ("python-pycodestyle" ,python-pycodestyle)
6583 ("python-pytest" ,python-pytest)))
6584 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
6585 (synopsis "Polyfill package for Flake8 plugins")
6586 (description
6587 "This package that provides some compatibility helpers for Flake8
6588plugins that intend to support Flake8 2.x and 3.x simultaneously.")
6589 (license license:expat)))
6590
6591(define-public python2-flake8-polyfill
6592 (package-with-python2 python-flake8-polyfill))
6593
6594(define-public python-mistune
6595 (package
6596 (name "python-mistune")
6597 (version "0.8.4")
6598 (source
6599 (origin
6600 (method url-fetch)
6601 (uri (pypi-uri "mistune" version))
6602 (sha256
6603 (base32
6604 "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr"))))
6605 (build-system python-build-system)
6606 (native-inputs
6607 `(("python-nose" ,python-nose)
6608 ("python-cython" ,python-cython)))
6609 (home-page "https://github.com/lepture/mistune")
6610 (synopsis "Markdown parser in pure Python")
6611 (description "This package provides a fast markdown parser in pure
6612Python.")
6613 (license license:bsd-3)))
6614
6615(define-public python2-mistune
6616 (package-with-python2 python-mistune))
6617
6618(define-public python-markdown
6619 (package
6620 (name "python-markdown")
ceb1936a 6621 (version "3.1.1")
44d10b1f
RW
6622 (source
6623 (origin
6624 (method url-fetch)
6625 (uri (pypi-uri "Markdown" version))
6626 (sha256
6627 (base32
ceb1936a 6628 "0yhylk4ffqqs7x086fav4pnfsl1021v7lghznzkififprmmqfl1f"))))
44d10b1f
RW
6629 (build-system python-build-system)
6630 (native-inputs
6631 `(("python-nose" ,python-nose)
6632 ("python-pyyaml" ,python-pyyaml)))
6633 (home-page "https://python-markdown.github.io/")
6634 (synopsis "Python implementation of Markdown")
6635 (description
6636 "This package provides a Python implementation of John Gruber's
6637Markdown. The library features international input, various Markdown
6638extensions, and several HTML output formats. A command line wrapper
6639markdown_py is also provided to convert Markdown files to HTML.")
6640 (license license:bsd-3)))
6641
6642(define-public python2-markdown
6643 (package-with-python2 python-markdown))
6644
6645(define-public python-ptyprocess
6646 (package
6647 (name "python-ptyprocess")
6648 (version "0.5.2")
6649 (source
6650 (origin
6651 (method url-fetch)
6652 (uri (pypi-uri "ptyprocess" version))
6653 (sha256
6654 (base32
6655 "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6"))))
6656 (build-system python-build-system)
6657 (native-inputs
6658 `(("python-nose" ,python-nose)))
6659 (arguments
6660 `(#:phases
6661 (modify-phases %standard-phases
6662 (replace 'check
7904d6fa 6663 (lambda _ (invoke "nosetests"))))))
44d10b1f
RW
6664 (home-page "https://github.com/pexpect/ptyprocess")
6665 (synopsis "Run a subprocess in a pseudo terminal")
6666 (description
6667 "This package provides a Python library used to launch a subprocess in a
6668pseudo terminal (pty), and interact with both the process and its pty.")
6669 (license license:isc)))
6670
6671(define-public python2-ptyprocess
6672 (package-with-python2 python-ptyprocess))
6673
6674(define-public python-cram
6675 (package
6676 (name "python-cram")
6677 (version "0.7")
6678 (home-page "https://bitheap.org/cram/")
6679 (source (origin
6680 (method url-fetch)
6681 (uri (list (string-append home-page "cram-"
6682 version ".tar.gz")
6683 (pypi-uri "cram" version)))
6684 (sha256
6685 (base32
6686 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
6687 (arguments
6688 '(#:phases
6689 (modify-phases %standard-phases
6690 (add-after 'unpack 'patch-source
6691 (lambda _
6692 (substitute* (find-files "cram" ".*\\.py$")
6693 ;; Replace default shell path.
6694 (("/bin/sh") (which "sh")))
6695 (substitute* (find-files "tests" ".*\\.t$")
6696 (("md5") "md5sum")
6697 (("/bin/bash") (which "bash"))
6698 (("/bin/sh") (which "sh")))
6699 (substitute* "cram/_test.py"
6700 ;; This hack works around a bug triggered by substituting
6701 ;; the /bin/sh paths. "tests/usage.t" compares the output of
6702 ;; "cram -h", which breaks the output at 80 characters. This
6703 ;; causes the line showing the default shell to break into two
6704 ;; lines, but the test expects a single line...
6705 (("env\\['COLUMNS'\\] = '80'")
6706 "env['COLUMNS'] = '160'"))
6707 #t))
6708 (delete 'check)
6709 (add-after 'install 'check
6710 ;; The test phase uses the built library and executable.
6711 ;; It's easier to run it after install since the build
6712 ;; directory contains version-specific PATH.
6713 (lambda* (#:key inputs outputs #:allow-other-keys)
6714 (add-installed-pythonpath inputs outputs)
6715 (setenv "PATH" (string-append (getenv "PATH") ":"
6716 (assoc-ref outputs "out") "/bin"))
2d7db192 6717 (invoke "make" "test"))))))
44d10b1f
RW
6718 (build-system python-build-system)
6719 (native-inputs
6720 `(("python-coverage" ,python-coverage)
6721 ("which" ,which)))
6722 (synopsis "Simple testing framework for command line applications")
6723 (description
6724 "Cram is a functional testing framework for command line applications.
6725Cram tests look like snippets of interactive shell sessions. Cram runs each
6726command and compares the command output in the test with the command’s actual
6727output.")
6728 (license license:gpl2+)))
6729
6730(define-public python2-cram
6731 (package-with-python2 python-cram))
6732
6733(define-public python-straight-plugin
6734 (package
6735 (name "python-straight-plugin")
6736 (version "1.4.1")
6737 (source
6738 (origin
6739 (method url-fetch)
6740 (uri (pypi-uri "straight.plugin" version))
6741 (sha256
6742 (base32
6743 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6744 (build-system python-build-system)
6745 (home-page "https://github.com/ironfroggy/straight.plugin")
6746 (synopsis "Simple namespaced plugin facility")
6747 (description "Straight Plugin provides a type of plugin you can create from
6748almost any existing Python modules, and an easy way for outside developers to
6749add functionality and customization to your projects with their own plugins.")
6750 (license license:expat)))
6751
6752(define-public python2-straight-plugin
6753 (package-with-python2 python-straight-plugin))
6754
6755(define-public python-fonttools
6756 (package
6757 (name "python-fonttools")
6758 (version "3.28.0")
6759 (source (origin
6760 (method url-fetch)
6761 (uri (pypi-uri "fonttools" version ".zip"))
6762 (sha256
6763 (base32
6764 "0vsvjhidpb5kywpjgz1j3fywzkddxkb0afqai18qa3h6lqjyxwpb"))))
6765 (build-system python-build-system)
6766 (native-inputs
6767 `(("unzip" ,unzip)
6768 ("python-pytest" ,python-pytest)
6769 ("python-pytest-runner" ,python-pytest-runner)))
6770 (home-page "https://github.com/behdad/fonttools")
6771 (synopsis "Tools to manipulate font files")
6772 (description
6773 "FontTools/TTX is a library to manipulate font files from Python. It
6774supports reading and writing of TrueType/OpenType fonts, reading and writing
6775of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6776also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6777from an XML-based format.")
6778 (license license:expat)))
6779
6780(define-public python2-fonttools
6781 (package-with-python2 python-fonttools))
6782
6783(define-public python-ly
6784 (package
6785 (name "python-ly")
6786 (version "0.9.5")
6787 (source
6788 (origin
6789 (method url-fetch)
6790 (uri (pypi-uri name version))
6791 (sha256
6792 (base32
6793 "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl"))))
6794 (build-system python-build-system)
6795 (arguments
6796 ;; FIXME: Some tests need network access.
6797 '(#:tests? #f))
6798 (synopsis "Tool and library for manipulating LilyPond files")
6799 (description "This package provides a Python library to parse, manipulate
6800or create documents in LilyPond format. A command line program ly is also
6801provided that can be used to do various manipulations with LilyPond files.")
6802 (home-page "https://pypi.python.org/pypi/python-ly")
6803 (license license:gpl2+)))
6804
6805(define-public python-appdirs
6806 (package
6807 (name "python-appdirs")
6808 (version "1.4.3")
6809 (source
6810 (origin
6811 (method url-fetch)
6812 (uri (pypi-uri "appdirs" version))
6813 (sha256
6814 (base32
6815 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
6816 (build-system python-build-system)
6817 (home-page "https://github.com/ActiveState/appdirs")
6818 (synopsis
6819 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6820 (description
6821 "This module provides a portable way of finding out where user data
6822should be stored on various operating systems.")
6823 (license license:expat)))
6824
6825(define-public python2-appdirs
6826 (package-with-python2 python-appdirs))
6827
6828(define-public python-llfuse
6829 (package
6830 (name "python-llfuse")
6831 (version "1.3.5")
6832 (source (origin
6833 (method url-fetch)
6834 (uri (pypi-uri "llfuse" version ".tar.bz2"))
6835 (sha256
6836 (base32
6837 "1n7a90jww3ly49fm7x27m3xw3la3qfrnykcakga654g6kcyjlhbf"))))
6838 (build-system python-build-system)
6839 (inputs
6840 `(("fuse" ,fuse)
6841 ("attr" ,attr)))
6842 (native-inputs
6843 `(("pkg-config" ,pkg-config)))
6844 (synopsis "Python bindings for FUSE")
6845 (description
6846 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6847 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
6848 (license license:lgpl2.0+)
6849 (properties `((python2-variant . ,(delay python2-llfuse))))))
6850
6851(define-public python2-llfuse
6852 (package (inherit (package-with-python2
6853 (strip-python2-variant python-llfuse)))
6854 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6855
6856;; For attic-0.16
6857(define-public python-llfuse-0.41
6858 (package (inherit python-llfuse)
6859 (version "0.41.1")
6860 (source (origin
6861 (method url-fetch)
6862 (uri (string-append
6863 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6864 "llfuse-" version ".tar.bz2"))
6865 (sha256
6866 (base32
6867 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
6868 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6869 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
6870 (license (list license:expat license:lgpl2.0+))))
6871
6872(define-public python-msgpack
6873 (package
6874 (name "python-msgpack")
6875 (version "0.5.6")
6876 (source (origin
6877 (method url-fetch)
6878 (uri (pypi-uri "msgpack" version))
6879 (sha256
6880 (base32
6881 "1hz2dba1nvvn52afg34liijsm7kn65cmn06dl0xbwld6bb4cis0f"))))
6882 (build-system python-build-system)
6883 (arguments
6884 `(#:modules ((guix build utils)
6885 (guix build python-build-system)
6886 (ice-9 ftw)
6887 (srfi srfi-1)
6888 (srfi srfi-26))
6889 #:phases
6890 (modify-phases %standard-phases
6891 (replace 'check
6892 (lambda _
6893 (let ((cwd (getcwd)))
6894 (setenv "PYTHONPATH"
6895 (string-append cwd "/build/"
6896 (find (cut string-prefix? "lib" <>)
6897 (scandir (string-append cwd "/build")))
6898 ":"
6899 (getenv "PYTHONPATH")))
6900 (invoke "pytest" "-v" "test")))))))
6901 (native-inputs
6902 `(("python-pytest" ,python-pytest)))
6903 (synopsis "MessagePack (de)serializer")
6904 (description "MessagePack is a fast, compact binary serialization format,
6905suitable for similar data to JSON. This package provides CPython bindings for
6906reading and writing MessagePack data.")
6907 (home-page "https://pypi.python.org/pypi/msgpack/")
6908 (license license:asl2.0)))
6909
6910;; This msgpack library's name changed from "python-msgpack" to "msgpack" with
6911;; release 0.5. Some packages like borg still call it by the old name for now.
6912;; <https://bugs.gnu.org/30662>
6913(define-public python-msgpack-transitional
6914 (package
6915 (inherit python-msgpack)
6916 (name "python-msgpack-transitional")
6917 (arguments
6918 (substitute-keyword-arguments (package-arguments python-msgpack)
6919 ((#:phases phases)
6920 `(modify-phases ,phases
6921 (add-after 'unpack 'configure-transitional
6922 (lambda _
6923 ;; Keep using the old name.
6924 (substitute* "setup.py"
6925 (("TRANSITIONAL = False")
6926 "TRANSITIONAL = 1"))
6927 #t))))))))
6928
6929(define-public python2-msgpack
6930 (package-with-python2 python-msgpack))
6931
6932(define-public python-netaddr
6933 (package
6934 (name "python-netaddr")
6935 (version "0.7.19")
6936 (source
6937 (origin
6938 (method url-fetch)
6939 (uri (pypi-uri "netaddr" version))
6940 (sha256
6941 (base32
6942 "1zdfadvpq4lmcqzr383gywxn4xyn355kj1n3lk9q2l03vmyfrbiq"))))
6943 (build-system python-build-system)
6944 (arguments `(#:tests? #f)) ;; No tests.
6945 (home-page "https://github.com/drkjam/netaddr/")
6946 (synopsis "Pythonic manipulation of network addresses")
6947 (description
6948 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6949and MAC network addresses.")
6950 (license license:bsd-3)))
6951
6952(define-public python2-netaddr
6953 (package-with-python2 python-netaddr))
6954
dd85eca0
AG
6955(define-public python2-pyroute2
6956 (package
6957 (name "python2-pyroute2")
6958 (version "0.5.6")
6959 (source
6960 (origin
6961 (method url-fetch)
6962 (uri (pypi-uri "pyroute2" version))
6963 (sha256
6964 (base32
6965 "1gmz4r1w0yzj6fjjypnalmfyy0lnfznydyn62gi3wk50j5hhxbny"))))
6966 (build-system python-build-system)
6967 (arguments
6968 `(#:python ,python-2)) ;Python 3.x is not supported
6969 (home-page "https://github.com/svinota/pyroute2")
6970 (synopsis "Python netlink library")
6971 (description
6972 "Pyroute2 is a pure Python netlink library with minimal dependencies.
6973Supported netlink families and protocols include:
6974@itemize
6975@item rtnl, network settings - addresses, routes, traffic controls
6976@item nfnetlink - netfilter API: ipset, nftables, ...
6977@item ipq - simplest userspace packet filtering, iptables QUEUE target
6978@item devlink - manage and monitor devlink-enabled hardware
6979@item generic - generic netlink families
6980 @itemize
6981 @item nl80211 - wireless functions API (basic support)
6982 @item taskstats - extended process statistics
6983 @item acpi_events - ACPI events monitoring
6984 @item thermal_events - thermal events monitoring
6985 @item VFS_DQUOT - disk quota events monitoring
6986 @end itemize
6987@end itemize")
6988 (license license:gpl2+)))
6989
44d10b1f
RW
6990(define-public python-wrapt
6991 (package
6992 (name "python-wrapt")
2271a1dc 6993 (version "1.11.2")
44d10b1f 6994 (source
2271a1dc
MB
6995 (origin
6996 (method url-fetch)
6997 (uri (pypi-uri "wrapt" version))
6998 (sha256
6999 (base32
7000 "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn"))))
44d10b1f
RW
7001 (build-system python-build-system)
7002 (arguments
7003 ;; Tests are not included in the tarball, they are only available in the
7004 ;; git repository.
7005 `(#:tests? #f))
7006 (home-page "https://github.com/GrahamDumpleton/wrapt")
7007 (synopsis "Module for decorators, wrappers and monkey patching")
7008 (description
2271a1dc 7009 "The aim of the wrapt module is to provide a transparent object proxy for
44d10b1f
RW
7010 Python, which can be used as the basis for the construction of function
7011 wrappers and decorator functions.")
7012 (license license:bsd-2)))
7013
7014(define-public python2-wrapt
7015 (package-with-python2 python-wrapt))
7016
7017(define-public python-xlrd
7018 (package
7019 (name "python-xlrd")
7020 (version "1.0.0")
7021 (source (origin
7022 (method url-fetch)
7023 (uri (pypi-uri "xlrd" version))
7024 (sha256
7025 (base32
7026 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
7027 (build-system python-build-system)
7028 (arguments
7029 `(#:phases
7030 (modify-phases %standard-phases
7031 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
7032 ;; run tests instead for now.
45fd0081 7033 (replace 'check (lambda _ (invoke "nosetests"))))))
44d10b1f
RW
7034 (native-inputs `(("python-nose" ,python-nose)))
7035 (home-page "http://www.python-excel.org/")
7036 (synopsis "Library for extracting data from Excel files")
a0909286 7037 (description "This package provides a library to extract data from
44d10b1f
RW
7038spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
7039@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
7040Unicode-aware. It is not intended as an end-user tool.")
7041 (license license:bsd-3)))
7042
7043(define-public python2-xlrd
7044 (package-with-python2 python-xlrd))
7045
7046(define-public python-prettytable
7047 (package
7048 (name "python-prettytable")
7049 (version "0.7.2")
7050 (source
7051 (origin
7052 (method url-fetch)
337c3a1e 7053 (uri (pypi-uri "prettytable" version ".tar.bz2"))
44d10b1f
RW
7054 (sha256
7055 (base32
7056 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7057 (build-system python-build-system)
7058 (home-page "http://code.google.com/p/prettytable/")
7059 (synopsis "Display tabular data in an ASCII table format")
7060 (description
7061 "A library designed to represent tabular data in visually appealing ASCII
7062tables. PrettyTable allows for selection of which columns are to be printed,
7063independent alignment of columns (left or right justified or centred) and
7064printing of sub-tables by specifying a row range.")
7065 (license license:bsd-3)))
7066
7067(define-public python2-prettytable
7068 (package-with-python2 python-prettytable))
7069
7070(define-public python-tables
7071 (package
7072 (name "python-tables")
7073 (version "3.4.4")
7074 (source
7075 (origin
7076 (method url-fetch)
7077 (uri (pypi-uri "tables" version))
7078 (sha256
7079 (base32
7080 "0affz7k8babh8wdmsgrz5jxrd569by2w8ffimcxs9wiaf5rw1idx"))
7081 (modules '((guix build utils)))
7082 (snippet
7083 '(begin
7084 ;; Remove pre-compiled .pyc files from source.
7085 (for-each delete-file-recursively
7086 (find-files "." "__pycache__" #:directories? #t))
7087 (for-each delete-file (find-files "." "\\.pyc$"))
7088 #t))))
7089 (build-system python-build-system)
7090 (arguments
7091 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7092 ;; or "check", so we must override the build and check phases.
7093 #:phases
7094 (modify-phases %standard-phases
7095 (add-after 'unpack 'use-gcc
7096 (lambda _
7097 (substitute* "setup.py"
7098 (("compiler = new_compiler\\(\\)" line)
7099 (string-append line
7100 "\ncompiler.set_executables(compiler='gcc',"
7101 "compiler_so='gcc',"
7102 "linker_exe='gcc',"
7103 "linker_so='gcc -shared')")))
7104 #t))
7105 (replace 'build
7106 (lambda* (#:key inputs #:allow-other-keys)
35d79d61
RW
7107 (invoke "python" "setup.py" "build"
7108 (string-append "--hdf5="
7109 (assoc-ref inputs "hdf5")))))
44d10b1f
RW
7110 (replace 'check
7111 (lambda* (#:key inputs #:allow-other-keys)
35d79d61
RW
7112 (invoke "python" "setup.py" "check"
7113 (string-append "--hdf5="
7114 (assoc-ref inputs "hdf5"))))))))
44d10b1f
RW
7115 (propagated-inputs
7116 `(("python-numexpr" ,python-numexpr)
7117 ("python-numpy" ,python-numpy)))
7118 (native-inputs
7119 `(("python-cython" ,python-cython)
7120 ("pkg-config" ,pkg-config)))
7121 (inputs
7122 `(("hdf5" ,hdf5)
7123 ("bzip2" ,bzip2)
7124 ("zlib" ,zlib)))
7125 (home-page "http://www.pytables.org/")
7126 (synopsis "Hierarchical datasets for Python")
7127 (description "PyTables is a package for managing hierarchical datasets and
7128designed to efficiently cope with extremely large amounts of data.")
7129 (license license:bsd-3)))
7130
7131(define-public python2-tables
7132 (package-with-python2 python-tables))
7133
7134(define-public python-pyasn1
7135 (package
7136 (name "python-pyasn1")
7137 (version "0.4.3")
7138 (source
7139 (origin
7140 (method url-fetch)
7141 (uri (pypi-uri "pyasn1" version))
7142 (sha256
7143 (base32
7144 "1z5h38anjzzrxpraa9iq9llffyx2zs8gx0q6dc1g029miwnn50gv"))))
7145 (build-system python-build-system)
7146 (home-page "http://pyasn1.sourceforge.net/")
7147 (synopsis "ASN.1 types and codecs")
7148 (description
7149 "This is an implementation of ASN.1 types and codecs in Python. It is
7150suitable for a wide range of protocols based on the ASN.1 specification.")
7151 (license license:bsd-2)))
7152
7153(define-public python2-pyasn1
7154 (package-with-python2 python-pyasn1))
7155
7156(define-public python-pyasn1-modules
7157 (package
7158 (name "python-pyasn1-modules")
7159 (version "0.2.2")
7160 (source
7161 (origin
7162 (method url-fetch)
7163 (uri (pypi-uri "pyasn1-modules" version))
7164 (sha256
7165 (base32
7166 "0ivm850yi7ajjbi8j115qpsj95bgxdsx48nbjzg0zip788c3xkx0"))))
7167 (build-system python-build-system)
7168 (propagated-inputs
7169 `(("python-pyasn1" ,python-pyasn1)))
7170 (home-page "https://sourceforge.net/projects/pyasn1/")
7171 (synopsis "ASN.1 codec implementations")
7172 (description
7173 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7174implementations of ASN.1-based codecs and protocols.")
7175 (license license:bsd-3)))
7176
7177(define-public python2-pyasn1-modules
7178 (package-with-python2 python-pyasn1-modules))
7179
7180(define-public python-ipaddress
7181 (package
7182 (name "python-ipaddress")
7183 (version "1.0.22")
7184 (source (origin
7185 (method url-fetch)
7186 (uri (pypi-uri "ipaddress" version))
7187 (sha256
7188 (base32
7189 "0b570bm6xqpjwqis15pvdy6lyvvzfndjvkynilcddjj5x98wfimi"))))
7190 (build-system python-build-system)
7191 (home-page "https://github.com/phihag/ipaddress")
7192 (synopsis "IP address manipulation library")
7193 (description
7194 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7195 in Python. This library is used to create, poke at, and manipulate IPv4 and
7196 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7197 module to older versions of Python.")
7198 (license license:psfl)))
7199
7200(define-public python2-ipaddress
7201 (package-with-python2 python-ipaddress))
7202
7203(define-public python2-ipaddr
7204 (package
7205 (name "python2-ipaddr")
7206 (version "2.1.11")
7207 (source
7208 (origin
7209 (method url-fetch)
7210 (uri (pypi-uri "ipaddr" version))
7211 (sha256
7212 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7213 (build-system python-build-system)
7214 (arguments
7215 `(#:python ,python-2 ;version 2 only
7216 #:phases
7217 (modify-phases %standard-phases
7218 (replace 'check
40b8c4e3 7219 (lambda _ (invoke "python" "ipaddr_test.py"))))))
44d10b1f
RW
7220 (home-page "https://github.com/google/ipaddr-py")
7221 (synopsis "IP address manipulation library")
7222 (description
7223 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7224IPv6 addresses and networks.
7225
7226For new implementations you may prefer to use the standard module
7227@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7228versions of Python.")
7229 (license license:asl2.0)))
7230
7231(define-public python-idna
7232 (package
7233 (name "python-idna")
e95c9837 7234 (version "2.8")
44d10b1f
RW
7235 (source
7236 (origin
7237 (method url-fetch)
7238 (uri (pypi-uri "idna" version))
7239 (sha256
7240 (base32
e95c9837 7241 "01rlkigdxg17sf9yar1jl8n18ls59367wqh59hnawlyg53vb6my3"))))
44d10b1f
RW
7242 (build-system python-build-system)
7243 (home-page "https://github.com/kjd/idna")
7244 (synopsis "Internationalized domain names in applications")
7245 (description
7246 "This is a library to support the Internationalised Domain Names in
7247Applications (IDNA) protocol as specified in RFC 5891. This version of the
7248protocol is often referred to as “IDNA2008” and can produce different results
7249from the earlier standard from 2003. The library is also intended to act as a
7250suitable drop-in replacement for the “encodings.idna” module that comes with
7251the Python standard library but currently only supports the older 2003
7252specification.")
7253 (license license:bsd-4)))
7254
a76e6a69
JM
7255(define-public python-idna-2.7
7256 (package (inherit python-idna)
7257 (version "2.7")
7258 (source (origin
7259 (method url-fetch)
7260 (uri (pypi-uri "idna" version))
7261 (sha256
7262 (base32
7263 "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8"))))))
7264
7265
44d10b1f
RW
7266(define-public python2-idna
7267 (package-with-python2 python-idna))
7268
7269(define-public python-idna-ssl
7270 (package
7271 (name "python-idna-ssl")
7272 (version "1.0.1")
7273 (source
7274 (origin
7275 (method url-fetch)
7276 (uri (pypi-uri "idna-ssl" version))
7277 (sha256
7278 (base32
7279 "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj"))))
7280 (build-system python-build-system)
7281 (arguments
7282 `(#:tests? #f)) ;circular dependency with python-aiohttp
7283 (home-page "https://github.com/aio-libs/idna-ssl")
7284 (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support")
7285 (description "Patch @code{ssl.match_hostname} for Unicode(idna)
7286domains support.")
7287 (license license:expat)))
7288
7289(define-public python-pretend
7290 (package
7291 (name "python-pretend")
7292 (version "1.0.9")
7293 (source
7294 (origin
7295 (method url-fetch)
9f1f22ee 7296 (uri (pypi-uri "pretend" version))
44d10b1f
RW
7297 (sha256
7298 (base32
7299 "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9"))))
7300 (build-system python-build-system)
7301 (home-page "https://github.com/alex/pretend")
7302 (synopsis "Library for stubbing in Python")
7303 (description
7304 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7305technique for writing tests. You may hear the term mixed up with mocks,
7306fakes, or doubles. Basically, a stub is an object that returns pre-canned
7307responses, rather than doing any computation.")
7308 (license license:bsd-3)))
7309
7310(define-public python2-pretend
7311 (package-with-python2 python-pretend))
7312
7313(define-public python-pip
7314 (package
7315 (name "python-pip")
523ba4b1 7316 (version "19.2.1")
44d10b1f
RW
7317 (source
7318 (origin
7319 (method url-fetch)
7320 (uri (pypi-uri "pip" version))
7321 (sha256
7322 (base32
523ba4b1 7323 "100sd12ss4mbdj5lf3wawad29cm573b27765mq098x6xhcj71395"))))
44d10b1f
RW
7324 (build-system python-build-system)
7325 (arguments
7326 '(#:tests? #f)) ; there are no tests in the pypi archive.
7327 (home-page "https://pip.pypa.io/")
7328 (synopsis "Package manager for Python software")
7329 (description
7330 "Pip is a package manager for Python software, that finds packages on the
7331Python Package Index (PyPI).")
7332 (license license:expat)))
7333
7334(define-public python2-pip
7335 (package-with-python2 python-pip))
7336
7337(define-public python-tlsh
7338 (package
7339 (name "python-tlsh")
7340 (version "3.4.5")
7341 (home-page "https://github.com/trendmicro/tlsh")
3e3ff8ad
TGR
7342 (source
7343 (origin
7344 (method git-fetch)
7345 (uri (git-reference
7346 (url "https://github.com/trendmicro/tlsh.git")
7347 (commit (string-append "v" version))))
7348 (file-name (git-file-name name version))
7349 (sha256
7350 (base32 "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll"))))
44d10b1f
RW
7351 (build-system cmake-build-system)
7352 (arguments
7353 '(#:out-of-source? #f
7354 #:phases (modify-phases %standard-phases
7355 (replace
7356 'install
7357 (lambda* (#:key outputs #:allow-other-keys)
7358 ;; Build and install the Python bindings. The underlying
7359 ;; C++ library is apparently not meant to be installed.
7360 (let ((out (assoc-ref outputs "out")))
7361 (with-directory-excursion "py_ext"
7362 (and (system* "python" "setup.py" "build")
7363 (system* "python" "setup.py" "install"
7364 (string-append "--prefix=" out))))))))))
7365 (inputs `(("python" ,python-wrapper))) ;for the bindings
7366 (synopsis "Fuzzy matching library for Python")
7367 (description
7368 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
7369Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
7370value which can be used for similarity comparisons. Similar objects have
7371similar hash values, which allows for the detection of similar objects by
7372comparing their hash values. The byte stream should have a sufficient amount
7373of complexity; for example, a byte stream of identical bytes will not generate
7374a hash value.")
7375 (license license:asl2.0)))
7376
7377(define-public python2-tlsh
7378 (package
7379 (inherit python-tlsh)
7380 (name "python2-tlsh")
7381 (inputs `(("python" ,python-2)))))
7382
7383(define-public python-termcolor
7384 (package
7385 (name "python-termcolor")
7386 (version "1.1.0")
7387 (source
7388 (origin
7389 (method url-fetch)
7390 (uri (pypi-uri "termcolor" version))
7391 (sha256
7392 (base32
7393 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
7394 (build-system python-build-system)
7395 (arguments
7396 ;; There are no tests.
7397 `(#:tests? #f))
7398 (home-page "https://pypi.python.org/pypi/termcolor")
7399 (synopsis "ANSII Color formatting for terminal output")
7400 (description
7401 "This package provides ANSII Color formatting for output in terminals.")
7402 (license license:expat)))
7403
7404(define-public python2-termcolor
7405 (package-with-python2 python-termcolor))
7406
7407(define-public python-libarchive-c
7408 (package
7409 (name "python-libarchive-c")
7410 (version "2.8")
7411 (source (origin
7412 (method url-fetch)
7413 (uri (pypi-uri "libarchive-c" version))
7414 (sha256
7415 (base32
7416 "0qg0v1s9c1xdk9philhnv8k6c6nicvnvfwlc0j9srg90jmdlvm06"))))
7417 (build-system python-build-system)
7418 (arguments
7419 '(#:phases (modify-phases %standard-phases
7420 (add-before
7421 'build 'reference-libarchive
7422 (lambda* (#:key inputs #:allow-other-keys)
7423 ;; Retain the absolute file name of libarchive.so.
7424 (let ((libarchive (assoc-ref inputs "libarchive")))
7425 (substitute* "libarchive/ffi.py"
7426 (("find_library\\('archive'\\)")
7427 (string-append "'" libarchive
7428 "/lib/libarchive.so'"))))))
7429 (replace 'check
7430 (lambda _ (invoke "pytest" "-vv"))))))
7431 (native-inputs
7432 `(("python-mock" ,python-mock)
7433 ("python-pytest" ,python-pytest)))
7434 (inputs
7435 `(("libarchive" ,libarchive)))
7436 (home-page "https://github.com/Changaco/python-libarchive-c")
7437 (synopsis "Python interface to libarchive")
7438 (description
7439 "This package provides Python bindings to libarchive, a C library to
7440access possibly compressed archives in many different formats. It uses
7441Python's @code{ctypes} foreign function interface (FFI).")
7442 (license license:lgpl2.0+)))
7443
7444(define-public python2-libarchive-c
7445 (package-with-python2 python-libarchive-c))
7446
7447(define-public python-file
7448 (package
7449 (inherit file)
7450 (name "python-file")
7451 (build-system python-build-system)
7452 (arguments
7453 '(#:tests? #f ;no tests
7454 #:configure-flags '("--single-version-externally-managed" "--root=/")
7455 #:phases (modify-phases %standard-phases
7456 (add-before 'build 'change-directory
7457 (lambda _
7458 (chdir "python")
7459 #t))
7460 (add-before 'build 'set-library-file-name
7461 (lambda* (#:key inputs #:allow-other-keys)
7462 (let ((file (assoc-ref inputs "file")))
7463 (substitute* "magic.py"
7464 (("find_library\\('magic'\\)")
7465 (string-append "'" file "/lib/libmagic.so'")))
7466 #t))))))
7467 (inputs `(("file" ,file)))
528ea990
LC
7468 (native-inputs (if (%current-target-system)
7469 `(("self" ,this-package))
7470 '()))
44d10b1f
RW
7471 (synopsis "Python bindings to the libmagic file type guesser. Note that
7472this module and the python-magic module both provide a \"magic.py\" file;
7473these two modules, which are different and were developed separately, both
7474serve the same purpose: provide Python bindings for libmagic.")))
7475
7476(define-public python2-file
7477 (package-with-python2 python-file))
7478
7479(define-public python-debian
7480 (package
7481 (name "python-debian")
7482 (home-page "https://salsa.debian.org/python-debian-team/python-debian")
7483 (version "0.1.28")
7484 (source
7485 (origin
7486 (method url-fetch)
7487 (uri (pypi-uri name version))
7488 (sha256
7489 (base32
7490 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
7491 (build-system python-build-system)
7492 (propagated-inputs
7493 `(("python-six" ,python-six)))
7494 (synopsis "Debian package related modules")
7495 (description
7496 ;; XXX: Use @enumerate instead of @itemize to work around
7497 ;; <http://bugs.gnu.org/21772>.
7498 "This package provides Python modules that abstract many formats of
7499Debian-related files, such as:
7500
7501@enumerate
7502@item Debtags information;
7503@item @file{debian/changelog} files;
7504@item packages files, pdiffs;
7505@item control files of single or multiple RFC822-style paragraphs---e.g.
7506 @file{debian/control}, @file{.changes}, @file{.dsc};
7507@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
7508 contained files and meta-information.
7509@end enumerate\n")
7510
7511 ;; Modules are either GPLv2+ or GPLv3+.
7512 (license license:gpl3+)))
7513
7514(define-public python2-debian
7515 (package-with-python2 python-debian))
7516
7517(define-public python-nbformat
7518 (package
7519 (name "python-nbformat")
7520 (version "4.4.0")
7521 (source
7522 (origin
7523 (method url-fetch)
7524 (uri (pypi-uri "nbformat" version))
7525 (sha256
7526 (base32
7527 "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp"))))
7528 (build-system python-build-system)
7529 (arguments `(#:tests? #f)) ; no test target
7530 (propagated-inputs
7531 `(("python-ipython-genutils" ,python-ipython-genutils)
7532 ("python-jsonschema" ,python-jsonschema)
7533 ("python-jupyter-core" ,python-jupyter-core)
7534 ("python-traitlets" ,python-traitlets)))
7535 (home-page "http://jupyter.org")
7536 (synopsis "Jupyter Notebook format")
7537 (description "This package provides the reference implementation of the
7538Jupyter Notebook format and Python APIs for working with notebooks.")
7539 (license license:bsd-3)))
7540
7541(define-public python2-nbformat
7542 (package-with-python2 python-nbformat))
7543
7544(define-public python-bleach
7545 (package
7546 (name "python-bleach")
7547 (version "1.4.3")
7548 (source
7549 (origin
7550 (method url-fetch)
7551 (uri (pypi-uri "bleach" version))
7552 (sha256
7553 (base32
7554 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7555 (build-system python-build-system)
7556 (propagated-inputs
7557 `(("python-html5lib" ,python-html5lib-0.9)
7558 ("python-six" ,python-six)))
7559 (native-inputs
7560 `(("python-nose" ,python-nose)))
7561 (home-page "https://github.com/jsocol/bleach")
7562 (synopsis "Whitelist-based HTML-sanitizing tool")
7563 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7564 (license license:asl2.0)))
7565
7566(define-public python2-bleach
7567 (package-with-python2 python-bleach))
7568
7569(define-public python-entrypoints
7570 (package
7571 (name "python-entrypoints")
a7f1b718 7572 (version "0.3")
44d10b1f
RW
7573 (source
7574 (origin
7575 (method url-fetch)
a7f1b718 7576 (uri (pypi-uri "entrypoints" version))
44d10b1f
RW
7577 (sha256
7578 (base32
a7f1b718 7579 "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7"))))
44d10b1f
RW
7580 (build-system python-build-system)
7581 ;; The package does not come with a setup.py file, so we have to generate
7582 ;; one ourselves.
7583 (arguments
7584 `(#:tests? #f
7585 #:phases
7586 (modify-phases %standard-phases
7587 (add-after 'unpack 'create-setup.py
7588 (lambda _
7589 (call-with-output-file "setup.py"
7590 (lambda (port)
7591 (format port "\
7592from setuptools import setup
7593setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7594" ,version))))))))
7595 (home-page "https://github.com/takluyver/entrypoints")
7596 (synopsis "Discover and load entry points from installed Python packages")
7597 (description "Entry points are a way for Python packages to advertise
7598objects with some common interface. The most common examples are
7599@code{console_scripts} entry points, which define shell commands by
7600identifying a Python function to run. The @code{entrypoints} module contains
7601functions to find and load entry points.")
7602 (license license:expat)))
7603
7604(define-public python2-entrypoints
7605 (package-with-python2 python-entrypoints))
7606
7607(define-public python-nbconvert
7608 (package
7609 (name "python-nbconvert")
7610 (version "5.0.0b1")
7611 (source
7612 (origin
7613 (method url-fetch)
7614 (uri (pypi-uri "nbconvert" version))
7615 (sha256
7616 (base32
7617 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7618 (build-system python-build-system)
7619 (arguments
7620 `(;; The "bdist_egg" target is disabled by default, causing the installation
7621 ;; to fail.
7622 #:configure-flags (list "bdist_egg")
7623 ;; FIXME: 5 failures, 40 errors.
7624 #:tests? #f))
7625 ;; #:phases
7626 ;; (modify-phases %standard-phases
7627 ;; (replace 'check
7628 ;; (lambda _
7629 ;; (zero? (system* "py.test" "-v")))))
7630 (native-inputs
7631 `(("python-pytest" ,python-pytest)))
7632 (propagated-inputs
7633 `(("python-bleach" ,python-bleach)
7634 ("python-entrypoints" ,python-entrypoints)
7635 ("python-jinja2" ,python-jinja2)
7636 ("python-jupyter-core" ,python-jupyter-core)
7637 ("python-mistune" ,python-mistune)
7638 ("python-nbformat" ,python-nbformat)
7639 ("python-pygments" ,python-pygments)
7640 ("python-traitlets" ,python-traitlets)))
7641 (home-page "http://jupyter.org")
7642 (synopsis "Converting Jupyter Notebooks")
7643 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7644notebooks to various other formats via Jinja templates. It allows you to
7645convert an @code{.ipynb} notebook file into various static formats including:
7646
7647@enumerate
7648@item HTML
7649@item LaTeX
7650@item PDF
7651@item Reveal JS
7652@item Markdown (md)
7653@item ReStructured Text (rst)
7654@item executable script
7655@end enumerate\n")
7656 (license license:bsd-3)))
7657
7658(define-public python2-nbconvert
7659 (package-with-python2 python-nbconvert))
7660
44d10b1f
RW
7661(define-public python-notebook
7662 (package
7663 (name "python-notebook")
7664 (version "5.7.4")
7665 (source (origin
7666 (method url-fetch)
7667 (uri (pypi-uri "notebook" version))
7668 (sha256
7669 (base32
7670 "0jm7324mbxljmn9hgapj66q7swyz5ai92blmr0jpcy0h80x6f26r"))))
7671 (build-system python-build-system)
7672 (arguments
7673 `(#:phases
7674 (modify-phases %standard-phases
7675 (replace 'check
7676 (lambda _
7677 ;; These tests require a browser
7678 (delete-file-recursively "notebook/tests/selenium")
7679 ;; Some tests need HOME
7680 (setenv "HOME" "/tmp")
7681 ;; This file contains "warningfilters", which are not supported
7682 ;; by this version of nose.
7683 (delete-file "setup.cfg")
7684 (with-directory-excursion "/tmp"
7685 (invoke "nosetests" "-v"))
7686 #t)))))
7687 (propagated-inputs
7688 `(("python-jupyter-core" ,python-jupyter-core)
7689 ("python-nbformat" ,python-nbformat)
7690 ("python-nbconvert" ,python-nbconvert)
7691 ("python-prometheus-client" ,python-prometheus-client)
7692 ("python-send2trash" ,python-send2trash)
7693 ("python-terminado" ,python-terminado)))
7694 (native-inputs
7695 `(("python-nose" ,python-nose)
7696 ("python-sphinx" ,python-sphinx)
7697 ("python-requests" ,python-requests)))
7698 (home-page "http://jupyter.org/")
7699 (synopsis "Web-based notebook environment for interactive computing")
7700 (description
7701 "The Jupyter HTML notebook is a web-based notebook environment for
7702interactive computing.")
7703 (properties `((python2-variant . ,(delay python2-notebook))))
7704 (license license:bsd-3)))
7705
7706(define-public python2-notebook
7707 (let ((base (package-with-python2
7708 (strip-python2-variant python-notebook))))
7709 (package (inherit base)
7710 (native-inputs
7711 `(("python2-mock" ,python2-mock)
7712 ,@(package-native-inputs base)))
7713 (arguments
7714 (substitute-keyword-arguments (package-arguments base)
7715 ((#:phases phases)
7716 `(modify-phases ,phases
7717 (add-before 'check 'disable-test-case
7718 ;; The test requires network access to localhost. Curiously it
7719 ;; fails with Python 2 only. Simply make the test-case return
7720 ;; immediately.
7721 (lambda _
7722 (substitute*
7723 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7724 (("formats = self.nbconvert_api") "return #")))))))))))
7725
7726(define-public python-widgetsnbextension
7727 (package
7728 (name "python-widgetsnbextension")
7729 (version "3.4.2")
7730 (source
7731 (origin
7732 (method url-fetch)
7733 (uri (pypi-uri "widgetsnbextension" version))
7734 (sha256
7735 (base32
7736 "0rc2nivdy7k4m3vljx7wdh2jh11djapcgwhvzlbs0isl8gl8nqgs"))))
7737 (build-system python-build-system)
7738 (propagated-inputs
7739 `(("python-ipykernel" ,python-ipykernel)
7740 ("python-notebook" ,python-notebook)))
7741 (native-inputs
7742 `(("python-certifi" ,python-certifi)
7743 ("python-nose" ,python-nose)))
7744 (home-page "https://ipython.org")
7745 (synopsis "IPython HTML widgets for Jupyter")
7746 (description "This package provides interactive HTML widgets for Jupyter
7747notebooks.")
7748 (license license:bsd-3)))
7749
7750(define-public python2-widgetsnbextension
7751 (package-with-python2 python-widgetsnbextension))
7752
7753(define-public python-ipywidgets
7754 (package
7755 (name "python-ipywidgets")
7756 (version "5.2.2")
7757 (source
7758 (origin
7759 (method url-fetch)
7760 (uri (pypi-uri "ipywidgets" version))
7761 (sha256
7762 (base32
7763 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7764 (build-system python-build-system)
7765 (propagated-inputs
7766 `(("python-ipython" ,python-ipython)
7767 ("python-traitlets" ,python-traitlets)
7768 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7769 (native-inputs
7770 `(("python-nose" ,python-nose)
7771 ("python-pytest" ,python-pytest)))
7772 (home-page "https://ipython.org")
7773 (synopsis "IPython HTML widgets for Jupyter")
7774 (description "Ipywidgets are interactive HTML widgets for Jupyter
7775notebooks and the IPython kernel. Notebooks come alive when interactive
7776widgets are used. Users gain control of their data and can visualize changes
7777in the data.")
7778 (license license:bsd-3)))
7779
7780(define-public python2-ipywidgets
7781 (package-with-python2 python-ipywidgets))
7782
7783(define-public python-jupyter-console
7784 (package
7785 (name "python-jupyter-console")
becb9cbf 7786 (version "6.0.0")
44d10b1f
RW
7787 (source
7788 (origin
7789 (method url-fetch)
7790 (uri (pypi-uri "jupyter_console" version))
7791 (sha256
7792 (base32
becb9cbf 7793 "1xdjw11cppf1fxvwkw2bk13ckkwas3bdah8baingn9296mvfi31h"))))
44d10b1f 7794 (build-system python-build-system)
44d10b1f
RW
7795 (propagated-inputs
7796 `(("python-ipykernel" ,python-ipykernel)
7797 ("python-jupyter-client" ,python-jupyter-client)
becb9cbf 7798 ("python-prompt-toolkit" ,python-prompt-toolkit)
44d10b1f
RW
7799 ("python-pygments" ,python-pygments)))
7800 (native-inputs
7801 `(("python-nose" ,python-nose)))
7802 (home-page "https://jupyter.org")
7803 (synopsis "Jupyter terminal console")
7804 (description "This package provides a terminal-based console frontend for
7805Jupyter kernels. It also allows for console-based interaction with non-Python
7806Jupyter kernels such as IJulia and IRKernel.")
7807 (license license:bsd-3)))
7808
7809(define-public python2-jupyter-console
8e590c81
RW
7810 (package
7811 (name "python2-jupyter-console")
7812 (version "5.2.0")
7813 (source
7814 (origin
7815 (method url-fetch)
7816 (uri (pypi-uri "jupyter_console" version))
7817 (sha256
7818 (base32
7819 "1kam1qzgwr7srhm5r6aj90di5sws4bq0jmiw15452ddamb9yspal"))))
7820 (build-system python-build-system)
7821 ;; Tests only run in an TTY.
7822 (arguments `(#:tests? #f))
7823 (propagated-inputs
7824 `(("python2-ipykernel" ,python2-ipykernel)
7825 ("python2-jupyter-client" ,python2-jupyter-client)
7826 ("python2-prompt-toolkit" ,python2-prompt-toolkit-1)
7827 ("python2-pygments" ,python2-pygments)))
7828 (native-inputs
7829 `(("python2-nose" ,python2-nose)))
7830 (home-page "https://jupyter.org")
7831 (synopsis "Jupyter terminal console")
7832 (description "This package provides a terminal-based console frontend for
7833Jupyter kernels. It also allows for console-based interaction with non-Python
7834Jupyter kernels such as IJulia and IRKernel.")
7835 (license license:bsd-3)))
44d10b1f
RW
7836
7837;; The python-ipython and python-jupyter-console require each other. To get
7838;; the functionality in both packages working, strip down the
7839;; python-jupyter-console package when using it as an input to python-ipython.
7840(define python-jupyter-console-minimal
7841 (package
7842 (inherit python-jupyter-console)
7843 (name "python-jupyter-console-minimal")
7844 (arguments
7845 (substitute-keyword-arguments
7846 (package-arguments python-jupyter-console)
7847 ((#:phases phases)
7848 `(modify-phases ,phases
7849 (add-after 'install 'delete-bin
7850 (lambda* (#:key outputs #:allow-other-keys)
7851 ;; Delete the bin files, to avoid conflicts in profiles
7852 ;; where python-ipython and python-jupyter-console are
7853 ;; both present.
7854 (delete-file-recursively
7855 (string-append
7856 (assoc-ref outputs "out") "/bin"))))))))
7857 ;; Remove the python-ipython propagated input, to avoid the cycle
7858 (propagated-inputs
7859 (alist-delete
7860 "python-ipython"
7861 (package-propagated-inputs python-jupyter-console)))))
7862
7863(define-public python-qtconsole
7864 (package
7865 (name "python-qtconsole")
7866 (version "4.4.3")
7867 (source
7868 (origin
7869 (method url-fetch)
7870 (uri (pypi-uri "qtconsole" version))
7871 (sha256
7872 (base32
7873 "1b03n1ixzscm0jw97l4dq5iy4fslnqxq5bb8287xb7n2a1gs26xw"))))
7874 (build-system python-build-system)
7875 (arguments
7876 ;; XXX: Tests are disabled, because this package needs python-ipython 7,
7877 ;; but we only have the LTS version 5.x. This means that there might be
7878 ;; runtime errors, but since this is a dependency of the Jupyter package,
7879 ;; and Jupyter can be used without the qtconsole we can overlook this for
7880 ;; now.
7881 `(#:tests? #f
7882 #:phases
7883 (modify-phases %standard-phases
7884 (add-before 'check 'pre-check
7885 (lambda _
7886 (setenv "QT_QPA_PLATFORM" "offscreen")
7887 #t)))))
7888 (propagated-inputs
7889 `(("python-ipykernel" ,python-ipykernel)
7890 ("python-ipython" ,python-ipython)))
7891 (native-inputs
7892 `(("python-pytest" ,python-pytest)))
7893 (home-page "http://jupyter.org")
7894 (synopsis "Jupyter Qt console")
7895 (description "This package provides a Qt-based console for Jupyter with
7896support for rich media output.")
7897 (license license:bsd-3)))
7898
7899(define-public jupyter
7900 (package
7901 (name "jupyter")
7902 (version "1.0.0")
7903 (source
7904 (origin
7905 (method url-fetch)
7906 (uri (pypi-uri "jupyter" version))
7907 (sha256
7908 (base32
7909 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7910 (build-system python-build-system)
7911 (arguments '(#:tests? #f)) ; there are none.
7912 (propagated-inputs
7913 `(("python-ipykernel" ,python-ipykernel)
7914 ("python-ipywidgets" ,python-ipywidgets)
7915 ("python-jupyter-console" ,python-jupyter-console)
7916 ("python-nbconvert" ,python-nbconvert)
7917 ("python-notebook" ,python-notebook)
7918 ("python-qtconsole" ,python-qtconsole)))
7919 (native-search-paths
7920 (list (search-path-specification
7921 (variable "JUPYTER_PATH")
7922 (files '("share/jupyter")))))
7923 (home-page "https://jupyter.org")
7924 (synopsis "Web application for interactive documents")
7925 (description
7926 "The Jupyter Notebook is a web application that allows you to create and
7927share documents that contain live code, equations, visualizations and
7928explanatory text. Uses include: data cleaning and transformation, numerical
7929simulation, statistical modeling, machine learning and much more.")
7930 (license license:bsd-3)))
7931
7932(define-public python-chardet
7933 (package
7934 (name "python-chardet")
7935 (version "3.0.4")
7936 (source
7937 (origin
7938 (method url-fetch)
7939 (uri (pypi-uri "chardet" version))
7940 (sha256
7941 (base32
7942 "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4"))))
7943 (native-inputs
7944 `(("python-hypothesis" ,python-hypothesis)
7945 ("python-pytest" ,python-pytest)
7946 ("python-pytest-runner" ,python-pytest-runner)))
7947 (build-system python-build-system)
7948 (home-page "https://github.com/chardet/chardet")
7949 (synopsis "Universal encoding detector for Python 2 and 3")
7950 (description
7951 "This package provides @code{chardet}, a Python module that can
7952automatically detect a wide range of file encodings.")
7953 (license license:lgpl2.1+)))
7954
7955(define-public python2-chardet
7956 (package-with-python2 python-chardet))
7957
7958(define-public python-docopt
7959 (package
7960 (name "python-docopt")
7961 (version "0.6.2")
7962 (source
7963 (origin
7964 (method url-fetch)
7965 ;; The release on PyPI does not include tests.
7966 (uri (string-append
7967 "https://github.com/docopt/docopt/archive/"
7968 version ".tar.gz"))
7969 (file-name (string-append name "-" version ".tar.gz"))
7970 (sha256
7971 (base32
7972 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7973 (build-system python-build-system)
7974 (native-inputs
7975 `(("python-pytest" ,python-pytest)))
7976 (arguments
7977 `(#:phases
7978 (modify-phases %standard-phases
7979 (replace 'check
7980 (lambda _ (invoke "py.test"))))))
7981 (home-page "http://docopt.org")
7982 (synopsis "Command-line interface description language for Python")
7983 (description "This library allows the user to define a command-line
7984interface from a program's help message rather than specifying it
4ca7207b 7985programmatically with command-line parsers like @code{getopt} and
44d10b1f
RW
7986@code{argparse}.")
7987 (license license:expat)))
7988
7989(define-public python2-docopt
7990 (package-with-python2 python-docopt))
7991
7992(define-public python-pythondialog
7993 (package
7994 (name "python-pythondialog")
7995 (version "3.4.0")
7996 (source
7997 (origin
7998 (method url-fetch)
7999 (uri (pypi-uri "pythondialog" version))
8000 (sha256
8001 (base32
8002 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
8003 (build-system python-build-system)
8004 (arguments
8005 `(#:phases
8006 (modify-phases %standard-phases
8007 (add-after 'unpack 'patch-path
8008 (lambda* (#:key inputs #:allow-other-keys)
8009 (let* ((dialog (assoc-ref inputs "dialog")))
8010 ;; Since this library really wants to grovel the search path, we
8011 ;; must hardcode dialog's store path into it.
8012 (substitute* "dialog.py"
8013 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8014 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8015 #t))))
8016 #:tests? #f)) ; no test suite
8017 (propagated-inputs
8018 `(("dialog" ,dialog)))
8019 (home-page "http://pythondialog.sourceforge.net/")
8020 (synopsis "Python interface to the UNIX dialog utility")
8021 (description "A Python wrapper for the dialog utility. Its purpose is to
8022provide an easy to use, pythonic and comprehensive Python interface to dialog.
8023This allows one to make simple text-mode user interfaces on Unix-like systems")
8024 (license license:lgpl2.1)
8025 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8026
8027(define-public python2-pythondialog
8028 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8029 (package
8030 (inherit base)
8031 (version (package-version python-pythondialog))
8032 (source (origin
8033 (method url-fetch)
8034 (uri (pypi-uri "python2-pythondialog" version))
8035 (sha256
8036 (base32
8037 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
8038
8039(define-public python-configobj
8040 (package
8041 (name "python-configobj")
8042 (version "5.0.6")
8043 (source (origin
8044 (method url-fetch)
b0758fbb 8045 (uri (pypi-uri "configobj" version))
44d10b1f
RW
8046 (sha256
8047 (base32
8048 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
8049 ;; Patch setup.py so it looks for python-setuptools, which is
8050 ;; required to parse the keyword 'install_requires' in setup.py.
8051 (patches (search-patches "python-configobj-setuptools.patch"))))
8052 (build-system python-build-system)
8053 (propagated-inputs
8054 `(("python-six" ,python-six)))
8055 (synopsis "Config file reading, writing and validation")
8056 (description "ConfigObj is a simple but powerful config file reader and
8057writer: an ini file round tripper. Its main feature is that it is very easy to
8058use, with a straightforward programmer’s interface and a simple syntax for
8059config files.")
8060 (home-page "https://github.com/DiffSK/configobj")
8061 (license license:bsd-3)))
8062
8063(define-public python2-configobj
8064 (package-with-python2 python-configobj))
8065
8066(define-public python-configargparse
8067 (package
8068 (name "python-configargparse")
86ae491f 8069 (version "0.14.0")
44d10b1f
RW
8070 (source (origin
8071 (method url-fetch)
8072 (uri (pypi-uri "ConfigArgParse" version))
8073 (sha256
8074 (base32
86ae491f 8075 "149fy4zya0rsnlkvxbbq43cyr8lscb5k4pj1m6n7f1grwcmzwbif"))))
44d10b1f
RW
8076 (build-system python-build-system)
8077 (native-inputs
8078 `(("python-pyyaml" ,python-pyyaml)))
8079 (arguments
8080 `(#:phases
8081 (modify-phases %standard-phases
8082 (replace 'check
8083 (lambda _
8084 ;; Bypass setuptools-shim because one test relies on "setup.py"
8085 ;; being the first argument passed to the python call.
8086 ;;
8087 ;; NOTE: Many tests do not run because they rely on Python's
8088 ;; built-in test.test_argparse, but we remove the unit tests from
8089 ;; our Python installation.
8090 (invoke "python" "setup.py" "test"))))))
8091 (synopsis "Replacement for argparse")
8092 (description "A drop-in replacement for argparse that allows options to also
8093be set via config files and/or environment variables.")
8094 (home-page "https://github.com/bw2/ConfigArgParse")
8095 (license license:expat)))
8096
8097(define-public python2-configargparse
8098 (package-with-python2 python-configargparse))
8099
8100(define-public python-argparse-manpage
8101 (package
8102 (name "python-argparse-manpage")
8103 (version "1.1")
8104 (source
8105 (origin
8106 (method url-fetch)
8107 (uri (pypi-uri "argparse-manpage" version))
8108 (sha256
8109 (base32
8110 "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p"))))
8111 (build-system python-build-system)
8112 (home-page "https://github.com/praiskup/argparse-manpage")
8113 (synopsis "Build manual page from Python's ArgumentParser object")
8114 (description
8115 "This package provides tools to build manual pages from Python's
8116@code{ArgumentParser} object.")
8117 (license license:asl2.0)))
8118
3e8f76d8
RW
8119(define-public python-contextlib2
8120 (package
8121 (name "python-contextlib2")
8122 (version "0.5.5")
8123 (source
8124 (origin
8125 (method url-fetch)
8126 (uri (pypi-uri "contextlib2" version))
8127 (sha256
8128 (base32
8129 "0j6ad6lwwyc9kv71skj098v5l7x5biyj2hs4lc5x1kcixqcr97sh"))))
8130 (build-system python-build-system)
8131 (home-page "http://contextlib2.readthedocs.org/")
8132 (synopsis "Tools for decorators and context managers")
8133 (description "This module is primarily a backport of the Python
81343.2 contextlib to earlier Python versions. Like contextlib, it
8135provides utilities for common tasks involving decorators and context
8136managers. It also contains additional features that are not part of
8137the standard library.")
8138 (license license:psfl)))
8139
44d10b1f
RW
8140(define-public python2-contextlib2
8141 (package
8142 (name "python2-contextlib2")
8143 (version "0.5.5")
8144 (source
8145 (origin
8146 (method url-fetch)
8147 (uri (pypi-uri "contextlib2" version))
8148 (sha256
8149 (base32
8150 "0j6ad6lwwyc9kv71skj098v5l7x5biyj2hs4lc5x1kcixqcr97sh"))))
8151 (build-system python-build-system)
8152 (arguments
8153 `(#:python ,python-2
8154 #:phases
8155 (modify-phases %standard-phases
8156 (replace 'check
8157 (lambda _ (invoke "python" "test_contextlib2.py" "-v"))))))
8158 (native-inputs
8159 `(("python2-unittest2" ,python2-unittest2)))
8160 (home-page "http://contextlib2.readthedocs.org/")
8161 (synopsis "Tools for decorators and context managers")
8162 (description "This module is primarily a backport of the Python
81633.2 contextlib to earlier Python versions. Like contextlib, it
8164provides utilities for common tasks involving decorators and context
8165managers. It also contains additional features that are not part of
8166the standard library.")
8167 (license license:psfl)))
8168
8169(define-public python-texttable
8170 (package
8171 (name "python-texttable")
52cc4892 8172 (version "0.9.1")
44d10b1f
RW
8173 (source
8174 (origin
8175 (method url-fetch)
8176 (uri (pypi-uri "texttable" version))
8177 (sha256
8178 (base32
52cc4892 8179 "0yawv64c0zbawwv6zz84whb32fnb2n9jylwjcfsrcdgh7xvl340i"))))
44d10b1f
RW
8180 (build-system python-build-system)
8181 (arguments '(#:tests? #f)) ; no tests
8182 (home-page "https://github.com/foutaise/texttable/")
8183 (synopsis "Python module for creating simple ASCII tables")
8184 (description "Texttable is a Python module for creating simple ASCII
8185tables.")
8186 (license license:lgpl2.1+)))
8187
8188(define-public python2-texttable
8189 (package-with-python2 python-texttable))
8190
8191(define-public python-atomicwrites
8192 (package
8193 (name "python-atomicwrites")
8194 (version "1.1.5")
8195 (source (origin
8196 (method url-fetch)
8197 (uri (pypi-uri "atomicwrites" version))
8198 (sha256
8199 (base32
8200 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
8201 (build-system python-build-system)
8202 (synopsis "Atomic file writes in Python")
8203 (description "Library for atomic file writes using platform dependent tools
8204for atomic file system operations.")
8205 (home-page "https://github.com/untitaker/python-atomicwrites")
8206 (license license:expat)))
8207
8208(define-public python2-atomicwrites
8209 (package-with-python2 python-atomicwrites))
8210
8211(define-public python-click-threading
8212 (package
8213 (name "python-click-threading")
8214 (version "0.4.4")
8215 (source (origin
8216 (method url-fetch)
8217 (uri (pypi-uri "click-threading" version))
8218 (sha256
8219 (base32
8220 "1rsxc2fbkxlhwhlmxsdjzq3spn284l6rvjfcz9mbb17ibgdgmc5j"))))
8221 (build-system python-build-system)
8222 (propagated-inputs
8223 `(("python-click" ,python-click)))
8224 (synopsis "Utilities for multithreading in Click")
8225 (description "This package provides utilities for multithreading in Click
8226applications.")
8227 (home-page "https://github.com/click-contrib/click-threading")
8228 (license license:expat)))
8229
8230(define-public python-click-log
8231 (package
8232 (name "python-click-log")
8233 (version "0.3.2")
8234 (source (origin
8235 (method url-fetch)
8236 (uri (pypi-uri "click-log" version))
8237 (sha256
8238 (base32
8239 "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n"))))
8240 (build-system python-build-system)
8241 (propagated-inputs
8242 `(("python-click" ,python-click)))
8243 (synopsis "Logging for click applications")
8244 (description "This package provides a Python library for logging Click
8245applications.")
8246 (home-page "https://github.com/click-contrib/click-log")
8247 (license license:expat)))
8248
8249(define-public python-apipkg
8250 (package
8251 (name "python-apipkg")
8252 (version "1.4")
8253 (source (origin
8254 (method url-fetch)
8255 (uri (pypi-uri "apipkg" version))
8256 (sha256
8257 (base32
8258 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8259 (build-system python-build-system)
8260 (native-inputs
8261 `(("python-pytest" ,python-pytest)))
8262 (synopsis "Namespace control and lazy-import mechanism")
8263 (description "With apipkg you can control the exported namespace of a Python
8264package and greatly reduce the number of imports for your users. It is a small
8265pure Python module that works on virtually all Python versions.")
8266 (home-page "https://github.com/pytest-dev/apipkg")
8267 (license license:expat)))
8268
8269(define-public python2-apipkg
8270 (package-with-python2 python-apipkg))
8271
8272(define-public python-execnet
8273 (package
8274 (name "python-execnet")
8275 (version "1.4.1")
8276 (source (origin
8277 (method url-fetch)
8278 (uri (pypi-uri "execnet" version))
8279 (sha256
8280 (base32
8281 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8282 (build-system python-build-system)
8283 (arguments
8284 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8285 ;; The two test failures are caused by the lack of an `ssh` executable.
8286 ;; The test suite can be run with pytest after the 'install' phase.
8287 #:tests? #f))
8288 (native-inputs
8289 `(("python-pytest" ,python-pytest)
8290 ("python-setuptools-scm" ,python-setuptools-scm)))
8291 (propagated-inputs
8292 `(("python-apipkg" ,python-apipkg)))
8293 (synopsis "Rapid multi-Python deployment")
8294 (description "Execnet provides a share-nothing model with
8295channel-send/receive communication for distributing execution across many
8296Python interpreters across version, platform and network barriers. It has a
8297minimal and fast API targeting the following uses:
8298@enumerate
8299@item distribute tasks to (many) local or remote CPUs
8300@item write and deploy hybrid multi-process applications
8301@item write scripts to administer multiple environments
8302@end enumerate")
8303 (home-page "http://codespeak.net/execnet/")
8304 (license license:expat)))
8305
8306(define-public python2-execnet
8307 (package-with-python2 python-execnet))
8308
8309(define-public python-icalendar
8310 (package
8311 (name "python-icalendar")
8312 (version "4.0.3")
8313 (source (origin
8314 (method url-fetch)
8315 (uri (pypi-uri "icalendar" version))
8316 (sha256
8317 (base32
8318 "0mk3dk1dxkcm46jy48v27j2w2349iv4sbimqj1yb5js43mx49hh7"))))
8319 (build-system python-build-system)
8320 (propagated-inputs
8321 `(("python-dateutil" ,python-dateutil)
8322 ("python-pytz" ,python-pytz)))
8323 (synopsis "Python library for parsing iCalendar files")
8324 (description "The icalendar package is a parser/generator of iCalendar
8325files for use with Python.")
8326 (home-page "https://github.com/collective/icalendar")
8327 (license license:bsd-2)))
8328
44d10b1f
RW
8329(define-public python-args
8330 (package
8331 (name "python-args")
8332 (version "0.1.0")
8333 (source (origin
8334 (method url-fetch)
8335 (uri (pypi-uri "args" version))
8336 (sha256
8337 (base32
8338 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8339 (build-system python-build-system)
8340 (home-page "https://github.com/kennethreitz/args")
8341 (synopsis "Command-line argument parser")
8342 (description
8343 "This library provides a Python module to parse command-line arguments.")
8344 (license license:bsd-3)))
8345
8346(define-public python2-args
8347 (package-with-python2 python-args))
8348
8349(define-public python-clint
8350 (package
8351 (name "python-clint")
8352 (version "0.5.1")
8353 (source (origin
8354 (method url-fetch)
8355 (uri (pypi-uri "clint" version))
8356 (sha256
8357 (base32
8358 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8359 (build-system python-build-system)
8360 (arguments
8361 '(#:phases
8362 (modify-phases %standard-phases
8363 (replace 'check
8364 (lambda _ (invoke "py.test" "-v"))))))
8365 (native-inputs
8366 `(("python-pytest" ,python-pytest)))
8367 (propagated-inputs
8368 `(("python-args" ,python-args)))
8369 (home-page "https://github.com/kennethreitz/clint")
8370 (synopsis "Command-line interface tools")
8371 (description
8372 "Clint is a Python module filled with a set of tools for developing
8373command-line applications, including tools for colored and indented
8374output, progress bar display, and pipes.")
8375 (license license:isc)))
8376
8377(define-public python2-clint
8378 (package-with-python2 python-clint))
8379
44d10b1f
RW
8380(define-public python-rply
8381 (package
8382 (name "python-rply")
8383 (version "0.7.5")
8384 (source (origin
8385 (method url-fetch)
8386 (uri (pypi-uri "rply" version))
8387 (sha256
8388 (base32
8389 "0lv428895zxsz43968qx0q9bimwqnfykndz4dpjbq515w2gvzhjh"))))
8390 (build-system python-build-system)
8391 (propagated-inputs
8392 `(("python-appdirs" ,python-appdirs)))
8393 (home-page "https://github.com/alex/rply")
8394 (synopsis "Parser generator for Python")
8395 (description
8396 "This package provides a pure Python based parser generator, that also
8397works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8398with a new public API, and RPython support.")
8399 (license license:bsd-3)))
8400
8401(define-public python2-rply
8402 (package-with-python2 python-rply))
8403
8404(define-public python-hy
8405 (package
8406 (name "python-hy")
8407 (version "0.13.0")
8408 (source (origin
8409 (method url-fetch)
8410 (uri (pypi-uri "hy" version))
8411 (sha256
8412 (base32
8413 "19sfymaksx9jhksfnb15ahid46mzrhdfzz6yy2craz2qnzvpmky8"))))
8414 (build-system python-build-system)
8415 (arguments
8416 '(#:phases
8417 (modify-phases %standard-phases
8418 (replace 'check
8419 (lambda _
8420 ;; Tests require write access to HOME.
8421 (setenv "HOME" "/tmp")
8422 (invoke "nosetests"))))))
8423 (native-inputs
8424 `(("python-coverage" ,python-coverage)
8425 ("python-nose" ,python-nose)))
8426 (propagated-inputs
8427 `(("python-astor" ,python-astor)
8428 ("python-clint" ,python-clint)
8429 ("python-rply" ,python-rply)))
8430 (home-page "http://hylang.org/")
8431 (synopsis "Lisp frontend to Python")
8432 (description
8433 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8434its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8435Python at your fingertips, in Lisp form.")
8436 (license license:expat)))
8437
8438(define-public python2-hy
8439 (package-with-python2 python-hy))
8440
8441(define-public python2-functools32
8442 (package
8443 (name "python2-functools32")
8444 (version "3.2.3-2")
8445 (source
8446 (origin
8447 (method url-fetch)
8448 (uri (pypi-uri "functools32" version))
8449 (sha256
8450 (base32
8451 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
8452 (build-system python-build-system)
8453 (arguments
8454 `(#:python ,python-2
8455 #:tests? #f)) ; no test target
8456 (home-page "https://github.com/MiCHiLU/python-functools32")
8457 (synopsis
8458 "Backport of the functools module from Python 3.2.3")
8459 (description
8460 "This package is a backport of the @code{functools} module from Python
84613.2.3 for use with older versions of Python and PyPy.")
8462 (license license:expat)))
8463
8464(define-public python2-subprocess32
8465 (package
8466 (name "python2-subprocess32")
8467 (version "3.2.7")
8468 (source (origin
8469 (method url-fetch)
8470 (uri (pypi-uri "subprocess32" version))
8471 (sha256
8472 (base32
8473 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
8474 (patches
8475 (search-patches "python2-subprocess32-disable-input-test.patch"))))
8476 (build-system python-build-system)
8477 (arguments
8478 `(#:python ,python-2
8479 ;; The test suite fails with Python > 2.7.13:
8480 ;; import test.support
8481 ;; ImportError: No module named support
8482 #:tests? #f
8483 #:phases
8484 (modify-phases %standard-phases
8485 (add-after 'unpack 'patch-/bin/sh
8486 (lambda _
8487 (substitute* '("subprocess32.py"
8488 "test_subprocess32.py")
8489 (("/bin/sh") (which "sh")))
8490 #t)))))
8491 (home-page "https://github.com/google/python-subprocess32")
8492 (synopsis "Backport of the subprocess module from Python 3.2")
8493 (description
8494 "This is a backport of the @code{subprocess} standard library module
8495from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
8496new features. On POSIX systems it is guaranteed to be reliable when used
8497in threaded applications. It includes timeout support from Python 3.3 but
8498otherwise matches 3.2’s API.")
8499 (license license:psfl)))
8500
8501(define-public python2-futures
8502 (package
8503 (name "python2-futures")
8504 (version "3.2.0")
8505 (source
8506 (origin
8507 (method url-fetch)
8508 (uri (pypi-uri "futures" version))
8509 (sha256
8510 (base32
8511 "0rdjmmsab550kxsssdq49jcniz77zlkpw4pvi9hvib3lsskjmh4y"))))
8512 (build-system python-build-system)
8513 (arguments `(#:python ,python-2
8514 ;; FIXME: Python 2.7.14 moved the test.support library,
8515 ;; but our package has not yet been adjusted. Enable
8516 ;; tests when the python2 package has been fixed.
8517 #:tests? #f))
8518 (home-page "https://github.com/agronholm/pythonfutures")
8519 (synopsis
8520 "Backport of the concurrent.futures package from Python 3.2")
8521 (description
8522 "The concurrent.futures module provides a high-level interface for
8523asynchronously executing callables. This package backports the
8524concurrent.futures package from Python 3.2")
8525 (license license:bsd-3)))
8526
8527(define-public python-promise
8528 (package
8529 (name "python-promise")
8530 (version "0.4.2")
8531 (source
8532 (origin
8533 (method url-fetch)
8534 (uri (pypi-uri "promise" version))
8535 (sha256
8536 (base32
8537 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
8538 (build-system python-build-system)
8539 ;; Tests wants python-futures, which is a python2 only program, and
8540 ;; can't be found by python-promise at test time.
8541 (arguments `(#:tests? #f))
8542 (home-page "https://github.com/syrusakbary/promise")
8543 (synopsis "Promises/A+ implementation for Python")
8544 (description
8545 "Promises/A+ implementation for Python")
8546 (properties `((python2-variant . ,(delay python2-promise))))
8547 (license license:expat)))
8548
8549(define-public python2-promise
8550 (let ((promise (package-with-python2
8551 (strip-python2-variant python-promise))))
8552 (package (inherit promise)
8553 (arguments (substitute-keyword-arguments (package-arguments promise)
8554 ((#:tests? _) #t)))
8555 (native-inputs
8556 `(("python2-futures" ,python2-futures)
8557 ("python2-pytest" ,python2-pytest)
8558 ,@(package-native-inputs promise))))))
8559
d71d85cd
RW
8560(define-public python-progressbar33
8561 (package
8562 (name "python-progressbar33")
8563 (version "2.4")
8564 (source
8565 (origin
8566 (method url-fetch)
8567 (uri (pypi-uri "progressbar33" version))
8568 (sha256
8569 (base32
8570 "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
8571 (build-system python-build-system)
8572 (home-page "http://github.com/germangh/python-progressbar")
8573 (synopsis "Text progress bar library for Python")
8574 (description
8575 "This package provides a text progress bar library for Python. This
8576version only differs from the original @code{progressbar} package in that it
8577uses relative package imports instead of absolute imports, which is necessary
8578for the module to work under Python 3.3.")
8579 ;; Either or both of these licenses may be selected.
8580 (license (list license:lgpl2.1+ license:bsd-3))))
8581
44d10b1f
RW
8582(define-public python-colorama
8583 (package
8584 (name "python-colorama")
8585 (version "0.3.9")
8586 (source
8587 (origin
8588 (method url-fetch)
8589 (uri (pypi-uri "colorama" version))
8590 (sha256
8591 (base32
8592 "1wd1szk0z3073ghx26ynw43gnc140ibln1safgsis6s6z3s25ss8"))))
8593 (build-system python-build-system)
8594 (synopsis "Colored terminal text rendering for Python")
8595 (description "Colorama is a Python library for rendering colored terminal
8596text.")
8597 (home-page "https://pypi.python.org/pypi/colorama")
8598 (license license:bsd-3)))
8599
8600(define-public python2-colorama
8601 (package-with-python2 python-colorama))
8602
8603(define-public python-rsa
8604 (package
8605 (name "python-rsa")
8606 (version "3.4.2")
8607 (source
8608 (origin
8609 (method url-fetch)
8610 (uri (pypi-uri "rsa" version))
8611 (sha256
8612 (base32
8613 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
8614 (build-system python-build-system)
8615 (propagated-inputs
8616 `(("python-pyasn1" ,python-pyasn1)))
8617 (synopsis "Pure-Python RSA implementation")
8618 (description "Python-RSA is a pure-Python RSA implementation. It supports
8619encryption and decryption, signing and verifying signatures, and key
8620generation according to PKCS#1 version 1.5. It can be used as a Python
8621library as well as on the command line.")
8622 (home-page "https://stuvel.eu/rsa")
8623 (license license:asl2.0)))
8624
8625(define-public python2-rsa
8626 (package-with-python2 python-rsa))
8627
8628(define-public python-pluggy
8629 (package
8630 (name "python-pluggy")
8631 (version "0.7.1")
8632 (source
8633 (origin
8634 (method url-fetch)
8635 (uri (pypi-uri "pluggy" version))
8636 (sha256
8637 (base32
8638 "1qbn70mksmr03hac6jgp6fiqc4l7859z8dchx2x950vhlij87swm"))))
8639 (build-system python-build-system)
8640 (native-inputs
8641 `(("python-setuptools-scm" ,python-setuptools-scm)))
8642 (synopsis "Plugin and hook calling mechanism for Python")
8643 (description "Pluggy is an extraction of the plugin manager as used by
8644Pytest but stripped of Pytest specific details.")
8645 (home-page "https://pypi.python.org/pypi/pluggy")
8646 (license license:expat)))
8647
8648(define-public python2-pluggy
8649 (package-with-python2 python-pluggy))
8650
8651(define-public python-tox
8652 (package
8653 (name "python-tox")
8654 (version "2.8.1")
8655 (source
8656 (origin
8657 (method url-fetch)
8658 (uri (pypi-uri "tox" version))
8659 (sha256
8660 (base32
8661 "1drp6mwm8wdypjym15ia8lwjxbhcksb9vzxg4ay5dh4ji57by2ny"))))
8662 (build-system python-build-system)
8663 (arguments
8664 ;; FIXME: Tests require pytest-timeout, which itself requires
8665 ;; pytest>=2.8.0 for installation.
8666 '(#:tests? #f))
8667 (propagated-inputs
8668 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
8669 ("python-py" ,python-py)
8670 ("python-virtualenv" ,python-virtualenv)))
8671 (native-inputs
8672 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
8673 ("python-pytest" ,python-pytest) ; >= 2.3.5
8674 ("python-setuptools-scm" ,python-setuptools-scm)))
8675 (home-page "http://tox.testrun.org/")
8676 (synopsis "Virtualenv-based automation of test activities")
8677 (description "Tox is a generic virtualenv management and test command line
8678tool. It can be used to check that a package installs correctly with
8679different Python versions and interpreters, or run tests in each type of
8680supported environment, or act as a frontend to continuous integration
8681servers.")
8682 (license license:expat)))
8683
8684(define-public python2-tox
8685 (package-with-python2 python-tox))
8686
8687(define-public python-jmespath
8688 (package
8689 (name "python-jmespath")
8690 (version "0.9.3")
8691 (source
8692 (origin
8693 (method url-fetch)
8694 (uri (pypi-uri "jmespath" version))
8695 (sha256
8696 (base32
8697 "0r7wc7fsxmlwzxx9j1j7rms06c6xs6d4sysirdhz1jk2mb4x90ba"))))
8698 (build-system python-build-system)
8699 (native-inputs
8700 `(("python-nose" ,python-nose)))
8701 (synopsis "JSON Matching Expressions")
8702 (description "JMESPath (pronounced “james path”) is a Python library that
8703allows one to declaratively specify how to extract elements from a JSON
8704document.")
8705 (home-page "https://github.com/jmespath/jmespath.py")
8706 (license license:expat)))
8707
8708(define-public python2-jmespath
8709 (package-with-python2 python-jmespath))
8710
8711(define-public python-botocore
8712 (package
7bcf827c
RW
8713 (name "python-botocore")
8714 (version "1.12.149")
8715 (source
8716 (origin
8717 (method url-fetch)
8718 (uri (pypi-uri "botocore" version))
8719 (sha256
8720 (base32
8721 "12597f74khp3ngwr282cb949w0gcqj20rkfc3x275dijavyy5cmf"))))
8722 (build-system python-build-system)
8723 (arguments
8724 ;; FIXME: Many tests are failing.
8725 '(#:tests? #f))
8726 (propagated-inputs
8727 `(("python-dateutil" ,python-dateutil)
8728 ("python-docutils" ,python-docutils)
8729 ("python-jmespath" ,python-jmespath)))
8730 (native-inputs
8731 `(("python-mock" ,python-mock)
8732 ("python-nose" ,python-nose)
8733 ("behave" ,behave)
8734 ("python-tox" ,python-tox)
8735 ("python-urllib3" ,python-urllib3)
8736 ("python-wheel" ,python-wheel)))
8737 (home-page "https://github.com/boto/botocore")
8738 (synopsis "Low-level interface to AWS")
8739 (description "Botocore is a Python library that provides a low-level
44d10b1f 8740interface to the Amazon Web Services (AWS) API.")
7bcf827c 8741 (license license:asl2.0)))
44d10b1f
RW
8742
8743(define-public python2-botocore
8744 (package-with-python2 python-botocore))
8745
8746(define-public python-xdo
8747 (package
8748 (name "python-xdo")
8749 (version "0.3")
8750 (source (origin
8751 (method url-fetch)
8752 (uri (string-append
8753 "http://http.debian.net/debian/pool/main/p/python-xdo/"
8754 "python-xdo_" version ".orig.tar.gz"))
8755 (sha256
8756 (base32
8757 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
8758 (build-system python-build-system)
8759 (arguments
8760 '(#:phases
8761 (modify-phases %standard-phases
8762 (add-before 'install 'patch-libxdo-path
8763 ;; Hardcode the path of dynamically loaded libxdo library.
8764 (lambda* (#:key inputs #:allow-other-keys)
8765 (let ((libxdo (string-append
8766 (assoc-ref inputs "xdotool")
8767 "/lib/libxdo.so")))
8768 (substitute* "xdo/_xdo.py"
8769 (("find_library\\(\"xdo\"\\)")
8770 (simple-format #f "\"~a\"" libxdo)))
8771 #t))))
8772 #:tests? #f)) ; no tests provided
8773 (propagated-inputs
8774 `(("python-six" ,python-six)))
8775 (inputs
8776 `(("xdotool" ,xdotool)
8777 ("libX11" ,libx11)))
8778 (home-page "https://tracker.debian.org/pkg/python-xdo")
8779 (synopsis "Python library for simulating X11 keyboard/mouse input")
8780 (description "Provides bindings to libxdo for manipulating X11 via simulated
8781input. (Note that this is mostly a legacy library; you may wish to look at
8782python-xdo for newer bindings.)")
8783 (license license:bsd-3)))
8784
8785(define-public python2-xdo
8786 (package-with-python2 python-xdo))
8787
8788(define-public python-mako
8789 (package
8790 (name "python-mako")
6bf53ad5 8791 (version "1.1.0")
44d10b1f
RW
8792 (source
8793 (origin
8794 (method url-fetch)
8795 (uri (pypi-uri "Mako" version))
8796 (sha256
8797 (base32
6bf53ad5 8798 "0jqa3qfpykyn4fmkn0kh6043sfls7br8i2bsdbccazcvk9cijsd3"))))
44d10b1f 8799 (build-system python-build-system)
6bf53ad5
MB
8800 (arguments
8801 `(#:phases (modify-phases %standard-phases
8802 (replace 'check
8803 (lambda _
8804 (invoke "pytest" "-vv"))))))
44d10b1f
RW
8805 (propagated-inputs
8806 `(("python-markupsafe" ,python-markupsafe)))
8807 (native-inputs
8808 `(("python-mock" ,python-mock)
44d10b1f 8809 ("python-pytest" ,python-pytest)))
7016e620 8810 (home-page "https://www.makotemplates.org/")
44d10b1f
RW
8811 (synopsis "Templating language for Python")
8812 (description "Mako is a templating language for Python that compiles
8813templates into Python modules.")
8814 (license license:expat)))
8815
8816(define-public python2-mako
8817 (package-with-python2 python-mako))
8818
8819(define-public python-waitress
8820 (package
8821 (name "python-waitress")
8822 (version "1.1.0")
8823 (source
8824 (origin
8825 (method url-fetch)
8826 (uri (pypi-uri "waitress" version))
8827 (patches (search-patches "python-waitress-fix-tests.patch"))
8828 (sha256
8829 (base32
8830 "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k"))))
8831 (build-system python-build-system)
8832 (home-page "https://github.com/Pylons/waitress")
8833 (synopsis "Waitress WSGI server")
8834 (description "Waitress is meant to be a production-quality pure-Python WSGI
8835server with very acceptable performance.")
8836 (license license:zpl2.1)))
8837
8838(define-public python2-waitress
8839 (package-with-python2 python-waitress))
8840
8841(define-public python-pyquery
8842 (package
8843 (name "python-pyquery")
8844 (version "1.2.17")
8845 (source
8846 (origin
8847 (method url-fetch)
8848 (uri (pypi-uri "pyquery" version))
8849 (sha256
8850 (base32
8851 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
8852 (build-system python-build-system)
8853 (native-inputs
8854 `(("python-webob" ,python-webob)
8855 ("python-webtest" ,python-webtest)))
8856 (propagated-inputs
8857 `(("python-lxml" ,python-lxml)
8858 ("python-cssselect" ,python-cssselect)))
8859 (home-page "https://github.com/gawel/pyquery")
8860 (synopsis "Make jQuery-like queries on xml documents")
8861 (description "pyquery allows you to make jQuery queries on xml documents.
8862The API is as much as possible the similar to jQuery. pyquery uses lxml for
8863fast xml and html manipulation.")
8864 (license license:bsd-3)))
8865
44d10b1f
RW
8866(define-public python-anyjson
8867 (package
8868 (name "python-anyjson")
8869 (version "0.3.3")
8870 (source
8871 (origin
8872 (method url-fetch)
8873 (uri (pypi-uri "anyjson" version))
8874 (sha256
8875 (base32
8876 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
8877 (build-system python-build-system)
8878 (arguments
8879 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
8880 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
8881 ;; whatever) so this transformation needs to be done before the tests
8882 ;; can be run. Maybe we could add a build step to transform beforehand
8883 ;; but it could be annoying/difficult.
8884 ;; We can enable tests for the Python 2 version, though, and do below.
8885 #:tests? #f))
8886 (home-page "https://bitbucket.org/runeh/anyjson/")
8887 (synopsis
8888 "Wraps best available JSON implementation in a common interface")
8889 (description
8890 "Anyjson loads whichever is the fastest JSON module installed
8891and provides a uniform API regardless of which JSON implementation is used.")
8892 (license license:bsd-3)
8893 (properties `((python2-variant . ,(delay python2-anyjson))))))
8894
8895(define-public python2-anyjson
8896 (let ((anyjson (package-with-python2
8897 (strip-python2-variant python-anyjson))))
8898 (package
8899 (inherit anyjson)
8900 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
8901 #:tests? #t
8902 ,@(package-arguments anyjson)))
8903 (native-inputs `(("python2-nose" ,python2-nose))))))
8904
8905(define-public python-amqp
8906 (package
8907 (name "python-amqp")
8908 (version "2.3.2")
8909 (source
8910 (origin
8911 (method url-fetch)
8912 (uri (pypi-uri "amqp" version))
8913 (sha256
8914 (base32
8915 "1sv600dgqwpimr6i1g59y9hpn50mc236gdqkr7zin13kvlpx0g87"))))
8916 (build-system python-build-system)
8917 (native-inputs
8918 `(("python-case" ,python-case)
8919 ("python-pytest-sugar" ,python-pytest-sugar)
8920 ("python-mock" ,python-mock)))
8921 (propagated-inputs
8922 `(("python-vine" ,python-vine)))
8923 (home-page "https://github.com/celery/py-amqp")
8924 (synopsis
8925 "Low-level AMQP client for Python (fork of amqplib)")
8926 (description
8927 "This is a fork of amqplib which was originally written by Barry Pederson.
8928It is maintained by the Celery project, and used by kombu as a pure python
8929alternative when librabbitmq is not available.")
8930 (license license:lgpl2.1+)
8931 (properties `((python2-variant . ,(delay python2-amqp))))))
8932
8933(define-public python2-amqp
8934 (let ((amqp (package-with-python2
8935 (strip-python2-variant python-amqp))))
8936 (package
8937 (inherit amqp)
8938 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
8939 ;; unmaintained. Weirdly, does not do this on the python 3
8940 ;; version?
8941 #:tests? #f
8942 ,@(package-arguments amqp))))))
8943
8944(define-public python-txamqp
8945 (package
8946 (name "python-txamqp")
8947 (version "0.8.2")
8948 (source
8949 (origin
8950 (method url-fetch)
8951 (uri (pypi-uri "txAMQP" version))
8952 (sha256
8953 (base32
8954 "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4"))))
8955 (build-system python-build-system)
8956 (propagated-inputs
8957 `(("python-six" ,python-six)
8958 ("python-twisted" ,python-twisted)))
8959 (home-page "https://github.com/txamqp/txamqp")
8960 (synopsis "Communicate with AMQP peers and brokers using Twisted")
8961 (description
8962 "This package provides a Python library for communicating with AMQP peers
8963and brokers using the asynchronous networking framework Twisted. It contains
8964all the necessary code to connect, send and receive messages to/from an
8965AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted. It
8966also includes support for using Thrift RPC over AMQP in Twisted
8967applications.")
8968 (license license:asl2.0)))
8969
8970(define-public python2-txamqp
8971 (package-with-python2 python-txamqp))
8972
8973(define-public python-kombu
8974 (package
8975 (name "python-kombu")
8976 (version "4.2.2")
8977 (source
8978 (origin
8979 (method url-fetch)
8980 (uri (pypi-uri "kombu" version))
8981 (sha256
8982 (base32
8983 "15k8f7mzqr049sg9vi48m19vjykviafk3f0p5xzgw9by0x0kyxjj"))))
8984 (build-system python-build-system)
8985 (native-inputs
8986 `(("python-mock" ,python-mock)
8987 ("python-case" ,python-case)
8988 ("python-pyro4" ,python-pyro4)
8989 ("python-pytest-sugar" ,python-pytest-sugar)
8990 ("python-pytz" ,python-pytz)))
8991 (propagated-inputs
8992 `(("python-anyjson" ,python-anyjson)
8993 ("python-amqp" ,python-amqp)
8994 ("python-redis" ,python-redis)))
8995 (home-page "https://kombu.readthedocs.io")
8996 (synopsis "Message passing library for Python")
8997 (description "The aim of Kombu is to make messaging in Python as easy as
8998possible by providing an idiomatic high-level interface for the AMQ protocol,
8999and also provide proven and tested solutions to common messaging problems.
9000AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9001message orientation, queuing, routing, reliability and security, for which the
9002RabbitMQ messaging server is the most popular implementation.")
9003 (license license:bsd-3)
9004 (properties `((python2-variant . ,(delay python2-kombu))))))
9005
9006(define-public python2-kombu
9007 (let ((kombu (package-with-python2
9008 (strip-python2-variant python-kombu))))
9009 (package
9010 (inherit kombu)
9011 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
9012 ;; It works fine on the python3 variant.
9013 #:tests? #f
9014 ,@(package-arguments kombu)))
9015 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9016 ,@(package-native-inputs kombu))))))
9017
9018(define-public python-billiard
9019 (package
9020 (name "python-billiard")
9021 (version "3.5.0.5")
9022 (source
9023 (origin
9024 (method url-fetch)
9025 (uri (pypi-uri "billiard" version))
9026 (sha256
9027 (base32
9028 "03msmapj3s5zgqk87d646mafz7a01h5bm2wijalgpi0s80ks5na2"))))
9029 (build-system python-build-system)
9030 (native-inputs
9031 `(("python-case" ,python-case)
9032 ("python-pytest" ,python-pytest)))
9033 (home-page "https://github.com/celery/billiard")
9034 (synopsis
9035 "Python multiprocessing fork with improvements and bugfixes")
9036 (description
9037 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9038multiprocessing package itself is a renamed and updated version of R Oudkerk's
9039pyprocessing package. This standalone variant is intended to be compatible with
9040Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
9041 (license license:bsd-3)
9042 (properties `((python2-variant . ,(delay python2-billiard))))))
9043
9044(define-public python2-billiard
9045 (let ((billiard (package-with-python2
9046 (strip-python2-variant python-billiard))))
9047 (package
9048 (inherit billiard)
9049 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9050 ("python2-mock" ,python2-mock)
9051 ,@(package-native-inputs billiard))))))
9052
9053(define-public python-celery
9054 (package
9055 (name "python-celery")
9056 (version "4.2.1")
9057 (source
9058 (origin
9059 (method url-fetch)
9060 (uri (pypi-uri "celery" version))
9061 (sha256
9062 (base32
9063 "0y66rz7z8dfcgs3s0qxmdddlaq57bzbgxgfz896nbp14grkv9nkp"))))
9064 (build-system python-build-system)
9065 (arguments
9066 '(;; TODO The tests fail with Python 3.7
9067 ;; https://github.com/celery/celery/issues/4849
9068 #:tests? #f
9069 #:phases
9070 (modify-phases %standard-phases
9071 (add-after 'unpack 'patch-requirements
9072 (lambda _
9073 (substitute* "requirements/test.txt"
9074 (("pytest>=3\\.0,<3\\.3")
9075 "pytest>=3.0"))
9076 #t)))))
9077 (native-inputs
9078 `(("python-case" ,python-case)
9079 ("python-pytest" ,python-pytest)))
9080 (propagated-inputs
9081 `(("python-pytz" ,python-pytz)
9082 ("python-billiard" ,python-billiard)
9083 ("python-kombu" ,python-kombu)))
9084 (home-page "https://celeryproject.org")
9085 (synopsis "Distributed Task Queue")
9086 (description "Celery is an asynchronous task queue/job queue based on
9087distributed message passing. It is focused on real-time operation, but
9088supports scheduling as well. The execution units, called tasks, are executed
9089concurrently on a single or more worker servers using multiprocessing,
9090Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9091synchronously (wait until ready).")
9092 (license license:bsd-3)
9093 (properties `((python2-variant . ,(delay python2-celery))))))
9094
9095(define-public python2-celery
9096 (let ((celery (package-with-python2
9097 (strip-python2-variant python-celery))))
9098 (package
9099 (inherit celery)
9100 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9101 ("python2-mock" ,python2-mock)
9102 ,@(package-native-inputs celery))))))
9103
9104(define-public python-translitcodec
9105 (package
9106 (name "python-translitcodec")
9107 (version "0.4.0")
9108 (source
9109 (origin
9110 (method url-fetch)
9111 (uri (pypi-uri "translitcodec" version))
9112 (sha256
9113 (base32
9114 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9115 (build-system python-build-system)
9116 (arguments
9117 `(#:tests? #f)) ; no tests provided
9118 (home-page
9119 "https://github.com/claudep/translitcodec")
9120 (synopsis
9121 "Unicode to 8-bit charset transliteration codec")
9122 (description
9123 "This package contains codecs for transliterating ISO 10646 texts into
9124best-effort representations using smaller coded character sets (ASCII,
9125ISO 8859, etc.).")
9126 (license license:expat)))
9127
9128(define-public python2-translitcodec
9129 (package-with-python2 python-translitcodec))
9130
9131(define-public python-editor
9132 (package
9133 (name "python-editor")
9134 (version "0.5")
9135 (source
9136 (origin
9137 (method url-fetch)
9138 (uri (pypi-uri "python-editor" version))
9139 (sha256
9140 (base32
9141 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9142 (build-system python-build-system)
9143 (home-page
9144 "https://github.com/fmoo/python-editor")
9145 (synopsis
9146 "Programmatically open an editor, capture the result")
9147 (description
9148 "python-editor is a library that provides the editor module for
9149programmatically interfacing with your system's $EDITOR.")
9150 (license license:asl2.0)))
9151
9152(define-public python2-editor
9153 (package-with-python2 python-editor))
9154
44d10b1f
RW
9155(define-public python-vobject
9156 (package
9157 (name "python-vobject")
9158 (version "0.9.5")
9159 (source (origin
9160 (method url-fetch)
9161 (uri (pypi-uri "vobject" version))
9162 (sha256
9163 (base32
9164 "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg"))))
9165 (build-system python-build-system)
9166 (arguments
9167 '(;; The test suite relies on some non-portable Windows interfaces.
9168 #:tests? #f))
9169 (propagated-inputs
9170 `(("python-dateutil" ,python-dateutil)
9171 ("python-pyicu" ,python-pyicu)))
9172 (synopsis "Parse and generate vCard and vCalendar files")
9173 (description "Vobject is intended to be a full featured Python package for
9174parsing and generating vCard and vCalendar files. Currently, iCalendar files
9175are supported and well tested. vCard 3.0 files are supported, and all data
9176should be imported, but only a few components are understood in a sophisticated
9177way.")
9178 (home-page "http://eventable.github.io/vobject/")
9179 (license license:asl2.0)))
9180
9181(define-public python2-vobject
9182 (package-with-python2 python-vobject))
9183
9184(define-public python-munkres
9185 (package
9186 (name "python-munkres")
9187 (version "1.0.8")
9188 (source (origin
9189 (method url-fetch)
9190 (uri (pypi-uri "munkres" version))
9191 (sha256
9192 (base32
9193 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
9194 (build-system python-build-system)
9195 (arguments
9196 '(#:tests? #f)) ; no test suite
9197 (home-page "http://software.clapper.org/munkres/")
9198 (synopsis "Implementation of the Munkres algorithm")
9199 (description "The Munkres module provides an implementation of the Munkres
9200algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
9201useful for solving the Assignment Problem.")
9202 (license license:bsd-3)))
9203
9204(define-public python2-munkres
9205 (package-with-python2 python-munkres))
9206
9207(define-public python-whoosh
9208 (package
9209 (name "python-whoosh")
9210 (version "2.7.4")
9211 (source
9212 (origin
9213 (method url-fetch)
9214 (uri (pypi-uri "Whoosh" version))
9215 (sha256
9216 (base32
9217 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
9218 (build-system python-build-system)
9219 (native-inputs
9220 `(("python-pytest" ,python-pytest)))
9221 (home-page "https://bitbucket.org/mchaput/whoosh")
9222 (synopsis "Full text indexing, search, and spell checking library")
9223 (description
9224 "Whoosh is a fast, pure-Python full text indexing, search, and spell
9225checking library.")
9226 (license license:bsd-2)))
9227
9228(define-public python2-whoosh
9229 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
9230 (package (inherit whoosh)
9231 (propagated-inputs
9232 `(("python2-backport-ssl-match-hostname"
9233 ,python2-backport-ssl-match-hostname)
9234 ,@(package-propagated-inputs whoosh))))))
9235
9236(define-public python-pathlib
9237 (package
9238 (name "python-pathlib")
9239 (version "1.0.1")
9240 (source (origin
9241 (method url-fetch)
9242 (uri (pypi-uri "pathlib" version))
9243 (sha256
9244 (base32
9245 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
9246 (build-system python-build-system)
9247 ;; The tests depend on the internal "test" module, which does not provide
9248 ;; a stable interface.
9249 (arguments `(#:tests? #f))
9250 (home-page "https://pathlib.readthedocs.org/")
9251 (synopsis "Object-oriented file system paths")
9252 (description "Pathlib offers a set of classes to handle file system paths.
9253It offers the following advantages over using string objects:
9254
9255@enumerate
9256@item No more cumbersome use of os and os.path functions. Everything can
9257be done easily through operators, attribute accesses, and method calls.
9258@item Embodies the semantics of different path types. For example,
9259comparing Windows paths ignores casing.
9260@item Well-defined semantics, eliminating any inconsistencies or
9261ambiguities (forward vs. backward slashes, etc.).
9262@end enumerate
9263
9264Note: In Python 3.4, pathlib is now part of the standard library. For other
9265Python versions please consider python-pathlib2 instead, which tracks the
9266standard library module. This module (python-pathlib) isn't maintained
9267anymore.")
9268 (license license:expat)))
9269
9270(define-public python2-pathlib
9271 (package-with-python2 python-pathlib))
9272
9273(define-public python2-pathlib2
9274 (package
9275 (name "python2-pathlib2")
9276 (version "2.3.2")
9277 (source (origin
9278 (method url-fetch)
9279 (uri (pypi-uri "pathlib2" version))
9280 (sha256
9281 (base32
9282 "10yb0iv5x2hs631rcppkhbddx799d3h8pcwmkbh2a66ns3w71ccf"))))
9283 (build-system python-build-system)
9284 ;; We only need the the Python 2 variant, since for Python 3 our minimum
9285 ;; version is 3.4 which already includes this package as part of the
9286 ;; standard library.
9287 (arguments
9288 `(#:python ,python-2))
9289 (propagated-inputs
9290 `(("python2-scandir" ,python2-scandir)
9291 ("python2-six" ,python2-six)))
9292 (home-page "https://pypi.python.org/pypi/pathlib2/")
9293 (synopsis "Object-oriented file system paths - backport of standard
9294pathlib module")
9295 (description "The goal of pathlib2 is to provide a backport of standard
9296pathlib module which tracks the standard library module, so all the newest
9297features of the standard pathlib can be used also on older Python versions.
9298
9299Pathlib offers a set of classes to handle file system paths. It offers the
9300following advantages over using string objects:
9301
9302@enumerate
9303@item No more cumbersome use of os and os.path functions. Everything can
9304be done easily through operators, attribute accesses, and method calls.
9305@item Embodies the semantics of different path types. For example,
9306comparing Windows paths ignores casing.
9307@item Well-defined semantics, eliminating any inconsistencies or
9308ambiguities (forward vs. backward slashes, etc.).
9309@end enumerate")
9310 (license license:expat)))
9311
9312(define-public python2-pathlib2-bootstrap
9313 (hidden-package
9314 (package
9315 (inherit python2-pathlib2)
9316 (name "python2-pathlib2-bootstrap")
9317 (propagated-inputs
9318 `(("python2-scandir" ,python2-scandir)
9319 ("python2-six" ,python2-six-bootstrap))))))
9320
9321(define-public python-jellyfish
9322 (package
9323 (name "python-jellyfish")
9324 (version "0.5.6")
9325 (source (origin
9326 (method url-fetch)
9327 (uri (pypi-uri "jellyfish" version))
9328 (sha256
9329 (base32
9330 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
9331 (build-system python-build-system)
9332 (native-inputs
9333 `(("python-pytest" ,python-pytest)))
9334 (home-page "https://github.com/jamesturk/jellyfish")
9335 (synopsis "Approximate and phonetic matching of strings")
9336 (description "Jellyfish uses a variety of string comparison and phonetic
9337encoding algorithms to do fuzzy string matching.")
9338 (license license:bsd-2)
9339 (properties `((python2-variant . ,(delay python2-jellyfish))))))
9340
9341(define-public python2-jellyfish
9342 (let ((jellyfish (package-with-python2
9343 (strip-python2-variant python-jellyfish))))
9344 (package (inherit jellyfish)
9345 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
9346 ,@(package-native-inputs jellyfish))))))
9347
9348(define-public python2-unicodecsv
9349 (package
9350 (name "python2-unicodecsv")
9351 (version "0.14.1")
9352 (source (origin
9353 (method url-fetch)
9354 ;; The test suite is not included in the PyPi release.
9355 ;; https://github.com/jdunck/python-unicodecsv/issues/19
9356 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
9357 "archive/" version ".tar.gz"))
9358 (file-name (string-append name "-" version ".tar.gz"))
9359 (sha256
9360 (base32
9361 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
9362 (build-system python-build-system)
9363 (arguments
9364 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
9365 #:python ,python-2))
9366 (native-inputs
9367 `(("python2-unittest2" ,python2-unittest2)))
9368 (home-page "https://github.com/jdunck/python-unicodecsv")
9369 (synopsis "Unicode CSV module for Python 2")
9370 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
9371module, adding support for Unicode strings.")
9372 (license license:bsd-2)))
9373
9374(define-public python-rarfile
9375 (package
9376 (name "python-rarfile")
9377 (version "2.8")
9378 (source (origin
9379 (method url-fetch)
9380 (uri (pypi-uri "rarfile" version))
9381 (sha256
9382 (base32
9383 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
9384 (build-system python-build-system)
9385 (arguments
9386 '(#:phases
9387 (modify-phases %standard-phases
9388 (replace 'check
9389 ;; Many tests fail, but the installation proceeds.
e59dd341 9390 (lambda _ (invoke "make" "-C" "test" "test"))))))
44d10b1f
RW
9391 (native-inputs
9392 `(("which" ,which))) ; required for tests
9393 (propagated-inputs
9394 `(("libarchive" ,libarchive)))
9395 (home-page "https://github.com/markokr/rarfile")
9396 (synopsis "RAR archive reader for Python")
9397 (description "This is Python module for RAR archive reading. The interface
9398is made as zipfile like as possible.")
9399 (license license:isc)))
9400
9401(define-public python2-rarfile
9402 (package-with-python2 python-rarfile))
9403
9404(define-public python-magic
9405 (package
9406 (name "python-magic")
9407 (version "0.4.15")
9408 (source
9409 (origin
9410 (method url-fetch)
9411 (uri (pypi-uri "python-magic" version))
9412 (sha256
9413 (base32
9414 "1mgwig9pnzgkf86q9ji9pnc99bngms15lfszq5rgqb9db07mqxpk"))
9415 (file-name (string-append name "-" version "-checkout"))))
9416 (build-system python-build-system)
9417 (arguments
9418 ;; The tests are unreliable, so don't run them. The tests fail
9419 ;; under Python3 because they were written for Python2 and
9420 ;; contain import statements that do not work in Python3. One of
9421 ;; the tests fails under Python2 because its assertions are
9422 ;; overly stringent; it relies on comparing output strings which
9423 ;; are brittle and can change depending on the version of
9424 ;; libmagic being used and the system on which the test is
9425 ;; running. In my case, under GuixSD 0.10.0, only one test
9426 ;; failed, and it seems to have failed only because the version
9427 ;; of libmagic that is packaged in Guix outputs a slightly
9428 ;; different (but not wrong) string than the one that the test
9429 ;; expected.
9430 '(#:tests? #f
9431 #:phases (modify-phases %standard-phases
9432 ;; Replace a specific method call with a hard-coded
9433 ;; path to the necessary libmagic.so file in the
9434 ;; store. If we don't do this, then the method call
9435 ;; will fail to find the libmagic.so file, which in
9436 ;; turn will cause any application using
9437 ;; python-magic to fail.
9438 (add-before 'build 'hard-code-path-to-libmagic
9439 (lambda* (#:key inputs #:allow-other-keys)
9440 (let ((file (assoc-ref inputs "file")))
9441 (substitute* "magic.py"
9442 (("ctypes.util.find_library\\('magic'\\)")
9443 (string-append "'" file "/lib/libmagic.so'")))
9444 #t)))
9445 (add-before 'install 'disable-egg-compression
9446 (lambda _
9447 (let ((port (open-file "setup.cfg" "a")))
9448 (display "\n[easy_install]\nzip_ok = 0\n"
9449 port)
9450 (close-port port)
9451 #t))))))
9452 (inputs
9453 ;; python-magic needs to be able to find libmagic.so.
9454 `(("file" ,file)))
9455 (home-page
9456 "https://github.com/ahupp/python-magic")
9457 (synopsis
9458 "File type identification using libmagic")
9459 (description
9460 "This module uses ctypes to access the libmagic file type
9461identification library. It makes use of the local magic database and
9462supports both textual and MIME-type output. Note that this module and
9463the python-file module both provide a \"magic.py\" file; these two
9464modules, which are different and were developed separately, both serve
9465the same purpose: to provide Python bindings for libmagic.")
9466 (license license:expat)))
9467
9468(define-public python2-magic
9469 (package-with-python2 python-magic))
9470
9471(define-public python2-s3cmd
9472 (package
9473 (name "python2-s3cmd")
9474 (version "1.6.1")
9475 (source
9476 (origin
9477 (method url-fetch)
9478 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
9479 "s3cmd-" version ".tar.gz"))
9480 (sha256
9481 (base32
9482 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
9483 (build-system python-build-system)
9484 (arguments
9485 ;; s3cmd is written for python2 only and contains no tests.
9486 `(#:python ,python-2
9487 #:tests? #f))
9488 (propagated-inputs
9489 `(("python2-dateutil" ,python2-dateutil)
9490 ;; The python-file package also provides a magic.py module.
9491 ;; This is an unfortunate state of affairs; however, s3cmd
9492 ;; fails to install if it cannot find specifically the
9493 ;; python-magic package. Thus we include it, instead of using
9494 ;; python-file. Ironically, s3cmd sometimes works better
9495 ;; without libmagic bindings at all:
9496 ;; https://github.com/s3tools/s3cmd/issues/198
9497 ("python2-magic" ,python2-magic)))
9498 (home-page "http://s3tools.org/s3cmd")
9499 (synopsis "Command line tool for S3-compatible storage services")
9500 (description
9501 "S3cmd is a command line tool for uploading, retrieving and managing data
9502in storage services that are compatible with the Amazon Simple Storage
9503Service (S3) protocol, including S3 itself. It supports rsync-like backup,
9504GnuPG encryption, and more. It also supports management of Amazon's
9505CloudFront content delivery network.")
9506 (license license:gpl2+)))
9507
9508(define-public python-pkgconfig
9509 (package
9510 (name "python-pkgconfig")
9511 (version "1.3.1")
9512 (source
9513 (origin
9514 (method url-fetch)
9515 (uri (pypi-uri "pkgconfig" version))
9516 (sha256
9517 (base32
9518 "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb"))))
9519 (build-system python-build-system)
9520 (native-inputs
9521 `(("python-nose" ,python-nose)))
9522 (inputs
9523 `(("pkg-config" ,pkg-config)))
9524 (arguments
9525 `(#:phases
9526 (modify-phases %standard-phases
9527 (add-before 'build 'patch
9528 ;; Hard-code the path to pkg-config.
9529 (lambda _
9530 (substitute* "pkgconfig/pkgconfig.py"
9531 (("cmd = 'pkg-config")
9532 (string-append "cmd = '" (which "pkg-config"))))
9533 #t))
9534 (replace 'check
9535 (lambda _
9536 (invoke "nosetests" "test.py"))))))
9537 (home-page "https://github.com/matze/pkgconfig")
9538 (synopsis "Python interface for pkg-config")
9539 (description "This module provides a Python interface to pkg-config. It
9540can be used to find all pkg-config packages, check if a package exists,
9541check if a package meets certain version requirements, query CFLAGS and
9542LDFLAGS and parse the output to build extensions with setup.py.")
9543 (license license:expat)))
9544
9545(define-public python2-pkgconfig
9546 (package-with-python2 python-pkgconfig))
9547
9548(define-public python-bz2file
9549 (package
9550 (name "python-bz2file")
9551 (version "0.98")
9552 (source
9553 (origin
9554 (method url-fetch)
9555 (uri (pypi-uri "bz2file" version))
9556 (sha256
9557 (base32
9558 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
9559 (build-system python-build-system)
9560 (arguments
9561 `(#:tests? #f)) ; Tests use deprecated python modules.
9562 (home-page "https://github.com/nvawda/bz2file")
9563 (synopsis "Read and write bzip2-compressed files")
9564 (description
9565 "Bz2file is a Python library for reading and writing bzip2-compressed
9566files. It contains a drop-in replacement for the I/O interface in the
9567standard library's @code{bz2} module, including features from the latest
9568development version of CPython that are not available in older releases.")
9569 (license license:asl2.0)))
9570
9571(define-public python2-bz2file
9572 (package-with-python2 python-bz2file))
9573
9574(define-public python-future
9575 (package
9576 (name "python-future")
d5d54030 9577 (version "0.17.1")
44d10b1f
RW
9578 (source
9579 (origin
9580 (method url-fetch)
9581 (uri (pypi-uri "future" version))
9582 (sha256
9583 (base32
d5d54030 9584 "1f2rlqn9rh7adgir52dlbqz69gsab44x0mlm8gf1cs7xvhv54137"))))
44d10b1f
RW
9585 (build-system python-build-system)
9586 ;; Many tests connect to the network or are otherwise flawed.
9587 ;; https://github.com/PythonCharmers/python-future/issues/210
9588 (arguments
9589 `(#:tests? #f))
9590 (home-page "http://python-future.org")
9591 (synopsis "Single-source support for Python 3 and 2")
9592 (description
9593 "@code{python-future} is the missing compatibility layer between Python 2 and
9594Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
9595to support both Python 2 and Python 3 with minimal overhead.")
9596 (license license:expat)))
9597
9598(define-public python2-future
9599 (package-with-python2 python-future))
9600
9601(define-public python-cysignals
9602 (package
9603 (name "python-cysignals")
8e3e51df 9604 (version "1.9.0")
44d10b1f
RW
9605 (source
9606 (origin
9607 (method url-fetch)
8e3e51df 9608 (uri (pypi-uri "cysignals" version))
44d10b1f
RW
9609 (sha256
9610 (base32
8e3e51df 9611 "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2"))))
44d10b1f
RW
9612 (build-system python-build-system)
9613 (native-inputs
9614 `(("python-cython" ,python-cython)
9615 ("python-sphinx" ,python-sphinx)))
9616 (inputs
9617 `(("pari-gp" ,pari-gp)))
9618 (arguments
9619 `(#:modules ((guix build python-build-system)
9620 ((guix build gnu-build-system) #:prefix gnu:)
9621 (guix build utils))
9622 ;; FIXME: Tests are executed after installation and currently fail
9623 ;; when not installing into standard locations; the author is working
9624 ;; on a fix.
9625 #:tests? #f
9626 #:phases
9627 (modify-phases %standard-phases
9628 (add-before
9629 'build 'configure
9630 (assoc-ref gnu:%standard-phases 'configure)))))
9631 (home-page
9632 "https://github.com/sagemath/cysignals")
9633 (synopsis
9634 "Handling of interrupts and signals for Cython")
9635 (description
9636 "The cysignals package provides mechanisms to handle interrupts (and
9637other signals and errors) in Cython code, using two related approaches,
9638for mixed Cython/Python code or external C libraries and pure Cython code,
9639respectively.")
9640 (license license:lgpl3+)))
9641
9642(define-public python2-cysignals
9643 (package-with-python2 python-cysignals))
9644
9645(define-public python2-shedskin
9646 (package
9647 (name "python2-shedskin")
9648 (version "0.9.4")
9649 (source
9650 (origin
9651 (method url-fetch)
9652 (uri (string-append "https://github.com/shedskin/shedskin/"
9653 "releases/download/v" version
9654 "/shedskin-" version ".tgz"))
9655 (sha256
9656 (base32
9657 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
9658 (build-system python-build-system)
9659 (arguments
9660 `(#:python ,python-2
9661 #:phases (modify-phases %standard-phases
9662 (add-after 'unpack 'fix-resulting-include-libs
9663 (lambda* (#:key inputs #:allow-other-keys)
9664 (let ((libgc (assoc-ref inputs "libgc"))
9665 (pcre (assoc-ref inputs "pcre")))
9666 (substitute* "shedskin/makefile.py"
9667 (("variable == 'CCFLAGS':[ ]*")
9668 (string-append "variable == 'CCFLAGS':\n"
9669 " line += ' -I " pcre "/include"
9670 " -I " libgc "/include'"))
9671 (("variable == 'LFLAGS':[ ]*")
9672 (string-append "variable == 'LFLAGS':\n"
9673 " line += ' -L" pcre "/lib"
9674 " -L " libgc "/lib'")))
9675 #t))))))
9676 (inputs `(("pcre" ,pcre)
9677 ("libgc" ,libgc)))
9678 (home-page "https://shedskin.github.io/")
9679 (synopsis "Experimental Python-2 to C++ Compiler")
9680 (description (string-append "This is an experimental compiler for a subset of
9681Python. It generates C++ code and a Makefile."))
9682 (license (list license:gpl3 license:bsd-3 license:expat))))
9683
9684(define-public python2-rope
9685 (package
9686 (name "python2-rope")
a9ba0a31 9687 (version "0.11.0")
44d10b1f
RW
9688 (source
9689 (origin
9690 (method url-fetch)
9691 (uri (pypi-uri "rope" version))
9692 (sha256
9693 (base32
a9ba0a31 9694 "1cppm0pa9aqgsbkq130lskrzmrvjs5vpiavjjbhpz2fdw52w8251"))))
44d10b1f 9695 (arguments
afb29715 9696 ;; Rope has only partial python3 support, see `python-rope'
44d10b1f
RW
9697 `(#:python ,python-2))
9698 (build-system python-build-system)
9699 (native-inputs
9700 `(("python2-unittest2" ,python2-unittest2)))
9701 (home-page "https://github.com/python-rope/rope")
9702 (synopsis "Refactoring library for Python")
9703 (description "Rope is a refactoring library for Python. It facilitates
9704the renaming, moving and extracting of attributes, functions, modules, fields
9705and parameters in Python 2 source code. These refactorings can also be applied
9706to occurrences in strings and comments.")
9707 (license license:gpl2)))
9708
2c880ef4
LC
9709(define-public python-rope
9710 (package
9711 (inherit python2-rope)
9712 (name "python-rope")
9713 (arguments `(#:python ,python-wrapper
9714 ;; XXX: Only partial python3 support, results in some failing
9715 ;; tests: <https://github.com/python-rope/rope/issues/247>.
9716 #:tests? #f))
9717 (properties `((python2-variant . ,(delay python2-rope))))))
9718
44d10b1f
RW
9719(define-public python-py3status
9720 (package
9721 (name "python-py3status")
77f3d303 9722 (version "3.16")
44d10b1f
RW
9723 (source
9724 (origin
9725 (method url-fetch)
9726 (uri (pypi-uri "py3status" version))
9727 (sha256
9728 (base32
77f3d303 9729 "1xrfph277bgjln3jbpzpgkhxad04fjvj7s3xfil42q1sxi4s3q3g"))))
44d10b1f
RW
9730 (build-system python-build-system)
9731 (inputs
9732 `(("file" ,file)))
9733 (arguments
9734 '(#:phases
9735 (modify-phases %standard-phases
9736 ;; 'file' is used for detection of configuration file encoding
9737 ;; let's make link the dependency to particular input
9738 (add-before 'build 'patch-file-path
9739 (lambda* (#:key inputs #:allow-other-keys)
9740 (let ((file-path (assoc-ref inputs "file")))
9741 (substitute* "py3status/parse_config.py"
9742 (("\\['file', '-b'")
9743 (string-append "['" file-path "/bin/file', '-b'")))
9744 #t))))
9745 #:tests? #f)) ; TODO: Requires many libraries not in Guix.
9746 (home-page "https://github.com/ultrabug/py3status")
9747 (synopsis "Extensible i3status wrapper written in Python")
9748 (description "py3status is an i3status wrapper which extends i3status
9749functionality in a modular way, allowing you to extend your panel with your
9750own code, responding to click events and updating clock every second.")
9751 (license license:bsd-3)))
9752
9753(define-public python-tblib
9754 (package
9755 (name "python-tblib")
9756 (version "1.3.2")
9757 (source (origin
9758 (method url-fetch)
9759 (uri (pypi-uri "tblib" version))
9760 (sha256 (base32
9761 "1rsg8h069kqgncyv8fgzyj6qflk6j10cb78pa5jk34ixwq044vj3"))))
9762 (build-system python-build-system)
9763 (arguments
9764 `(#:phases
9765 (modify-phases %standard-phases
9766 (add-before 'check 'adjust-tests
9767 (lambda _
9768 (when (which "python3")
9769 ;; Adjust the example output to match that of Python 3.7:
9770 ;; <https://github.com/ionelmc/python-tblib/issues/36>.
9771 (substitute* "README.rst"
9772 (("Exception\\('fail',") "Exception('fail'"))
9773 #t)))
9774 (replace 'check
9775 (lambda _
9776 ;; Upstream runs tests after installation and the package itself
9777 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
9778 ;; found.
9779 (setenv "PYTHONPATH"
9780 (string-append (getcwd) "/build/lib:"
9781 (getenv "PYTHONPATH")))
9782 (invoke "py.test" "-vv" "tests" "README.rst"))))))
9783 (native-inputs
9784 `(("python-pytest" ,python-pytest)
9785 ("python-six" ,python-six)))
9786 (home-page "https://github.com/ionelmc/python-tblib")
9787 (synopsis "Traceback serialization library")
9788 (description
9789 "Traceback serialization allows you to:
9790
9791@enumerate
9792@item Pickle tracebacks and raise exceptions with pickled tracebacks in
9793different processes. This allows better error handling when running code over
9794multiple processes (imagine multiprocessing, billiard, futures, celery etc).
9795
9796@item Parse traceback strings and raise with the parsed tracebacks.
9797@end enumerate\n")
9798 (license license:bsd-3)))
9799
9800(define-public python2-tblib
9801 (package-with-python2 python-tblib))
9802
9803(define-public python-greenlet
9804 (package
9805 (name "python-greenlet")
9806 (version "0.4.15")
9807 (source (origin
9808 (method url-fetch)
9809 (uri (pypi-uri "greenlet" version))
9810 (sha256
9811 (base32
9812 "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll"))))
9813 (build-system python-build-system)
9814 (home-page "https://greenlet.readthedocs.io/")
9815 (synopsis "Lightweight in-process concurrent programming")
9816 (description
9817 "Greenlet package is a spin-off of Stackless, a version of CPython
9818that supports micro-threads called \"tasklets\". Tasklets run
9819pseudo-concurrently (typically in a single or a few OS-level threads) and
9820are synchronized with data exchanges on \"channels\".")
9821 (license (list license:psfl license:expat))))
9822
9823(define-public python2-greenlet
9824 (package-with-python2 python-greenlet))
9825
9826(define-public python-objgraph
9827 (package
9828 (name "python-objgraph")
9829 (version "3.4.0")
9830 (source
9831 (origin
9832 (method url-fetch)
9833 (uri (pypi-uri "objgraph" version))
9834 (sha256
9835 (base32
9836 "184m09am5gpbqfaiy7l0hwh476mczbrly1dffs0rw2p1d1i2q32a"))))
9837 (build-system python-build-system)
9838 (propagated-inputs
9839 `(("python-graphviz" ,python-graphviz)))
9840 (native-inputs
9841 `(("python-mock" ,python-mock)
9842 ("graphviz" ,graphviz)))
9843 (home-page "https://mg.pov.lt/objgraph/")
9844 (synopsis "Draw Python object reference graphs with graphviz")
9845 (description
9846 "This package provides tools to draw Python object reference graphs with
9847graphviz.")
9848 (license license:expat)))
9849
9850(define-public python-gevent
9851 (package
9852 (name "python-gevent")
9853 (version "1.3.7")
9854 (source (origin
9855 (method url-fetch)
9856 (uri (pypi-uri "gevent" version))
9857 (sha256
9858 (base32
9859 "0b0fr04qdk1p4sniv87fh8z5psac60x01pv054kpgi94520g81iz"))
9860 (modules '((guix build utils)))
9861 (snippet
9862 '(begin
9863 ;; unbunding libev and c-ares
9864 (delete-file-recursively "deps")
9865 #t))))
9866 (build-system python-build-system)
9867 (arguments
9868 `(#:modules ((ice-9 ftw)
9869 (ice-9 match)
9870 (srfi srfi-26)
9871 (guix build utils)
9872 (guix build python-build-system))
9873 #:phases (modify-phases %standard-phases
9874 (add-after 'unpack 'unpack-libev
9875 (lambda* (#:key inputs #:allow-other-keys)
9876 (mkdir-p "deps/libev")
9877 ;; FIXME: gevent requires building libev, even though
9878 ;; it only links against the proper one.
9879 (invoke "tar" "-xf" (assoc-ref inputs "libev-source")
9880 "--strip-components=1" "-C" "deps/libev")))
9881 (add-before 'patch-source-shebangs 'patch-hard-coded-paths
9882 (lambda _
9883 (substitute* "src/gevent/subprocess.py"
9884 (("/bin/sh") (which "sh")))
9885 (for-each (lambda (file)
9886 (substitute* file
9887 (("/bin/sh") (which "sh"))
9888 (("/bin/true") (which "true"))))
9889 (find-files "src/greentest" "\\.py$"))
9890 #t))
9891 (add-before 'build 'do-not-use-bundled-sources
9892 (lambda* (#:key inputs #:allow-other-keys)
9893 (setenv "CONFIG_SHELL" (which "bash"))
9894 (setenv "LIBEV_EMBED" "false")
9895 (setenv "CARES_EMBED" "false")
9896 (setenv "EMBED" "false")
9897
9898 (let ((greenlet (string-append
9899 (assoc-ref inputs "python-greenlet")
9900 "/include")))
9901 (match (scandir greenlet
9902 (lambda (item)
9903 (string-prefix? "python" item)))
9904 ((python)
9905 (setenv "CPATH"
9906 (string-append greenlet "/" python)))))
9907 #t))
9908 (add-before 'check 'skip-timer-test
9909 (lambda _
9910 ;; XXX: Skip 'TestTimerResolution', which appears to be
9911 ;; unreliable.
9912 (substitute* "src/greentest/test__core_timer.py"
9913 (("not greentest.RUNNING_ON_CI") "False"))
9914 #t))
9915 (replace 'check
9916 (lambda _
9917 ;; Make sure the build directory is on PYTHONPATH.
9918 (setenv "PYTHONPATH"
9919 (string-append
9920 (getenv "PYTHONPATH") ":"
9921 (getcwd) "/build/"
9922 (car (scandir "build" (cut string-prefix? "lib." <>)))))
9923 (with-directory-excursion "src/greentest"
9924 ;; XXX: Many tests require network access. Instead we only
9925 ;; run known-good tests. Unfortunately we cannot use
9926 ;; recursion here since this directory also contains
9927 ;; Python-version-specific subfolders.
9928 (apply invoke "python" "testrunner.py" "--config"
9929 "known_failures.py"
9930 (scandir "." (cut regexp-exec
9931 (make-regexp "test_+(subprocess|core)")
9932 <>)))))))))
9933 (propagated-inputs
9934 `(("python-greenlet" ,python-greenlet)
9935 ("python-objgraph" ,python-objgraph)))
9936 (native-inputs
9937 `(("libev-source" ,(package-source libev))
9938 ("python-six" ,python-six)))
9939 (inputs
9940 `(("c-ares" ,c-ares)
9941 ("libev" ,libev)))
9942 (home-page "http://www.gevent.org/")
9943 (synopsis "Coroutine-based network library")
9944 (description
9945 "gevent is a coroutine-based Python networking library that uses greenlet
9946to provide a high-level synchronous API on top of the libev event loop.")
9947 (license license:expat)
9948 (properties `((python2-variant . ,(delay python2-gevent))))))
9949
9950(define-public python2-gevent
9951 (let ((base (package-with-python2
9952 (strip-python2-variant python-gevent))))
9953 (package
9954 (inherit base)
9955 (native-inputs `(,@(package-native-inputs python-gevent)
9956 ("python-mock" ,python2-mock))))))
9957
9958(define-public python-fastimport
9959 (package
9960 (name "python-fastimport")
9961 (version "0.9.6")
9962 (source
9963 (origin
9964 (method url-fetch)
9965 (uri (pypi-uri "fastimport" version))
9966 (sha256
9967 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
9968 (build-system python-build-system)
9969 (home-page "https://github.com/jelmer/python-fastimport")
9970 (synopsis "VCS fastimport parser and generator in Python")
9971 (description "This package provides a parser for and generator of the Git
9972@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
9973format.")
9974 (license license:gpl2+)))
9975
9976(define-public python2-fastimport
9977 (package-with-python2 python-fastimport))
9978
9979(define-public python-twisted
9980 (package
9981 (name "python-twisted")
fdfad2fc 9982 (version "19.7.0")
44d10b1f
RW
9983 (source (origin
9984 (method url-fetch)
9985 (uri (pypi-uri "Twisted" version ".tar.bz2"))
9986 (sha256
9987 (base32
fdfad2fc 9988 "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym"))))
44d10b1f
RW
9989 (build-system python-build-system)
9990 (arguments
0107c9b8 9991 '(#:tests? #f)) ; FIXME: some tests fail
44d10b1f
RW
9992 (propagated-inputs
9993 `(("python-zope-interface" ,python-zope-interface)
52ca1c4a 9994 ("python-pyhamcrest" ,python-pyhamcrest)
44d10b1f 9995 ("python-incremental" ,python-incremental)
e5ba2fe3 9996 ("python-hyperlink" ,python-hyperlink)
44d10b1f
RW
9997 ("python-constantly" ,python-constantly)
9998 ("python-automat" ,python-automat)))
9999 (home-page "https://twistedmatrix.com/")
10000 (synopsis "Asynchronous networking framework written in Python")
10001 (description
10002 "Twisted is an extensible framework for Python programming, with special
10003focus on event-based network programming and multiprotocol integration.")
10004 (license license:expat)))
10005
10006(define-public python2-twisted
10007 (package-with-python2 python-twisted))
10008
10009(define-public python-pika
10010 (package
10011 (name "python-pika")
10012 (version "0.12.0")
10013 (source
10014 (origin
10015 (method url-fetch)
10016 (uri (pypi-uri "pika" version))
10017 (sha256
10018 (base32
10019 "0ld7akgm93s8pfa4dsx9qlzlhj76zspbr5m9ms0ns09yd2w4aq9h"))))
10020 (build-system python-build-system)
10021 (native-inputs
10022 `(("python-pyev" ,python-pyev)
10023 ("python-tornado" ,python-tornado)
10024 ("python-twisted" ,python-twisted)))
10025 (home-page "https://pika.readthedocs.org")
10026 (synopsis "Pure Python AMQP Client Library")
10027 (description
10028 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
10029Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
10030network support library.")
10031 (license license:bsd-3)))
10032
10033(define-public python2-pika
10034 (package-with-python2 python-pika))
10035
10036(define-public python-ply
10037 (package
10038 (name "python-ply")
10039 (version "3.10")
10040 (source
10041 (origin
10042 (method url-fetch)
10043 (uri (pypi-uri "ply" version))
10044 (sha256
10045 (base32
10046 "1jxsr1d2f732r6ljhvm827113dckwl6qwakfvpbdhcbhvpvlmscn"))))
10047 (build-system python-build-system)
10048 (home-page "http://www.dabeaz.com/ply/")
10049 (synopsis "Python Lex & Yacc")
10050 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
10051It uses LR parsing and does extensive error checking.")
10052 (license license:bsd-3)))
10053
10054(define-public python2-ply
10055 (package-with-python2 python-ply))
10056
10057(define-public python-tabulate
10058 (package
10059 (name "python-tabulate")
10060 (version "0.7.7")
10061 (source (origin
10062 (method url-fetch)
10063 (uri (pypi-uri "tabulate" version))
10064 (sha256
10065 (base32
10066 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
10067 (build-system python-build-system)
10068 (arguments
10069 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
10070 ;; and the latest release is not tagged in the upstream repository.
10071 '(#:tests? #f))
10072 (home-page "https://bitbucket.org/astanin/python-tabulate")
10073 (synopsis "Pretty-print tabular data")
10074 (description
10075 "Tabulate is a library and command-line utility to pretty-print tabular
10076data in Python.")
10077 (license license:expat)))
10078
10079(define-public python2-tabulate
10080 (package-with-python2 python-tabulate))
10081
10082(define-public python-kazoo
10083 (package
10084 (name "python-kazoo")
10085 (version "2.4.0")
10086 (source
10087 (origin
10088 (method url-fetch)
10089 (uri (pypi-uri "kazoo" version))
10090 (sha256
10091 (base32
10092 "16y213k7r8shyn2zw1k6lkzjgcrvm441pqv8scvcjixhvpbx3hm7"))))
10093 (build-system python-build-system)
10094 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
10095 (propagated-inputs
10096 `(("python-six" ,python-six)))
10097 (home-page "https://kazoo.readthedocs.org")
10098 (synopsis "High-level Zookeeper client library")
10099 (description
10100 "Kazoo is a Python client library for the Apache Zookeeper distributed
10101application service. It is designed to be easy to use and to avoid common
10102programming errors.")
10103 (license license:asl2.0)))
10104
10105(define-public python2-kazoo
10106 (package-with-python2 python-kazoo))
10107
10108(define-public python-pykafka
10109 (package
10110 (name "python-pykafka")
10111 (version "2.4.0")
10112 (source (origin
10113 (method url-fetch)
0ca1d040 10114 (uri (pypi-uri "pykafka" version))
44d10b1f
RW
10115 (sha256
10116 (base32
10117 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
10118 (build-system python-build-system)
10119 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
10120 (propagated-inputs
10121 `(("python-gevent" ,python-gevent)
10122 ("python-kazoo" ,python-kazoo)
10123 ("python-tabulate" ,python-tabulate)))
10124 (inputs
10125 `(("librdkafka" ,librdkafka)))
10126 (home-page "https://pykafka.readthedocs.io/")
10127 (synopsis "Apache Kafka client for Python")
10128 (description
10129 "PyKafka is a client for the Apache Kafka distributed messaging system.
10130It includes Python implementations of Kafka producers and consumers, which
10131are optionally backed by a C extension built on librdkafka.")
10132 (license license:asl2.0)))
10133
10134(define-public python2-pykafka
10135 (package-with-python2 python-pykafka))
10136
10137(define-public python-wcwidth
10138 (package
10139 (name "python-wcwidth")
10140 (version "0.1.7")
10141 (source
10142 (origin
10143 (method url-fetch)
10144 (uri (pypi-uri "wcwidth" version))
10145 (sha256
10146 (base32
10147 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
10148 (build-system python-build-system)
10149 (home-page "https://github.com/jquast/wcwidth")
10150 (synopsis "Measure number of terminal column cells of wide-character codes")
10151 (description "Wcwidth measures the number of terminal column cells of
10152wide-character codes. It is useful for those implementing a terminal emulator,
10153or programs that carefully produce output to be interpreted by one. It is a
10154Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
10155specified in POSIX.1-2001 and POSIX.1-2008.")
10156 (license license:expat)))
10157
10158(define-public python2-wcwidth
10159 (package-with-python2 python-wcwidth))
10160
10161(define-public python2-jsonrpclib
10162 (package
10163 (name "python2-jsonrpclib")
10164 (version "0.1.7")
10165 (source (origin
10166 (method url-fetch)
6571bba0 10167 (uri (pypi-uri "jsonrpclib" version))
44d10b1f
RW
10168 (sha256
10169 (base32
10170 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
10171 (build-system python-build-system)
10172 (arguments
10173 `(#:tests? #f
10174 #:python ,python-2))
10175 (home-page "https://github.com/joshmarshall/jsonrpclib/")
10176 (synopsis "Implementation of JSON-RPC specification for Python")
10177 (description
10178 "This library is an implementation of the JSON-RPC specification.
10179It supports both the original 1.0 specification, as well as the
10180new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
10181etc.")
10182 (license license:asl2.0)))
10183
10184(define-public python-chai
10185 (package
10186 (name "python-chai")
10187 (version "1.1.2")
10188 (source (origin
10189 (method url-fetch)
10190 (uri (pypi-uri "chai" version))
10191 (sha256
10192 (base32
10193 "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz"))))
10194 (build-system python-build-system)
10195 (home-page "https://github.com/agoragames/chai")
10196 (synopsis "Mocking framework for Python")
10197 (description
10198 "Chai provides an api for mocking, stubbing and spying your python
10199objects, patterned after the Mocha library for Ruby.")
10200 (license license:bsd-3)))
10201
10202(define-public python2-chai
10203 (package-with-python2 python-chai))
10204
10205(define-public python-inflection
10206 (package
10207 (name "python-inflection")
10208 (version "0.3.1")
10209 (source
10210 (origin (method url-fetch)
10211 (uri (pypi-uri "inflection" version))
10212 (sha256
10213 (base32
10214 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
10215 (build-system python-build-system)
10216 (native-inputs
10217 `(("python-pytest" ,python-pytest)))
10218 (home-page "https://github.com/jpvanhal/inflection")
10219 (synopsis "Python string transformation library")
10220 (description
10221 "Inflection is a string transformation library. It singularizes
10222and pluralizes English words, and transforms strings from CamelCase to
10223underscored string.")
10224 (license license:expat)))
10225
10226(define-public python2-inflection
10227 (package-with-python2 python-inflection))
10228
10229(define-public python-pylev
10230 (package
10231 (name "python-pylev")
10232 (version "1.3.0")
10233 (source (origin
10234 (method url-fetch)
10235 (uri (pypi-uri "pylev" version))
10236 (sha256
10237 (base32
10238 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
10239 (build-system python-build-system)
10240 (home-page "https://github.com/toastdriven/pylev")
10241 (synopsis "Levenshtein distance implementation in Python")
10242 (description "Pure Python Levenshtein implementation, based off the
10243Wikipedia code samples at
10244@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
10245 (license license:bsd-3)))
10246
10247(define-public python2-pylev
10248 (package-with-python2 python-pylev))
10249
10250(define-public python-cleo
10251 (package
10252 (name "python-cleo")
10253 (version "0.6.1")
10254 (source (origin
10255 (method url-fetch)
10256 (uri (pypi-uri "cleo" version))
10257 (sha256
10258 (base32
10259 "0q1cf0szr0d54am4pypzwdnm74zpladdsinad94c2fz5i06fdpf7"))))
10260 (build-system python-build-system)
10261 (native-inputs
10262 `(;; For testing
10263 ("python-mock" ,python-mock)
10264 ("python-pytest-mock" ,python-pytest-mock)
10265 ("python-pytest" ,python-pytest)))
10266 (propagated-inputs
10267 `(("python-backpack" ,python-backpack)
10268 ("python-pastel" ,python-pastel)
10269 ("python-pylev" ,python-pylev)))
10270 (home-page "https://github.com/sdispater/cleo")
10271 (synopsis "Command-line arguments library for Python")
10272 (description
10273 "Cleo allows you to create command-line commands with signature in
10274docstring and colored output.")
10275 (license license:expat)))
10276
10277(define-public python2-cleo
10278 (package-with-python2 python-cleo))
10279
10280(define-public python-lazy-object-proxy
10281 (package
10282 (name "python-lazy-object-proxy")
10283 (version "1.3.1")
10284 (source (origin
10285 (method url-fetch)
10286 (uri (pypi-uri "lazy-object-proxy" version))
10287 (sha256
10288 (base32
10289 "0yha7q9bhw857fwaby785d63mffhngl9npwzlk9i0pwlkwvbx4gb"))))
10290 (build-system python-build-system)
10291 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
10292 (synopsis "Lazy object proxy for python")
10293 (description
10294 "Lazy object proxy is an object that wraps a callable but defers the call
10295until the object is actually required, and caches the result of said call.")
10296 (license license:bsd-2)))
10297
10298(define-public python2-lazy-object-proxy
10299 (package-with-python2 python-lazy-object-proxy))
10300
10301(define-public python-dnspython
10302 (package
10303 (name "python-dnspython")
10304 (version "1.15.0")
10305 (source (origin
10306 (method url-fetch)
10307 (uri (string-append "http://www.dnspython.org/kits/"
10308 version "/dnspython-" version ".tar.gz"))
10309 (sha256
10310 (base32
10311 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
10312 (build-system python-build-system)
10313 (arguments '(#:tests? #f)) ; XXX: requires internet access
10314 (home-page "http://www.dnspython.org")
10315 (synopsis "DNS toolkit for Python")
10316 (description
10317 "dnspython is a DNS toolkit for Python. It supports almost all record
10318types. It can be used for queries, zone transfers, and dynamic updates.
10319It supports TSIG authenticated messages and EDNS0.")
10320 (license license:expat)))
10321
10322(define-public python2-dnspython
10323 (package-with-python2 python-dnspython))
10324
10325(define-public python-email-validator
10326 (package
10327 (name "python-email-validator")
10328 (version "1.0.2")
10329 (source
10330 (origin (method url-fetch)
10331 (uri (pypi-uri "email_validator" version))
10332 (sha256
10333 (base32
10334 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
10335 (build-system python-build-system)
10336 (arguments
10337 '(#:phases
10338 (modify-phases %standard-phases
10339 (add-before 'build 'use-dnspython
10340 (lambda _
10341 (substitute* "setup.py"
10342 (("dnspython3") "dnspython"))
10343 #t)))))
10344 (propagated-inputs
10345 `(("python-dnspython" ,python-dnspython)
10346 ("python-idna" ,python-idna)))
10347 (home-page "https://github.com/JoshData/python-email-validator")
10348 (synopsis "Email address validation library for Python")
10349 (description
10350 "This library validates email address syntax and deliverability.")
10351 (license license:cc0)))
10352
10353(define-public python2-email-validator
10354 (package-with-python2 python-email-validator))
10355
10356(define-public python-ukpostcodeparser
10357 (package
10358 (name "python-ukpostcodeparser")
10359 (version "1.0.3")
10360 (source (origin
10361 (method url-fetch)
10362 (uri (pypi-uri "UkPostcodeParser" version))
10363 (sha256
10364 (base32
10365 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
10366 (build-system python-build-system)
10367 (home-page "https://github.com/hamstah/ukpostcodeparser")
10368 (synopsis "UK Postcode parser for Python")
10369 (description
10370 "This library provides the @code{parse_uk_postcode} function for
10371parsing UK postcodes.")
10372 (license license:expat)))
10373
10374(define-public python2-ukpostcodeparser
10375 (package-with-python2 python-ukpostcodeparser))
10376
10377(define-public python-faker
10378 (package
10379 (name "python-faker")
10380 (version "0.7.9")
10381 (source (origin
10382 (method url-fetch)
10383 (uri (pypi-uri "Faker" version))
10384 (sha256
10385 (base32
10386 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
10387 (patches
10388 (search-patches "python-faker-fix-build-32bit.patch"))
10389 (modules '((guix build utils)))
10390 (snippet
10391 '(begin
10392 (for-each delete-file (find-files "." "\\.pyc$"))
10393 #t))))
10394 (build-system python-build-system)
10395 (arguments
10396 '(#:phases
10397 (modify-phases %standard-phases
10398 (replace 'check
49ff8827 10399 (lambda _ (invoke "python" "-m" "unittest" "-v" "tests"))))))
44d10b1f
RW
10400 (native-inputs
10401 `(;; For testing
10402 ("python-email-validator" ,python-email-validator)
10403 ("python-mock" ,python-mock)
10404 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
10405 (propagated-inputs
10406 `(("python-dateutil" ,python-dateutil)
10407 ("python-six" ,python-six)))
10408 (home-page "https://github.com/joke2k/faker")
10409 (synopsis "Python package that generates fake data")
10410 (description
10411 "Faker is a Python package that generates fake data such as names,
10412addresses, and phone numbers.")
10413 (license license:expat)
10414 (properties `((python2-variant . ,(delay python2-faker))))))
10415
10416(define-public python2-faker
10417 (let ((base (package-with-python2 (strip-python2-variant
10418 python-faker))))
10419 (package
10420 (inherit base)
10421 (propagated-inputs
10422 `(("python2-ipaddress" ,python2-ipaddress)
10423 ,@(package-propagated-inputs base))))))
10424
10425(define-public python-pyaml
10426 (package
10427 (name "python-pyaml")
10428 (version "18.11.0")
10429 (source (origin
10430 (method url-fetch)
10431 (uri (pypi-uri "pyaml" version))
10432 (sha256
10433 (base32
10434 "0fi604ix8lbpj1266q7js6szm771saprdzzcdwmj43wy83694qmr"))))
10435 (build-system python-build-system)
10436 (native-inputs
10437 `(("python-unidecode" ,python-unidecode)))
10438 (propagated-inputs
10439 `(("python-pyyaml" ,python-pyyaml)))
10440 (home-page "https://github.com/mk-fg/pretty-yaml")
10441 (synopsis "YAML pretty-print library for Python")
10442 (description
10443 "pyaml is a PyYAML based python module to produce pretty and readable
10444YAML-serialized data.")
492e3a7a 10445 (license license:wtfpl2)))
44d10b1f
RW
10446
10447(define-public python2-pyaml
10448 (package-with-python2 python-pyaml))
10449
10450(define-public python-backpack
10451 (package
10452 (name "python-backpack")
10453 (version "0.1")
10454 (source
10455 (origin
10456 (method url-fetch)
10457 (uri (pypi-uri "backpack" version))
10458 (sha256
10459 (base32
10460 "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1"))))
10461 (build-system python-build-system)
10462 (native-inputs
10463 `(("python-pytest" ,python-pytest)
10464 ("python-nose" ,python-nose)))
10465 (propagated-inputs
10466 `(("python-simplejson" ,python-simplejson)))
10467 (home-page "https://github.com/sdispater/backpack")
10468 (synopsis "Utilities for working with Python collections")
10469 (description "Backpack provides some useful utilities for working with
10470collections of data.")
10471 (license license:expat)))
10472
10473(define-public python2-backpack
10474 (package-with-python2 python-backpack))
10475
10476(define-public python-prompt-toolkit
10477 (package
10478 (name "python-prompt-toolkit")
10479 (version "2.0.7")
10480 (source
10481 (origin
10482 (method url-fetch)
10483 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
10484 (sha256
10485 (base32
10486 "0fgacqk73w7s932vy46pan2yp8rvjmlkag20xvaydh9mhf6h85zx"))))
10487 (build-system python-build-system)
10488 (arguments
10489 `(#:phases
10490 (modify-phases %standard-phases
10491 (delete 'check)
10492 (add-after 'install 'post-install-check
10493 (lambda* (#:key inputs outputs #:allow-other-keys)
10494 ;; HOME is needed for the test
10495 ;; "test_pathcompleter_can_expanduser".
10496 (setenv "HOME" "/tmp")
10497 (add-installed-pythonpath inputs outputs)
10498 (invoke "py.test"))))))
10499 (propagated-inputs
10500 `(("python-wcwidth" ,python-wcwidth)
10501 ("python-six" ,python-six)
10502 ("python-pygments" ,python-pygments)))
10503 (native-inputs
10504 `(("python-pytest" ,python-pytest)))
10505 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
10506 (synopsis "Library for building command line interfaces in Python")
10507 (description
10508 "Prompt-Toolkit is a library for building interactive command line
10509interfaces in Python. It's like GNU Readline but it also features syntax
10510highlighting while typing, out-of-the-box multi-line input editing, advanced
10511code completion, incremental search, support for Chinese double-width
10512characters, mouse support, and auto suggestions.")
10513 (license license:bsd-3)))
10514
10515(define-public python2-prompt-toolkit
10516 (package-with-python2 python-prompt-toolkit))
10517
10518(define-public python-prompt-toolkit-1
10519 (package (inherit python-prompt-toolkit)
10520 (version "1.0.15")
10521 (source
10522 (origin
10523 (method url-fetch)
10524 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
10525 (sha256
10526 (base32
10527 "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5"))))))
10528
10529(define-public python2-prompt-toolkit-1
10530 (package-with-python2 python-prompt-toolkit-1))
10531
10532(define-public python-jedi
10533 (package
10534 (name "python-jedi")
b8e5de56 10535 (version "0.13.3")
44d10b1f
RW
10536 (source
10537 (origin
10538 (method url-fetch)
10539 (uri (pypi-uri "jedi" version))
10540 (sha256
10541 (base32
b8e5de56 10542 "0nsrjlb57njqppxmi8wjsb1dkad7qa7svx67jbkhixq66lz61c1b"))))
44d10b1f
RW
10543 (build-system python-build-system)
10544 (arguments
b8e5de56 10545 `( ;; Many tests are failing with Python 3.7.x as of version 0.13.3 (see:
44d10b1f
RW
10546 ;; https://github.com/davidhalter/jedi/issues/1263)
10547 #:tests? #f
10548 #:phases
10549 (modify-phases %standard-phases
10550 (replace 'check
10551 (lambda* (#:key tests? #:allow-other-keys)
10552 (when tests?
10553 (invoke "py.test" "-vv")))))))
10554 (native-inputs
10555 `(("python-pytest" ,python-pytest)
10556 ("python-docopt" ,python-docopt)))
10557 (propagated-inputs
10558 `(("python-parso" ,python-parso)))
10559 (home-page "https://github.com/davidhalter/jedi")
10560 (synopsis "Autocompletion and static analysis library for Python")
10561 (description
10562 "Jedi is a static analysis tool for Python that can be used in Integrated
10563Development Environments (@dfn{IDE}s) and text editors. It understands Python
10564on a deeper level than many other static analysis frameworks for Python.
10565
10566Jedi understands docstrings and you can use Jedi autocompletion in your REPL as
10567well.")
10568 (license license:expat)))
10569
10570(define-public python2-jedi
b8e5de56
MC
10571 (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
10572 (package
10573 (inherit base)
10574 (arguments (substitute-keyword-arguments (package-arguments base)
10575 ((#:tests? _) #t))))))
44d10b1f
RW
10576
10577(define-public ptpython
10578 (package
10579 (name "ptpython")
10580 (version "0.34")
10581 (source (origin
10582 (method url-fetch)
10583 (uri (pypi-uri "ptpython" version))
10584 (sha256
10585 (base32
10586 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
10587 (build-system python-build-system)
10588 (arguments
10589 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
10590 (propagated-inputs
10591 `(("python-docopt" ,python-docopt)
10592 ("python-jedi" ,python-jedi)
10593 ("python-prompt-toolkit" ,python-prompt-toolkit)
10594 ("python-pygments" ,python-pygments)))
10595 (home-page "https://github.com/jonathanslenders/ptpython")
10596 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
10597 (description
10598 "ptpython is a Python read-eval-print loop with IDE-like features.
10599It supports syntax highlighting, multiline editing, autocompletion, mouse,
10600color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
10601etc.")
10602 (license license:bsd-3)
10603 (properties `((python2-variant . ,(delay ptpython-2))))))
10604
10605(define-public ptpython-2
10606 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
10607 (package
10608 (inherit base)
10609 (name "ptpython2"))))
10610
10611(define-public python-stem
10612 (package
10613 (name "python-stem")
e746d1c3 10614 (version "1.7.1")
44d10b1f
RW
10615 (source
10616 (origin
10617 (method url-fetch)
10618 (uri (pypi-uri "stem" version))
10619 (sha256
10620 (base32
e746d1c3 10621 "18lc95pmc7i089nlsb06dsxyjl5wbhxfqgdxbjcia35ndh8z7sn9"))))
44d10b1f
RW
10622 (build-system python-build-system)
10623 (arguments
10624 `(#:phases
10625 (modify-phases %standard-phases
10626 (replace 'check
10627 (lambda _
10628 (invoke "./run_tests.py" "--unit")
10629 #t)))))
10630 (native-inputs
10631 `(("python-mock" ,python-mock)
10632 ("python-pycodestyle" ,python-pycodestyle)
10633 ("python-pyflakes" ,python-pyflakes)))
10634 (home-page "https://stem.torproject.org/")
10635 (synopsis
10636 "Python controller library that allows applications to interact with Tor")
10637 (description
10638 "Stem is a Python controller library for Tor. With it you can use Tor's
10639control protocol to script against the Tor process and read descriptor data
10640relays publish about themselves.")
10641 (license license:lgpl3)))
10642
10643(define-public python2-stem
10644 (package-with-python2 python-stem))
10645
10646(define-public python-pyserial
10647 (package
10648 (name "python-pyserial")
10649 (version "3.1.1")
10650 (source
10651 (origin
10652 (method url-fetch)
10653 (uri (pypi-uri "pyserial" version))
10654 (sha256
10655 (base32
10656 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
10657 (build-system python-build-system)
10658 (arguments
10659 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
10660 ;; #:phases
10661 ;; (modify-phases %standard-phases
10662 ;; (replace 'check
10663 ;; (lambda _
10664 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
10665 (home-page
10666 "https://github.com/pyserial/pyserial")
10667 (synopsis "Python Serial Port Bindings")
10668 (description "@code{pyserial} provide serial port bindings for Python. It
10669supports different byte sizes, stop bits, parity and flow control with RTS/CTS
10670and/or Xon/Xoff. The port is accessed in RAW mode.")
10671 (license license:bsd-3)))
10672
10673(define-public python2-pyserial
10674 (package-with-python2 python-pyserial))
10675
10676(define-public python-kivy
10677 (package
10678 (name "python-kivy")
10679 (version "1.10.1")
10680 (source
10681 (origin
10682 (method url-fetch)
10683 (uri (pypi-uri "Kivy" version))
10684 (file-name (string-append name "-" version ".tar.gz"))
10685 (sha256
10686 (base32
10687 "1zzxjdp78hfjjiklzr82l4zwibwcq4j6kgicspqs6iyyfn5yisbw"))))
10688 (build-system python-build-system)
10689 (arguments
10690 `(#:tests? #f ; Tests require many optional packages
10691 #:phases
10692 (modify-phases %standard-phases
10693 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
10694 (lambda* (#:key inputs #:allow-other-keys)
10695 (setenv "KIVY_SDL2_PATH"
10696 (string-append (assoc-ref inputs "sdl-union")
10697 "/include/SDL2"))
10698 #t)))))
10699 (native-inputs
10700 `(("git" ,git)
10701 ("pkg-config" ,pkg-config)
10702 ("python-cython" ,python-cython)))
10703 (inputs
10704 `(("gstreamer" ,gstreamer)
10705 ("mesa" ,mesa)
10706 ("sdl-union"
10707 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
10708 (home-page "http://kivy.org")
10709 (synopsis
10710 "Multitouch application framework")
10711 (description
10712 "A software library for rapid development of
10713hardware-accelerated multitouch applications.")
10714 (license license:expat)))
10715
10716(define-public python2-kivy
10717 (package-with-python2 python-kivy))
10718
10719(define-public python-kivy-next
10720 (deprecated-package "python-kivy-next" python-kivy))
10721
10722(define-public python2-kivy-next
10723 (deprecated-package "python2-kivy-next" python2-kivy))
10724
10725(define-public python-binaryornot
10726 (package
10727 (name "python-binaryornot")
10728 (version "0.4.4")
10729 (source (origin
10730 (method url-fetch)
10731 (uri (pypi-uri "binaryornot" version))
10732 (sha256
10733 (base32
10734 "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m"))))
10735 (build-system python-build-system)
10736 (propagated-inputs
10737 `(("python-chardet" ,python-chardet)
10738 ("python-hypothesis" ,python-hypothesis)))
10739 (home-page "https://github.com/audreyr/binaryornot")
10740 (synopsis "Package to check if a file is binary or text")
10741 (description "Ultra-lightweight pure Python package to check if a file is
10742binary or text.")
10743 (license license:bsd-3)
10744 (properties `((python2-variant . ,(delay python2-binaryornot))))))
10745
10746(define-public python2-binaryornot
10747 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
10748 (package (inherit base)
10749 (propagated-inputs
10750 `(("python2-enum34" ,python2-enum34)
10751 ,@(package-propagated-inputs base))))))
10752
10753(define-public python-nltk
10754 (package
10755 (name "python-nltk")
10756 (version "3.2.1")
10757 (source (origin
10758 (method url-fetch)
10759 (uri (pypi-uri "nltk" version))
10760 (sha256
10761 (base32
10762 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
10763 (build-system python-build-system)
10764 (arguments
10765 '(;; The tests require some extra resources to be downloaded.
10766 ;; TODO Try packaging these resources.
10767 #:tests? #f))
10768 (home-page "http://nltk.org/")
10769 (synopsis "Natural Language Toolkit")
10770 (description "It provides interfaces to over 50 corpora and lexical
10771resources such as WordNet, along with a suite of text processing libraries
10772for classification, tokenization, stemming, tagging, parsing, and semantic
10773reasoning, wrappers for natural language processing libraries.")
10774 (license license:asl2.0)))
10775
10776(define-public python2-nltk
10777 (package-with-python2 python-nltk))
10778
10779(define-public python-pymongo
10780 (package
10781 (name "python-pymongo")
10782 (version "3.7.2")
10783 (source (origin
10784 (method url-fetch)
10785 (uri (pypi-uri "pymongo" version))
10786 (sha256
10787 (base32
10788 "0zis4707r9hdg5qgkhp3wss9camr9h56ixyfc8n9dxwlnnly4x4c"))))
10789 (build-system python-build-system)
10790 (propagated-inputs
10791 `(("python-certifi" ,python-certifi)))
10792 (home-page "https://github.com/mongodb/mongo-python-driver")
10793 (synopsis "Python driver for MongoDB")
10794 (description "Python driver for MongoDB.")
10795 (license license:asl2.0)))
10796
10797(define-public python2-pymongo
10798 (package-with-python2 python-pymongo))
10799
44d10b1f
RW
10800(define-public python-consul
10801 (package
10802 (name "python-consul")
10803 (version "0.6.1")
10804 (source
10805 (origin
10806 (method url-fetch)
10807 (uri (pypi-uri "python-consul" version))
10808 (sha256
10809 (base32
10810 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
10811 (build-system python-build-system)
10812 (arguments
10813 '(#:tests? #f)) ; The tests are not distributed
10814 (propagated-inputs
10815 `(("python-requests" ,python-requests)
10816 ("python-six" ,python-six)))
10817 (home-page "https://github.com/cablehead/python-consul")
10818 (synopsis "Python client for Consul")
10819 (description
10820 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
10821discovery, monitoring and configuration.")
10822 (license license:expat)))
10823
10824(define-public python2-consul
10825 (package-with-python2 python-consul))
10826
10827(define-public python-schematics
10828 (package
10829 (name "python-schematics")
10830 (version "1.1.1")
10831 (source
1961d187
TGR
10832 (origin
10833 (method git-fetch)
10834 (uri (git-reference
10835 (url "https://github.com/schematics/schematics.git")
10836 (commit (string-append "v" version))))
10837 (file-name (git-file-name name version))
10838 (sha256
10839 (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd"))))
44d10b1f
RW
10840 (build-system python-build-system)
10841 (propagated-inputs
10842 `(("python-six" ,python-six)))
10843 (arguments
1961d187
TGR
10844 ;; The tests require a bunch of not very nice packages with fixed
10845 ;; version requirements (e.g. python-coveralls).
10846 `(#:tests? #f))
44d10b1f
RW
10847 (home-page "https://github.com/schematics/schematics")
10848 (synopsis "Python Data Structures for Humans")
10849 (description "Python Data Structures for Humans.")
10850 (license license:bsd-3)))
10851
10852(define-public python2-schematics
10853 (package-with-python2 python-schematics))
10854
10855(define-public python-odfpy
10856 (package
10857 (name "python-odfpy")
10858 (version "1.3.3")
10859 (source (origin
10860 (method url-fetch)
10861 (uri (pypi-uri "odfpy" version))
10862 (sha256
10863 (base32
10864 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
10865 (arguments
10866 `(#:modules ((srfi srfi-1)
10867 (guix build python-build-system)
10868 (guix build utils))
10869 #:phases
10870 (modify-phases %standard-phases
10871 (replace 'check
10872 ;; The test runner invokes python2 and python3 for test*.py.
10873 ;; To avoid having both in inputs, we replicate it here.
10874 (lambda _
21ccc01d
RW
10875 (for-each (lambda (test-file) (invoke "python" test-file))
10876 (find-files "tests" "^test.*\\.py$"))
10877 #t)))))
44d10b1f
RW
10878 (build-system python-build-system)
10879 (home-page "https://github.com/eea/odfpy")
10880 (synopsis "Python API and tools to manipulate OpenDocument files")
10881 (description "Collection of libraries and utility programs written in
10882Python to manipulate OpenDocument 1.2 files.")
10883 (license
10884 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
10885 ;; number of files with other licenses.
10886 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
10887
10888(define-public python2-odfpy
10889 (package-with-python2 python-odfpy))
10890
10891(define-public python-natsort
10892 (package
10893 (name "python-natsort")
10894 (version "5.4.1")
10895 (source (origin
10896 (method url-fetch)
10897 (uri (pypi-uri "natsort" version))
10898 (sha256
10899 (base32
10900 "0i732amg6yzkx4g4c9j09jmqq39q377x9cl2nbkm5hax2c2v0wxf"))))
10901 (build-system python-build-system)
10902 (arguments
10903 `(#:modules ((guix build utils)
10904 (guix build python-build-system)
10905 (srfi srfi-1)
10906 (srfi srfi-26)
10907 (ice-9 ftw))
10908 #:phases
10909 (modify-phases %standard-phases
10910 (add-before 'check 'set-cachedir
10911 ;; Tests require write access to $HOME by default
10912 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t))
10913 (replace 'check
10914 (lambda _
10915 (let ((cwd (getcwd)))
10916 (setenv "PYTHONPATH"
10917 (string-append
10918 cwd "/build/"
10919 (find (cut string-prefix? "lib" <>)
10920 (scandir (string-append cwd "/build")))
10921 ":"
10922 (getenv "PYTHONPATH")))
10923 (invoke "pytest" "-v")))))))
10924 (native-inputs
10925 `(("python-hypothesis" ,python-hypothesis)
10926 ("python-pytest-cov" ,python-pytest-cov)
10927 ("python-pytest-mock" ,python-pytest-mock)
10928 ("python-pytest" ,python-pytest)))
10929 (propagated-inputs ; TODO: Add python-fastnumbers.
10930 `(("python-pyicu" ,python-pyicu)))
10931 (home-page "https://github.com/SethMMorton/natsort")
10932 (synopsis "Natural sorting for python and shell")
10933 (description
10934 "Natsort lets you apply natural sorting on lists instead of
10935lexicographical. If you use the built-in @code{sorted} method in python
36a4366d
EF
10936on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4},
10937@code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20},
10938@code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that
10939identifies numbers and sorts them separately from strings. It can also sort
10940version numbers, real numbers, mixed types and more, and comes with a shell
10941command @command{natsort} that exposes this functionality in the command line.")
44d10b1f
RW
10942 (license license:expat)
10943 (properties `((python2-variant . ,(delay python2-natsort))))))
10944
10945(define-public python2-natsort
10946 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
10947 (package (inherit base)
10948 (native-inputs
10949 `(("python2-pathlib" ,python2-pathlib)
10950 ,@(package-native-inputs base))))))
10951
10952(define-public python-glances
10953 (package
10954 (name "python-glances")
9898a2d3 10955 (version "3.1.1")
44d10b1f
RW
10956 (source
10957 (origin
10958 (method url-fetch)
10959 (uri (pypi-uri "Glances" version))
10960 (sha256
10961 (base32
15b4c911
TGR
10962 "07j1ggzsqiskyz1i4mrnyr9i95v0dqi0i0hibnv1l188km8shmi8"))
10963 (modules '((guix build utils)))
10964 (snippet
10965 '(begin
10966 ;; Glances phones PyPI for weekly update checks by default.
10967 ;; Disable these. The user can re-enable them if desired.
10968 (substitute* "glances/outdated.py"
10969 (("^(.*)self\\.load_config\\(config\\)\n" line indentation)
10970 (string-append indentation
10971 "self.args.disable_check_update = True\n"
10972 line)))
10973 #t))))
44d10b1f
RW
10974 (build-system python-build-system)
10975 (propagated-inputs
9898a2d3
TGR
10976 `(("python-future" ,python-future)
10977 ("python-psutil" ,python-psutil)))
44d10b1f
RW
10978 (home-page
10979 "https://github.com/nicolargo/glances")
bab94ffa 10980 (synopsis "Cross-platform curses-based monitoring tool")
44d10b1f
RW
10981 (description
10982 "Glances is a curses-based monitoring tool for a wide variety of platforms.
bab94ffa
TGR
10983Glances uses the PsUtil library to get information from your system. It
10984monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
44d10b1f
RW
10985 (license license:lgpl3+)))
10986
10987(define-public python2-glances
10988 (package-with-python2 python-glances))
10989
10990(define-public python-graphql-core
10991 (package
10992 (name "python-graphql-core")
10993 (version "0.5.3")
10994 (source
10995 (origin
10996 (method url-fetch)
10997 (uri (pypi-uri "graphql-core" version))
10998 (sha256
10999 (base32
11000 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
11001 (build-system python-build-system)
11002 (arguments
11003 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
11004 #:phases
11005 (modify-phases %standard-phases
11006 (add-after 'unpack 'patch-hardcoded-version
11007 (lambda _ (substitute*
11008 "setup.py"
11009 (("'gevent==1.1rc1'") "'gevent'"))
11010 #t)))))
11011 (native-inputs
11012 `(("python-gevent" ,python-gevent)
11013 ("python-mock" ,python-mock)
11014 ("python-pytest-mock" ,python-pytest-mock)))
11015 (propagated-inputs
11016 `(("python-promise" ,python-promise)
11017 ("python-six" ,python-six)))
11018 (home-page "https://github.com/graphql-python/graphql-core")
11019 (synopsis "GraphQL implementation for Python")
11020 (description
11021 "GraphQL implementation for Python. GraphQL is a data query language and
11022runtime designed and used to request and deliver data to mobile and web apps.
11023This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
11024to Python.")
11025 (license license:expat)))
11026
11027(define-public python2-graphql-core
11028 (package-with-python2 python-graphql-core))
11029
11030(define-public python-graphql-relay
11031 (package
11032 (name "python-graphql-relay")
11033 (version "0.4.5")
11034 (source
11035 (origin
11036 (method url-fetch)
11037 (uri (pypi-uri "graphql-relay" version))
11038 (sha256
11039 (base32
11040 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
11041 (build-system python-build-system)
11042 (arguments
11043 '(#:tests? #f)) ; The tests are not distributed
11044 (propagated-inputs
11045 `(("python-graphql-core" ,python-graphql-core)
11046 ("python-promise" ,python-promise)
11047 ("python-six" ,python-six)))
11048 (home-page "https://github.com/graphql-python/graphql-relay-py")
11049 (synopsis "Relay implementation for Python")
11050 (description
11051 "This is a library to allow the easy creation of Relay-compliant servers
11052using the GraphQL Python reference implementation of a GraphQL server. It
11053should be noted that the code is a exact port of the original
11054@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
11055from Facebook.")
11056 (license license:expat)))
11057
11058(define-public python2-graphql-relay
11059 (package-with-python2 python-graphql-relay))
11060
11061(define-public python-graphene
11062 (package
11063 (name "python-graphene")
11064 (version "0.10.2")
11065 (source
11066 (origin
11067 (method url-fetch)
11068 (uri (pypi-uri "graphene" version))
11069 (sha256
11070 (base32
11071 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
11072 (build-system python-build-system)
11073 (propagated-inputs
11074 `(("python-graphql-core" ,python-graphql-core)
11075 ("python-graphql-relay" ,python-graphql-relay)
11076 ("python-iso8601" ,python-iso8601)
11077 ("python-promise" ,python-promise)
11078 ("python-six" ,python-six)))
11079 (arguments
11080 `(#:tests? #f)) ; no tests/ in the PyPI tarball
11081 (home-page "http://graphene-python.org/")
11082 (synopsis "GraphQL Framework for Python")
11083 (description
11084 "Graphene is a Python library for building GraphQL schemas/types.
11085A GraphQL schema describes your data model, and provides a GraphQL server
11086with an associated set of resolve methods that know how to fetch data.")
11087 (properties `((python2-variant . ,(delay python2-graphene))))
11088 (license license:expat)))
11089
11090(define-public python2-graphene
11091 (let ((base (package-with-python2
11092 (strip-python2-variant python-graphene))))
11093 (package (inherit base)
11094 (native-inputs
11095 `(("python2-sqlalchemy" ,python2-sqlalchemy)
11096 ,@(package-native-inputs base))))))
11097
11098(define-public python-nautilus
11099 (package
11100 (name "python-nautilus")
11101 (version "0.4.9")
11102 (source
11103 (origin
11104 (method url-fetch)
11105 (uri (pypi-uri "nautilus" version))
11106 (sha256
11107 (base32
11108 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
11109 (build-system python-build-system)
11110 (arguments `(#:tests? #f)) ; fails to import test modules
11111 (propagated-inputs
11112 `(("python-bcrypt" ,python-bcrypt)
11113 ("python-click" ,python-click)
11114 ("python-consul" ,python-consul)
11115 ("python-graphene" ,python-graphene)
11116 ("python-jinja2" ,python-jinja2)
11117 ("python-peewee" ,python-peewee)
11118 ("python-pika" ,python-pika)
11119 ("python-tornado" ,python-tornado)
11120 ("python-wtforms" ,python-wtforms)))
11121 (native-inputs
11122 `(("python-nose2" ,python-nose2)))
11123 (home-page "https://github.com/AlecAivazis/nautilus")
11124 (synopsis "Library for creating microservice applications")
11125 (description
11126 "Nautilus is a framework for flux based microservices that looks to
11127provide extendible implementations of common aspects of a cloud so that you can
11128focus on building massively scalable web applications.")
11129 (license license:expat)))
11130
11131(define-public python-snowballstemmer
11132 (package
11133 (name "python-snowballstemmer")
11134 (version "1.2.1")
11135 (source (origin
11136 (method url-fetch)
11137 (uri (pypi-uri "snowballstemmer" version))
11138 (sha256
11139 (base32
11140 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
11141 (build-system python-build-system)
11142 (arguments
11143 `(;; No tests exist
11144 #:tests? #f))
11145 (home-page "https://github.com/shibukawa/snowball_py")
11146 (synopsis "Snowball stemming library collection for Python")
11147 (description "This package provides 16 word stemmer algorithms generated
11148from Snowball algorithms. It includes the 15 original ones plus the Poerter
11149English stemmer.")
11150 (license license:bsd-3)))
11151
11152(define-public python2-snowballstemmer
11153 (package-with-python2 python-snowballstemmer))
11154
44d10b1f
RW
11155(define-public python-setproctitle
11156(package
11157 (name "python-setproctitle")
11158 (version "1.1.10")
11159 (source
11160 (origin
11161 (method url-fetch)
11162 (uri (pypi-uri "setproctitle" version))
11163 (sha256
11164 (base32
11165 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
11166 (build-system python-build-system)
11167 (arguments
11168 '(#:phases
11169 (modify-phases %standard-phases
11170 (add-before 'check 'patch-Makefile
11171 ;; Stricly this is only required for the python2 variant.
11172 ;; But adding a phase in an inherited package seems to be
11173 ;; cumbersum. So we patch even for python3.
11174 (lambda _
11175 (let ((nose (assoc-ref %build-inputs "python2-nose")))
11176 (when nose
11177 (substitute* "Makefile"
11178 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
11179 (string-append nose "/bin/nosetests "))))
11180 #t)))
11181 (replace 'check
11182 (lambda _
11183 (setenv "PYTHON" (or (which "python3") (which "python")))
11184 (setenv "PYCONFIG" (or (which "python3-config")
11185 (which "python-config")))
11186 (setenv "CC" "gcc")
11187 ;; No need to extend PYTHONPATH to find the built package, since
11188 ;; the Makefile will build anyway
11189 (invoke "make" "check"))))))
11190 (native-inputs
11191 `(("procps" ,procps))) ; required for tests
11192 (home-page
11193 "https://github.com/dvarrazzo/py-setproctitle")
11194 (synopsis
11195 "Setproctitle implementation for Python to customize the process title")
11196 (description "The library allows a process to change its title (as displayed
11197by system tools such as ps and top).
11198
11199Changing the title is mostly useful in multi-process systems, for
11200example when a master process is forked: changing the children's title
11201allows to identify the task each process is busy with. The technique
11202is used by PostgreSQL and the OpenSSH Server for example.")
11203 (license license:bsd-3)
11204 (properties `((python2-variant . ,(delay python2-setproctitle))))))
11205
11206(define-public python2-setproctitle
11207 (let ((base (package-with-python2
11208 (strip-python2-variant python-setproctitle))))
11209 (package
11210 (inherit base)
11211 (native-inputs `(("python2-nose" ,python2-nose)
11212 ,@(package-native-inputs base))))))
11213
11214(define-public python-validictory
11215 (package
11216 (name "python-validictory")
11217 (version "1.0.1")
11218 (source
11219 (origin
11220 (method url-fetch)
11221 (uri (pypi-uri "validictory" version))
11222 (sha256
11223 (base32
11224 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
11225 (build-system python-build-system)
11226 (arguments
11227 '(#:phases
11228 (modify-phases %standard-phases
11229 (add-after 'unpack 'bootstrap
11230 ;; Move the tests out of the package directory to avoid
11231 ;; packaging them.
11232 (lambda* _
11233 (rename-file "validictory/tests" "tests")
11234 (delete-file "tests/__init__.py")))
11235 (replace 'check
11236 (lambda _
11237 ;; Extend PYTHONPATH so the built package will be found.
11238 (setenv "PYTHONPATH"
11239 (string-append (getcwd) "/build/lib:"
11240 (getenv "PYTHONPATH")))
6568bd5d 11241 (invoke "py.test" "-vv" ))))))
44d10b1f
RW
11242 (native-inputs
11243 `(("python-pytest" ,python-pytest)))
11244 (home-page
11245 "https://github.com/jamesturk/validictory")
11246 (synopsis "General purpose Python data validator")
11247 (description "It allows validation of arbitrary Python data structures.
11248
11249The schema format is based on the JSON Schema
11250proposal (http://json-schema.org), so combined with json the library is also
11251useful as a validator for JSON data.")
11252 (license license:expat)))
11253
11254(define-public python2-validictory
11255 (package-with-python2 python-validictory))
11256
11257(define-public python-pyelftools
11258 (package
11259 (name "python-pyelftools")
11260 (version "0.25")
11261 (source
11262 (origin
11263 (method url-fetch)
11264 (uri (pypi-uri "pyelftools" version))
11265 (sha256
11266 (base32
11267 "090vdksbz341f7ljvr0zswblw4lspa8qaiikzyjkf318arpxmil9"))))
11268 (build-system python-build-system)
11269 (arguments
11270 `(#:phases
11271 (modify-phases %standard-phases
11272 (add-before 'check 'set-pythonpath
11273 (lambda _
11274 (setenv "PYTHONPATH"
11275 (string-append
11276 (getcwd) "/test/"
11277 ":" (getenv "PYTHONPATH")))
11278 #t)))))
11279 (home-page
11280 "https://github.com/eliben/pyelftools")
11281 (synopsis
11282 "Analyze binary and library file information")
11283 (description "This Python library provides interfaces for parsing and
11284analyzing two binary and library file formats; the Executable and Linking
11285Format (ELF), and debugging information in the Debugging With Attributed
11286Record Format (DWARF).")
11287 (license license:public-domain)))
11288
11289(define-public python-pyev
11290 (package
11291 (name "python-pyev")
11292 (version "0.9.0")
11293 (source
11294 (origin
11295 (method url-fetch)
11296 (uri (pypi-uri "pyev" version))
11297 (sha256
11298 (base32
11299 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
11300 (build-system python-build-system)
11301 (arguments
11302 `(#:tests? #f ; no test suite
11303 #:phases
11304 (modify-phases %standard-phases
11305 (add-after 'unpack 'patch
11306 (lambda* (#:key inputs #:allow-other-keys)
11307 (let ((libev (string-append (assoc-ref inputs "libev")
11308 "/lib/libev.so.4")))
11309 (substitute* "setup.py"
11310 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
11311 (string-append "libev_dll_name = \"" libev "\"")))))))))
11312 (inputs
11313 `(("libev" ,libev)))
11314 (home-page "http://pythonhosted.org/pyev/")
11315 (synopsis "Python libev interface")
11316 (description "Pyev provides a Python interface to libev.")
11317 (license license:gpl3)))
11318
11319(define-public python2-pyev
11320 (package-with-python2 python-pyev))
11321
11322(define-public python-imagesize
11323 (package
11324 (name "python-imagesize")
11325 (version "1.1.0")
11326 (source
11327 (origin
11328 (method url-fetch)
11329 (uri (pypi-uri "imagesize" version))
11330 (sha256
11331 (base32
11332 "1dg3wn7qpwmhgqc0r9na2ding1wif9q5spz3j9zn2riwphc2k0zk"))))
11333 (build-system python-build-system)
11334 (home-page "https://github.com/shibukawa/imagesize_py")
11335 (synopsis "Gets image size of files in various formats in Python")
11336 (description
11337 "This package allows determination of image size from
11338PNG, JPEG, JPEG2000 and GIF files in pure Python.")
11339 (license license:expat)))
11340
11341(define-public python2-imagesize
11342 (package-with-python2 python-imagesize))
11343
11344(define-public python-termstyle
11345 (package
11346 (name "python-termstyle")
11347 (version "0.1.11")
11348 (source
11349 (origin
11350 (method url-fetch)
11351 (uri (pypi-uri "termstyle" version))
11352 (sha256
11353 (base32
11354 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
11355 (build-system python-build-system)
11356 (arguments
11357 '(#:phases
11358 (modify-phases %standard-phases
11359 (replace 'check
11360 (lambda _
831080a6 11361 (invoke "python" "test3.py"))))))
44d10b1f
RW
11362 (home-page "https://github.com/gfxmonk/termstyle")
11363 (synopsis "Console text coloring for Python")
11364 (description "This package provides console text coloring for Python.")
11365 (license license:bsd-3)))
11366
11367(define-public python-argcomplete
11368 (package
11369 (name "python-argcomplete")
11370 (version "1.7.0")
11371 (source
11372 (origin
11373 (method url-fetch)
11374 (uri (pypi-uri "argcomplete" version))
11375 (sha256
11376 (base32
11377 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
11378 (build-system python-build-system)
11379 (native-inputs
11380 `(("python-pexpect" ,python-pexpect)
11381 ("tcsh" ,tcsh)
11382 ("bash-full" ,bash))) ;full Bash for 'test_file_completion'
11383 (home-page "https://github.com/kislyuk/argcomplete")
11384 (synopsis "Shell tab completion for Python argparse")
11385 (description "argcomplete provides extensible command line tab completion
11386of arguments and options for Python scripts using @code{argparse}. It's
11387particularly useful for programs with many options or sub-parsers that can
11388dynamically suggest completions; for example, when browsing resources over the
11389network.")
11390 (license license:asl2.0)))
11391
11392(define-public python2-argcomplete
11393 (package-with-python2 python-argcomplete))
11394
11395(define-public python-xopen
11396 (package
11397 (name "python-xopen")
24d64989 11398 (version "0.5.0")
44d10b1f
RW
11399 (source
11400 (origin
11401 (method url-fetch)
11402 (uri (pypi-uri "xopen" version))
11403 (sha256
11404 (base32
24d64989 11405 "17xbrgi23l87yg6h0qcknssp2q812miiy33qw6v45v5gx0jwv5xh"))))
44d10b1f 11406 (build-system python-build-system)
24d64989
RW
11407 (propagated-inputs
11408 `(("python-setuptools-scm" ,python-setuptools-scm)))
44d10b1f
RW
11409 (home-page "https://github.com/marcelm/xopen/")
11410 (synopsis "Open compressed files transparently")
11411 (description "This module provides an @code{xopen} function that works like
11412Python's built-in @code{open} function, but can also deal with compressed files.
11413Supported compression formats are gzip, bzip2 and, xz, and are automatically
11414recognized by their file extensions. The focus is on being as efficient as
11415possible on all supported Python versions.")
11416 (license license:expat)))
11417
11418(define-public python2-xopen
11419 (let ((base (package-with-python2
11420 (strip-python2-variant python-xopen))))
11421 (package
11422 (inherit base)
11423 (propagated-inputs `(("python2-bz2file" ,python2-bz2file)
11424 ,@(package-propagated-inputs base))))))
11425
11426(define-public python-cheetah
11427 (package
11428 (name "python-cheetah")
11429 (version "3.1.0")
11430 (source
11431 (origin
11432 (method url-fetch)
11433 (uri (pypi-uri "Cheetah3" version))
11434 (sha256
11435 (base32
11436 "1ihag9cxll6b86fc8v5lkhmr3brdbi4yiz16zpgw79yylmv8fgr9"))))
11437 (build-system python-build-system)
11438 (arguments
11439 `(#:modules ((guix build utils)
11440 (guix build python-build-system)
11441 (ice-9 ftw)
11442 (srfi srfi-1)
11443 (srfi srfi-26))
11444 #:phases (modify-phases %standard-phases
11445 (add-after 'unpack 'use-absolute-python
11446 (lambda _
11447 (substitute* "Cheetah/CheetahWrapper.py"
11448 (("#!/usr/bin/env python")
11449 (string-append "#!" (which "python"))))
11450 #t))
11451 (replace 'check
11452 (lambda _
11453 (let ((cwd (getcwd)))
11454 (setenv "PYTHONPATH"
11455 (string-append
11456 cwd "/build/"
11457 (find (cut string-prefix? "lib" <>)
11458 (scandir (string-append cwd "/build")))
11459 ":" (getenv "PYTHONPATH")))
11460 (setenv "PATH"
11461 (string-append (getenv "PATH")
11462 ":" cwd "/bin"))
11463 (setenv "TMPDIR" "/tmp")
11464
11465 (substitute* "Cheetah/Tests/Test.py"
11466 (("unittest.TextTestRunner\\(\\)")
11467 "unittest.TextTestRunner(verbosity=2)"))
11468
11469 (invoke "python" "Cheetah/Tests/Test.py")))))))
11470 (propagated-inputs
11471 `(("python-markdown" ,python-markdown))) ;optional
11472 (home-page "http://cheetahtemplate.org/")
11473 (synopsis "Template engine")
11474 (description "Cheetah is a text-based template engine and Python code
11475generator.
11476
11477Cheetah can be used as a standalone templating utility or referenced as
11478a library from other Python applications. It has many potential uses,
11479but web developers looking for a viable alternative to ASP, JSP, PHP and
11480PSP are expected to be its principle user group.
11481
11482Features:
11483@enumerate
11484@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
11485 text-based format.
11486@item Cleanly separates content, graphic design, and program code.
11487@item Blends the power and flexibility of Python with a simple template language
11488 that non-programmers can understand.
11489@item Gives template writers full access to any Python data structure, module,
11490 function, object, or method in their templates.
11491@item Makes code reuse easy by providing an object-orientated interface to
11492 templates that is accessible from Python code or other Cheetah templates.
11493 One template can subclass another and selectively reimplement sections of it.
11494@item Provides a simple, yet powerful, caching mechanism that can dramatically
11495 improve the performance of a dynamic website.
11496@item Compiles templates into optimized, yet readable, Python code.
11497@end enumerate")
11498 (license (license:x11-style "file://LICENSE"))))
11499
11500(define-public python2-cheetah
11501 (package-with-python2 python-cheetah))
11502
11503(define-public python-dulwich
11504 (package
11505 (name "python-dulwich")
11506 (version "0.18.6")
11507 (source
11508 (origin
11509 (method url-fetch)
11510 (uri (list (string-append "https://www.dulwich.io/releases/"
11511 "dulwich-" version ".tar.gz")
11512 (pypi-uri "dulwich" version)))
11513 (sha256
11514 (base32
11515 "1aa1xfrxkc3j9s4xi0llhf5gndyi9ryprcxsqfa5fcb8ph34981q"))))
11516 (build-system python-build-system)
11517 (arguments
11518 `(#:phases
11519 (modify-phases %standard-phases
11520 (add-before 'check 'fix-tests
11521 (lambda* (#:key inputs #:allow-other-keys)
11522 ;; The tests use Popen with a custom environment which doesn't
11523 ;; include PATH.
11524 (substitute* "dulwich/tests/compat/utils.py"
11525 (("'git'") (string-append "'"
11526 (which "git")
11527 "'")))
11528 (substitute* '("dulwich/tests/test_repository.py"
11529 "dulwich/tests/test_hooks.py")
11530 (("#!/bin/sh") (string-append "#!" (which "sh"))))
11531 (setenv "TEST_RUNNER" "unittest")
11532 (setenv "PYTHONHASHSEED" "random")
11533 #t)))))
11534 (propagated-inputs
11535 `(("python-fastimport" ,python-fastimport)))
11536 (native-inputs
11537 `(("python-mock" ,python-mock)
11538 ("python-geventhttpclient" ,python-geventhttpclient)
11539 ("git" ,git)))
11540 (home-page "https://www.dulwich.io/")
11541 (synopsis "Git implementation in Python")
11542 (description "Dulwich is an implementation of the Git file formats and
11543protocols written in pure Python.")
11544 ;; Can be used with either license.
11545 (license (list license:asl2.0 license:gpl2+))))
11546
11547(define-public python2-dulwich
11548 (package-with-python2 python-dulwich))
11549
11550(define-public python-pbkdf2
11551 (package
11552 (name "python-pbkdf2")
11553 (version "1.3")
11554 (source
11555 (origin
11556 (method url-fetch)
11557 (uri (pypi-uri "pbkdf2" version))
11558 (sha256
11559 (base32
11560 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
11561 (build-system python-build-system)
11562 (arguments
11563 '(#:phases
11564 (modify-phases %standard-phases
11565 (replace 'check
11566 (lambda _
11567 (setenv "PYTHONPATH"
11568 (string-append (getcwd) "/build/lib:"
11569 (getenv "PYTHONPATH")))
ee2bb944 11570 (invoke "python" "test/test_pbkdf2.py"))))))
44d10b1f
RW
11571 (propagated-inputs
11572 `(("python-pycrypto" ,python-pycrypto))) ; optional
11573 (home-page "https://www.dlitz.net/software/python-pbkdf2/")
11574 (synopsis "Password-based key derivation")
11575 (description "This module implements the password-based key derivation
11576function, PBKDF2, specified in RSA PKCS#5 v2.0.
11577
11578PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
11579is part of the RSA Public Key Cryptography Standards series. The provided
11580implementation takes a password or a passphrase and a salt value (and
11581optionally a iteration count, a digest module, and a MAC module) and provides
11582a file-like object from which an arbitrarly-sized key can be read.")
11583 (license license:expat)))
11584
11585(define-public python2-pbkdf2
11586 (package-with-python2 python-pbkdf2))
11587
11588(define-public python-qrcode
11589 (package
11590 (name "python-qrcode")
217ea1a1 11591 (version "6.1")
44d10b1f
RW
11592 (source
11593 (origin
11594 (method url-fetch)
11595 (uri (pypi-uri "qrcode" version))
11596 (sha256
217ea1a1 11597 (base32 "0sa3n298b9jpz6zn0birnjii3mg9sihjq28n9nzjlzv09y2m6ljh"))))
44d10b1f
RW
11598 (build-system python-build-system)
11599 (arguments
11600 ;; FIXME: Tests require packaging 'pymaging'.
11601 '(#:tests? #f))
11602 (propagated-inputs
11603 `(("python-lxml" ,python-lxml) ; for SVG output
11604 ("python-pillow" ,python-pillow) ; for PNG output
11605 ("python-six" ,python-six)))
44d10b1f
RW
11606 (home-page "https://github.com/lincolnloop/python-qrcode")
11607 (synopsis "QR Code image generator")
11608 (description "This package provides a pure Python QR Code generator
11609module. It uses the Python Imaging Library (PIL) to allow for the generation
11610of QR Codes.
11611
11612In addition this package provides a command line tool to generate QR codes and
11613either write these QR codes to a file or do the output as ascii art at the
11614console.")
11615 (license license:bsd-3)))
11616
11617(define-public python2-qrcode
11618 (package-with-python2 python-qrcode))
11619
11620(define-public python-rst2ansi
11621 (package
11622 (name "python-rst2ansi")
11623 (version "0.1.5")
11624 (source
11625 (origin
11626 (method url-fetch)
11627 (uri (pypi-uri "rst2ansi" version))
11628 (sha256
11629 (base32
11630 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
11631 (build-system python-build-system)
11632 (propagated-inputs
11633 `(("python-docutils" ,python-docutils)))
11634 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
11635 (synopsis "Convert RST to ANSI-decorated console output")
11636 (description
11637 "Python module dedicated to rendering RST (reStructuredText) documents
11638to ansi-escaped strings suitable for display in a terminal.")
11639 (license license:expat)))
11640
11641(define-public python-ansi2html
11642 (package
11643 (name "python-ansi2html")
11644 (version "1.2.0")
11645 (source
11646 (origin
11647 (method url-fetch)
11648 (uri (pypi-uri "ansi2html" version))
11649 (sha256
11650 (base32
11651 "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
11652 (build-system python-build-system)
11653 (native-inputs
11654 `(("python-mock" ,python-mock)
11655 ("python-nose" ,python-nose)))
11656 (propagated-inputs
11657 `(("python-six" ,python-six)))
11658 (home-page "https://github.com/ralphbean/ansi2html")
11659 (synopsis "Convert ANSI-decorated console output to HTML")
11660 (description
11661 "@command{ansi2html} is a Python library and command line utility for
11662convering text with ANSI color codes to HTML or LaTeX.")
11663 (license license:gpl3+)))
11664
11665(define-public python2-ansi2html
11666 (package-with-python2 python-ansi2html))
11667
11668(define-public python-ddt
11669 (package
11670 (name "python-ddt")
11671 (version "1.1.3")
11672 (source
11673 (origin
11674 (method url-fetch)
11675 (uri (pypi-uri "ddt" version))
11676 (sha256
11677 (base32
11678 "1lw17420iimhghkgzgax85nn8d1an2d6k2cfvb7j5kwn2dqlr1vk"))))
11679 (build-system python-build-system)
11680 (native-inputs
11681 `(("python-mock" ,python-mock)
11682 ("python-nose" ,python-nose)))
11683 (propagated-inputs
11684 `(("python-six" ,python-six)
11685 ("python-pyyaml" ,python-pyyaml)))
11686 (home-page "https://github.com/txels/ddt")
11687 (synopsis "Data-Driven Tests")
11688 (description
11689 "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by
11690running it with different test data, and make it appear as multiple test
11691cases.")
11692 (license license:expat)))
11693
11694(define-public python2-ddt
11695 (package-with-python2 python-ddt))
11696
11697(define-public python-pycountry
11698 (package
11699 (name "python-pycountry")
11700 (version "18.5.26")
11701 (source
11702 (origin
11703 (method url-fetch)
11704 (uri (pypi-uri "pycountry" version))
11705 (sha256
11706 (base32
11707 "15q9j047s3yc9cfcxq1ch8b71f81na44cr6dydd5gxk0ki9a4akz"))))
11708 (build-system python-build-system)
11709 (home-page "https://bitbucket.org/flyingcircus/pycountry")
11710 (synopsis "ISO databases for languages, countries, currencies, etc.")
11711 (description
11712 "@code{pycountry} provides the ISO databases for the standards:
11713@enumerate
11714@item 639-3 (Languages)
11715@item 3166 (Countries)
11716@item 3166-3 (Deleted Countries)
11717@item 3166-2 (Subdivisions of countries)
11718@item 4217 (Currencies)
11719@item 15924 (Scripts)
11720@end enumerate
11721It includes a copy from Debian’s pkg-isocodes and makes the data accessible
11722through a Python API.")
11723 (license license:lgpl2.1+)))
11724
11725(define-public python2-pycountry
11726 (package-with-python2 python-pycountry))
11727
11728(define-public python-pycosat
11729 (package
11730 (name "python-pycosat")
11731 (version "0.6.1")
11732 (source
11733 (origin
11734 (method url-fetch)
11735 (uri (pypi-uri "pycosat" version))
11736 (sha256
11737 (base32
11738 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
11739 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
11740 (build-system python-build-system)
11741 (home-page "https://github.com/ContinuumIO/pycosat")
11742 (synopsis "Bindings to picosat (a SAT solver)")
11743 (description
11744 "This package provides efficient Python bindings to @code{picosat} on
11745the C level. When importing pycosat, the @code{picosat} solver becomes part
11746of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
11747Problem} (SAT) solver.")
11748 (license license:expat)))
11749
11750(define-public python2-pycosat
11751 (package-with-python2 python-pycosat))
11752
11753(define-public python2-ruamel.ordereddict
11754 (package
11755 (name "python2-ruamel.ordereddict")
11756 (version "0.4.9")
11757 (source
11758 (origin
11759 (method url-fetch)
11760 (uri (pypi-uri "ruamel.ordereddict" version))
11761 (sha256
11762 (base32
11763 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
11764 (build-system python-build-system)
11765 (arguments
11766 `(#:python ,python-2
11767 #:phases
11768 (modify-phases %standard-phases
11769 (delete 'check)
11770 (add-after 'install 'check
11771 (lambda* (#:key inputs outputs #:allow-other-keys)
11772 (add-installed-pythonpath inputs outputs)
f987ac30 11773 (invoke "python" "test/testordereddict.py"))))))
44d10b1f
RW
11774 (home-page "https://bitbucket.org/ruamel/ordereddict")
11775 (synopsis "Version of dict that keeps keys in insertion order")
11776 (description
11777 "This is an implementation of an ordered dictionary with @dfn{Key
11778Insertion Order} (KIO: updates of values do not affect the position of the
11779key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
11780removed and put at the back). The standard library module @code{OrderedDict},
11781implemented later, implements a subset of @code{ordereddict} functionality.
11782Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
11783Order} (KSO, no sorting function can be specified, but a transform can be
11784specified to apply on the key before comparison (e.g. @code{string.lower})).")
11785 (license license:expat)))
11786
11787(define-public python-pypeg2
11788 (package
11789 (name "python-pypeg2")
11790 (version "2.15.2")
11791 (source
11792 (origin
11793 (method url-fetch)
11794 (uri (pypi-uri "pyPEG2" version))
11795 (sha256
11796 (base32
11797 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
11798 (build-system python-build-system)
11799 (propagated-inputs `(("python-lxml" ,python-lxml)))
11800 (arguments
11801 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
11802 '(#:tests? #f))
11803 (home-page "https://fdik.org/pyPEG/")
11804 (synopsis "Parsering Expression Grammars in Python")
11805 (description "PyPEG is an intrinsic parser interpreter framework for
11806Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
11807parse many formal languages.")
11808 (license license:gpl2)))
11809
11810(define-public python-incremental
11811 (package
11812 (name "python-incremental")
11813 (version "17.5.0")
11814 (source
11815 (origin
11816 (method url-fetch)
11817 (uri (pypi-uri "incremental" version))
11818 (sha256
11819 (base32
11820 "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv"))))
11821 (build-system python-build-system)
11822 (home-page "https://github.com/hawkowl/incremental")
11823 (synopsis "Library for versioning Python projects")
11824 (description "Incremental is a small library that versions your Python
11825projects.")
11826 (license license:expat)))
11827
11828(define-public python2-incremental
11829 (package-with-python2 python-incremental))
11830
11831(define-public python-invoke
11832 (package
11833 (name "python-invoke")
11834 (home-page "http://www.pyinvoke.org/")
11835 (version "1.1.0")
11836 (source (origin
11837 (method url-fetch)
11838 (uri (pypi-uri "invoke" version))
11839 (sha256
11840 (base32
11841 "0aiy1xvk1f91246zxd1zqrm679vdvd10h843a2na41cqr3cflpi6"))))
11842 (build-system python-build-system)
11843 (arguments
11844 ;; XXX: Requires many dependencies that are not yet in Guix.
11845 `(#:tests? #f))
11846 (synopsis "Pythonic task execution")
11847 (description
11848 "Invoke is a Python task execution tool and library, drawing inspiration
11849from various sources to arrive at a powerful and clean feature set. It is
11850evolved from the Fabric project, but focuses on local and abstract concerns
11851instead of servers and network commands.")
11852 (license license:bsd-3)))
11853
11854(define-public python2-invoke
11855 (package-with-python2 python-invoke))
11856
11857(define-public python-automat
11858 (package
11859 (name "python-automat")
919d80a0 11860 (version "0.7.0")
44d10b1f
RW
11861 (source (origin
11862 (method url-fetch)
11863 (uri (pypi-uri "Automat" version))
11864 (sha256
11865 (base32
919d80a0 11866 "03ivg70n3b1cbcd2zvjhk8y4kmqxcvhmili39lmgx09dza1qpmyb"))))
44d10b1f
RW
11867 (build-system python-build-system)
11868 ;; We disable the tests because they require python-twisted, while
11869 ;; python-twisted depends on python-automat. Twisted is optional, but the
11870 ;; tests fail if it is not available. Also see
11871 ;; <https://github.com/glyph/automat/issues/71>.
11872 (arguments '(#:tests? #f))
11873 (native-inputs
11874 `(("python-m2r" ,python-m2r)
11875 ("python-setuptools-scm" ,python-setuptools-scm)
11876 ("python-graphviz" ,python-graphviz)))
11877 (propagated-inputs
11878 `(("python-six" ,python-six)
11879 ("python-attrs" ,python-attrs)))
11880 (home-page "https://github.com/glyph/Automat")
11881 (synopsis "Self-service finite-state machines")
11882 (description "Automat is a library for concise, idiomatic Python
11883expression of finite-state automata (particularly deterministic finite-state
11884transducers).")
11885 (license license:expat)))
11886
11887(define-public python2-automat
11888 (package-with-python2 python-automat))
11889
11890(define-public python-m2r
11891 (package
11892 (name "python-m2r")
bcfb8fac 11893 (version "0.2.1")
44d10b1f
RW
11894 (source (origin
11895 (method url-fetch)
11896 (uri (pypi-uri "m2r" version))
11897 (sha256
11898 (base32
bcfb8fac 11899 "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z"))))
44d10b1f
RW
11900 (build-system python-build-system)
11901 (propagated-inputs
11902 `(("python-docutils" ,python-docutils)
11903 ("python-mistune" ,python-mistune)))
11904 (native-inputs
11905 `(("python-pygments" ,python-pygments)
11906 ("python-mock" ,python-mock)))
11907 (home-page "https://github.com/miyakogi/m2r")
11908 (synopsis "Markdown to reStructuredText converter")
11909 (description "M2R converts a markdown file including reST markups to valid
11910reST format.")
11911 (license license:expat)))
11912
11913(define-public python2-m2r
11914 (package-with-python2 python-m2r))
11915
11916(define-public python-constantly
11917 (package
11918 (name "python-constantly")
11919 (version "15.1.0")
11920 (source (origin
11921 (method url-fetch)
11922 (uri (pypi-uri "constantly" version))
11923 (sha256
11924 (base32
11925 "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq"))))
11926 (build-system python-build-system)
11927 (home-page "https://github.com/twisted/constantly")
11928 (synopsis "Symbolic constants in Python")
11929 (description "Constantly is a Python library that provides symbolic
11930constant support. It includes collections and constants with text, numeric,
11931and bit flag values.")
11932 (license license:expat)))
11933
11934(define-public python2-constantly
11935 (package-with-python2 python-constantly))
11936
11937(define-public python-attrs
11938 (package
11939 (name "python-attrs")
67458e20 11940 (version "19.1.0")
44d10b1f
RW
11941 (source (origin
11942 (method url-fetch)
11943 (uri (pypi-uri "attrs" version))
11944 (sha256
11945 (base32
67458e20 11946 "16g33zr5f449lqc5wgvzpknxryfzrfsxcr6kpgxwn7l5fkv71f7h"))))
44d10b1f
RW
11947 (build-system python-build-system)
11948 (arguments
11949 `(#:modules ((guix build utils)
11950 (guix build python-build-system)
11951 (ice-9 ftw)
11952 (srfi srfi-1)
11953 (srfi srfi-26))
11954 #:phases (modify-phases %standard-phases
11955 (replace 'check
11956 (lambda _
11957 (let ((cwd (getcwd)))
11958 (setenv "PYTHONPATH"
11959 (string-append
11960 cwd "/build/"
11961 (find (cut string-prefix? "lib" <>)
11962 (scandir (string-append cwd "/build")))
11963 ":"
11964 (getenv "PYTHONPATH")))
11965 (invoke "python" "-m" "pytest")))))))
11966 (native-inputs
11967 `(("python-coverage" ,python-coverage)
11968 ("python-hypothesis" ,python-hypothesis)
11969 ("python-pympler" ,python-pympler)
11970 ("python-pytest" ,python-pytest)
11971 ("python-six" ,python-six)
11972 ("python-sphinx" ,python-sphinx)
11973 ("python-zope-interface" ,python-zope-interface)))
11974 (home-page "https://github.com/python-attrs/attrs/")
11975 (synopsis "Attributes without boilerplate")
11976 (description "@code{attrs} is a Python package with class decorators that
11977ease the chores of implementing the most common attribute-related object
11978protocols.")
11979 (license license:expat)))
11980
11981(define-public python2-attrs
11982 (package-with-python2 python-attrs))
11983
11984(define-public python-attrs-bootstrap
11985 (package
11986 (inherit python-attrs)
11987 (name "python-attrs-bootstrap")
11988 ;; Keep this on a fixed version so python-attrs can be updated without
11989 ;; triggering a mass-rebuild. FIXME: Update this in the next rebuild cycle.
11990 (version "17.4.0")
11991 (source (origin
11992 (method url-fetch)
11993 (uri (pypi-uri "attrs" version))
11994 (sha256
11995 (base32
11996 "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w"))))
11997 (native-inputs `())
11998 (arguments `(#:tests? #f))))
11999
12000(define-public python2-attrs-bootstrap
12001 (package-with-python2 python-attrs-bootstrap))
12002
12003(define-public python2-cliapp
12004 (package
12005 (name "python2-cliapp")
9064b84e 12006 (version "1.20180812.1")
44d10b1f
RW
12007 (source
12008 (origin
12009 (method url-fetch)
12010 (uri (string-append
12011 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
12012 version ".tar.gz"))
12013 (sha256
12014 (base32
9064b84e 12015 "1c1jlblbns8qhiaqjpg4xi6lip8xwfc5w643p43rg543havaj45x"))))
44d10b1f
RW
12016 (build-system python-build-system)
12017 (arguments
12018 `(#:python ,python-2
12019 #:phases
12020 (modify-phases %standard-phases
12021 ;; check phase needs to be run before the build phase. If not,
12022 ;; coverage-test-runner looks for tests for the built source files,
12023 ;; and fails.
12024 (delete 'check)
12025 (add-before 'build 'check
12026 (lambda _
12027 ;; Disable python3 tests
12028 (substitute* "check"
12029 (("python3") "# python3"))
6c826d32 12030 (invoke "./check"))))))
44d10b1f
RW
12031 (native-inputs
12032 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
12033 ("python2-pep8" ,python2-pep8)))
12034 (propagated-inputs
12035 `(("python2-pyaml" ,python2-pyaml)))
12036 (home-page "https://liw.fi/cliapp/")
12037 (synopsis "Python framework for command line programs")
12038 (description "@code{python2-cliapp} is a python framework for
12039command line programs. It contains the typical stuff such programs
12040need to do, such as parsing the command line for options, and
12041iterating over input files.")
12042 (license license:gpl2+)))
12043
12044(define-public python2-ttystatus
12045 (package
12046 (name "python2-ttystatus")
e516a9c2 12047 (version "0.36")
44d10b1f
RW
12048 (source
12049 (origin
12050 (method url-fetch)
12051 (uri (string-append
12052 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
12053 version ".tar.gz"))
12054 (sha256
12055 (base32
e516a9c2 12056 "06mdk4d19zw2j3is54gndhzl396g3xc8k52m7i86z69s9hcz71by"))))
44d10b1f
RW
12057 (build-system python-build-system)
12058 (native-inputs
12059 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
12060 ("python2-pep8" ,python2-pep8)))
12061 (arguments
12062 `(#:python ,python-2
12063 #:phases
12064 (modify-phases %standard-phases
12065 ;; check phase needs to be run before the build phase. If not,
12066 ;; coverage-test-runner looks for tests for the built source files,
12067 ;; and fails.
12068 (delete 'check)
12069 (add-before 'build 'check
cbeee881 12070 (lambda _ (invoke "make" "check"))))))
44d10b1f
RW
12071 (home-page "https://liw.fi/ttystatus/")
12072 (synopsis "Python library for showing progress reporting and
12073status updates on terminals")
12074 (description "@code{python2-ttystatus} is a python library for
12075showing progress reporting and status updates on terminals, for
12076command line programs. Output is automatically adapted to the width
12077of the terminal: truncated if it does not fit, and resized if the
12078terminal size changes.")
12079 (license license:gpl3+)))
12080
12081(define-public python2-tracing
12082 (package
12083 (name "python2-tracing")
12084 (version "0.10")
12085 (source
12086 (origin
12087 (method url-fetch)
12088 (uri (string-append
12089 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
12090 version ".tar.gz"))
12091 (sha256
12092 (base32
12093 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
12094 (build-system python-build-system)
12095 (arguments
12096 `(#:python ,python-2))
12097 (home-page "https://liw.fi/tracing/")
12098 (synopsis "Python debug logging helper")
12099 (description "@code{python2-tracing} is a python library for
12100logging debug messages. It provides a way to turn debugging messages
12101on and off, based on the filename they occur in. It is much faster
12102than using @code{logging.Filter} to accomplish the same thing, which
12103matters when code is run in production mode. The actual logging still
12104happens using the @code{logging} library.")
12105 (license license:gpl3+)))
12106
12107(define-public python2-larch
12108 (package
12109 (name "python2-larch")
12110 (version "1.20151025")
12111 (source
12112 (origin
12113 (method url-fetch)
12114 (uri (string-append
12115 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
12116 version ".tar.gz"))
12117 (patches (search-patches
12118 "python2-larch-coverage-4.0a6-compatibility.patch"))
12119 (sha256
12120 (base32
12121 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
12122 (build-system python-build-system)
12123 (arguments
12124 `(#:python ,python-2
12125 #:phases
12126 (modify-phases %standard-phases
12127 ;; check phase needs to be run before the build phase. If not,
12128 ;; coverage-test-runner looks for tests for the built source files,
12129 ;; and fails.
12130 (delete 'check)
12131 (add-before 'build 'check
204ad455 12132 (lambda _ (invoke "make" "check"))))))
44d10b1f
RW
12133 (native-inputs
12134 `(("cmdtest" ,cmdtest)
12135 ("python2-coverage-test-runner" ,python2-coverage-test-runner)))
12136 (propagated-inputs
12137 `(("python2-tracing" ,python2-tracing)))
12138 (home-page "https://liw.fi/larch/")
12139 (synopsis "Python copy-on-write B-tree library")
12140 (description "@code{python2-larch} is an implementation of
12141particular kind of B-tree, based on research by Ohad Rodeh. See
12142@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
12143on the data structure.
12144
12145The distinctive feature of this B-tree is that a node is never
12146(conceptually) modified. Instead, all updates are done by
12147copy-on-write. This makes it easy to clone a tree, and modify only the
12148clone, while other processes access the original tree.")
12149 (license license:gpl3+)))
12150
12151(define-public python-astroid
12152 (package
12153 (name "python-astroid")
12154 (version "2.1.0")
12155 (source
12156 (origin
12157 (method url-fetch)
12158 (uri (pypi-uri "astroid" version))
12159 (sha256
12160 (base32
12161 "08hz675knh4294bancdapql392fmbjyimhbyrmfkz1ka7l035c1m"))))
12162 (build-system python-build-system)
12163 (propagated-inputs
12164 `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
12165 ("python-six" ,python-six)
12166 ("python-wrapt" ,python-wrapt)))
12167 (native-inputs
12168 `(("python-dateutil" ,python-dateutil)
12169 ("python-nose" ,python-nose)
12170 ("python-pytest" ,python-pytest)
12171 ("python-pytest-runner" ,python-pytest-runner)))
12172 (arguments
12173 `(#:phases
12174 (modify-phases %standard-phases
12175 (add-after 'unpack 'remove-spurious-test
12176 (lambda _
12177 ;; This can be removed after upgrading from python-3.7
12178 ;; https://github.com/PyCQA/astroid/issues/593
12179 ;; https://bugs.python.org/issue34056
12180 (delete-file "astroid/tests/unittest_modutils.py")
12181 #t))
12182 (replace 'check
12183 (lambda _
12184 (invoke "pytest" "astroid"))))))
12185 (home-page "https://github.com/PyCQA/astroid")
12186 (synopsis "Common base representation of python source code for pylint and
12187other projects")
12188 (description "@code{python-astroid} provides a common base representation
12189of python source code for projects such as pychecker, pyreverse, pylint, etc.
12190
12191It provides a compatible representation which comes from the _ast module. It
12192rebuilds the tree generated by the builtin _ast module by recursively walking
12193down the AST and building an extended ast. The new node classes have
12194additional methods and attributes for different usages. They include some
12195support for static inference and local name scopes. Furthermore, astroid
12196builds partial trees by inspecting living objects.")
12197 (license license:lgpl2.1+)
12198 (properties `((python2-variant . ,(delay python2-astroid))))))
12199
12200(define-public python2-astroid
12201 (let ((base (package-with-python2
12202 (strip-python2-variant python-astroid))))
12203 (package (inherit base)
12204 ;; Version 2.x removes python2 support.
12205 (version "1.6.5")
12206 (source
12207 (origin
12208 (method url-fetch)
12209 (uri (pypi-uri "astroid" version))
12210 (sha256
12211 (base32
12212 "0fir4b67sm7shcacah9n61pvq313m523jb4q80sycrh3p8nmi6zw"))))
12213 (arguments
12214 (substitute-keyword-arguments (package-arguments base)
12215 ((#:phases phases)
12216 `(modify-phases ,phases
12217 (add-after 'unpack 'remove-spurious-test
12218 (lambda _
12219 ;; https://github.com/PyCQA/astroid/issues/276
12220 (delete-file "astroid/tests/unittest_brain.py")
12221 #t))
12222 (replace 'check
12223 (lambda _
12224 (invoke"python" "-m" "unittest" "discover"
12225 "-p" "unittest*.py")))))))
12226 (native-inputs `())
12227 (propagated-inputs
12228 `(("python2-backports-functools-lru-cache"
12229 ,python2-backports-functools-lru-cache)
12230 ("python2-enum34" ,python2-enum34)
12231 ("python2-singledispatch" ,python2-singledispatch)
12232 ,@(package-propagated-inputs base))))))
12233
12234(define-public python-isort
12235 (package
12236 (name "python-isort")
e2227b6a 12237 (version "4.3.4")
44d10b1f
RW
12238 (source
12239 (origin
e2227b6a
EF
12240 (method git-fetch)
12241 (uri (git-reference
12242 ;; Tests pass only from the Github sources
12243 (url "https://github.com/timothycrosley/isort")
12244 (commit version)))
12245 (file-name (git-file-name name version))
44d10b1f
RW
12246 (sha256
12247 (base32
e2227b6a 12248 "1q0mlrpki5vjbgwxag5rghljjcfg7mvb0pbkwid80p0sqrxlm2p6"))))
44d10b1f
RW
12249 (build-system python-build-system)
12250 (native-inputs
12251 `(("python-mock" ,python-mock)
12252 ("python-pytest" ,python-pytest)))
12253 (home-page "https://github.com/timothycrosley/isort")
12254 (synopsis "Python utility/library to sort python imports")
12255 (description "@code{python-isort} is a python utility/library to sort
12256imports alphabetically, and automatically separated into sections. It
12257provides a command line utility, a python library and plugins for various
12258editors.")
e2227b6a
EF
12259 (license license:expat)
12260 (properties `((python2-variant . ,(delay python2-isort))))))
44d10b1f
RW
12261
12262(define-public python2-isort
e2227b6a
EF
12263 (let ((base (package-with-python2
12264 (strip-python2-variant python-isort))))
12265 (package (inherit base)
12266 (native-inputs
12267 `(("python2-futures" ,python2-futures)
12268 ,@(package-native-inputs base))))))
44d10b1f
RW
12269
12270(define-public python2-backports-functools-lru-cache
12271 (package
12272 (name "python2-backports-functools-lru-cache")
12273 (version "1.5")
12274 (source
12275 (origin
12276 (method url-fetch)
12277 ;; only the pypi tarballs contain the necessary metadata
12278 (uri (pypi-uri "backports.functools_lru_cache" version))
12279 (sha256
12280 (base32
12281 "06jgv8gib4fhky0p5cmxdghvsgjyzcdgk48k8pxb1ccf11znk64x"))))
12282 (build-system python-build-system)
12283 (native-inputs
12284 `(("python2-setuptools-scm" ,python2-setuptools-scm)))
12285 (arguments
12286 `(#:python ,python-2))
12287 (home-page "https://github.com/jaraco/backports.functools_lru_cache")
12288 (synopsis "Backport of functools.lru_cache from Python 3.3")
12289 (description "@code{python2-backports-functools-lru-cache} is a backport
12290of @code{functools.lru_cache} from python 3.3.")
12291 (license license:expat)))
12292
12293(define-public python-configparser
12294 (package
12295 (name "python-configparser")
12296 (version "3.5.0")
12297 (source
12298 (origin
12299 (method url-fetch)
12300 (uri (string-append
12301 "https://bitbucket.org/ambv/configparser/get/"
12302 version ".tar.bz2"))
12303 (file-name (string-append name "-" version ".tar.gz"))
12304 (sha256
12305 (base32
12306 "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
12307 (build-system python-build-system)
809f003f 12308 (home-page "https://github.com/jaraco/configparser/")
44d10b1f
RW
12309 (synopsis "Backport of configparser from python 3.5")
12310 (description "@code{python-configparser} is a backport of
12311@code{configparser} from Python 3.5 so that it can be used directly
12312in other versions.")
12313 (license license:expat)))
12314
12315(define-public python2-configparser
12316 (package-with-python2 python-configparser))
12317
12318(define-public python-mando
12319 (package
12320 (name "python-mando")
12321 (version "0.6.4")
12322 (source (origin
12323 (method url-fetch)
12324 (uri (pypi-uri "mando" version))
12325 (sha256
12326 (base32
12327 "0q6rl085q1hw1wic52pqfndr0x3nirbxnhqj9akdm5zhq2fv3zkr"))))
12328 (build-system python-build-system)
12329 (propagated-inputs
12330 `(("python-rst2ansi" ,python-rst2ansi)
12331 ("python-six" ,python-six)))
12332 (native-inputs
12333 `(("python-pytest" ,python-pytest)))
12334 (home-page "https://mando.readthedocs.org/")
12335 (synopsis
12336 "Wrapper around argparse, allowing creation of complete CLI applications")
12337 (description
12338 "This package is a wrapper around argparse, allowing you to write complete CLI
12339applications in seconds while maintaining all the flexibility.")
12340 (license license:expat)))
12341
12342(define-public python2-mando
12343 (package-with-python2 python-mando))
12344
70daf82f
RW
12345(define-public python2-argparse
12346 (package
12347 (name "python2-argparse")
12348 (version "1.4.0")
12349 (source
12350 (origin
12351 (method url-fetch)
12352 (uri (pypi-uri "argparse" version))
12353 (sha256
12354 (base32
12355 "1r6nznp64j68ih1k537wms7h57nvppq0szmwsaf99n71bfjqkc32"))))
12356 (build-system python-build-system)
12357 (arguments
12358 `(#:python ,python-2))
12359 (home-page "https://github.com/ThomasWaldmann/argparse/")
12360 (synopsis "Python command-line parsing library")
12361 (description
12362 "This package is mostly for people who want to have @code{argparse} on
12363older Pythons because it was not part of the standard library back then.")
12364 (license license:psfl)))
12365
44d10b1f
RW
12366(define-public python-fudge
12367 (package
12368 (name "python-fudge")
12369 ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
12370 ;; package, which is currently the only use of this package.
12371 (version "0.9.6")
12372 (source
12373 (origin
12374 (method url-fetch)
12375 (uri (pypi-uri "fudge" version))
12376 (sha256
12377 (base32
12378 "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
12379 (build-system python-build-system)
12380 (arguments
12381 `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package.
12382 (home-page "https://github.com/fudge-py/fudge")
12383 (synopsis "Replace real objects with fakes/mocks/stubs while testing")
12384 (description
12385 "Fudge is a Python module for using fake objects (mocks and stubs) to
12386test real ones.
12387
12388In readable Python code, you declare the methods available on your fake object
12389and how they should be called. Then you inject that into your application and
12390start testing. This declarative approach means you don’t have to record and
12391playback actions and you don’t have to inspect your fakes after running code.
12392If the fake object was used incorrectly then you’ll see an informative
12393exception message with a traceback that points to the culprit.")
12394 (license license:expat)))
12395
12396(define-public python2-fudge
12397 (package-with-python2 python-fudge))
12398
12399(define-public python-mwclient
12400 (package
12401 (name "python-mwclient")
12402 (version "0.8.4")
12403 (source
12404 (origin
12405 (method url-fetch)
12406 ;; The PyPI version wouldn't contain tests.
12407 (uri (string-append "https://github.com/mwclient/mwclient/archive/"
12408 "v" version ".tar.gz"))
12409 (file-name (string-append name "-" version ".tar.gz"))
12410 (sha256
12411 (base32
12412 "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv"))))
12413 (build-system python-build-system)
12414 (propagated-inputs
12415 `(("python-requests" ,python-requests)
12416 ("python-requests-oauthlib"
12417 ,python-requests-oauthlib)
12418 ("python-six" ,python-six)))
12419 (native-inputs
12420 `(("python-mock" ,python-mock)
12421 ("python-pytest" ,python-pytest)
12422 ("python-pytest-pep8" ,python-pytest-pep8)
12423 ("python-pytest-cache" ,python-pytest-cache)
12424 ("python-pytest-cov" ,python-pytest-cov)
12425 ("python-responses" ,python-responses)))
12426 (home-page "https://github.com/btongminh/mwclient")
12427 (synopsis "MediaWiki API client")
12428 (description "This package provides a MediaWiki API client.")
12429 (license license:expat)))
12430
12431(define-public python2-mwclient
12432 (package-with-python2 python-mwclient))
12433
12434(define-public python-utils
12435 (package
12436 (name "python-utils")
12437 (version "2.1.0")
12438 (source (origin
12439 (method url-fetch)
12440 (uri (pypi-uri "python-utils" version))
12441 (sha256
12442 (base32
12443 "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
12444 (build-system python-build-system)
12445 (native-inputs
12446 `(("pytest-runner" ,python-pytest-runner)
12447 ("pytest" ,python-pytest)
12448 ("six" ,python-six)))
12449 (home-page "https://github.com/WoLpH/python-utils")
12450 (synopsis "Convenient utilities not included with the standard Python install")
12451 (description
12452 "Python Utils is a collection of small Python functions and classes which
12453make common patterns shorter and easier.")
12454 (license license:bsd-2)))
12455
12456(define-public python2-utils
12457 (package-with-python2 python-utils))
12458
44d10b1f
RW
12459(define-public python-diff-match-patch
12460 (package
12461 (name "python-diff-match-patch")
12462 (version "20121119")
12463 (source
12464 (origin
12465 (method url-fetch)
12466 (uri (pypi-uri "diff-match-patch" version))
12467 (sha256
12468 (base32
12469 "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
12470 (build-system python-build-system)
12471 (home-page "https://code.google.com/p/google-diff-match-patch")
12472 (synopsis "Synchronize plain text")
12473 (description "Diff Match and Patch libraries offer robust algorithms to
12474perform the operations required for synchronizing plain text.")
12475 (license license:asl2.0)))
12476
12477(define-public python2-diff-match-patch
12478 (package-with-python2 python-diff-match-patch))
12479
12480(define-public python-dirsync
12481 (package
12482 (name "python-dirsync")
12483 (version "2.2.3")
12484 (source
12485 (origin
12486 (method url-fetch)
12487 (uri (pypi-uri "dirsync" version))
12488 (sha256
12489 (base32
12490 "1r40fkanksagcszf1ag85mdr8w7rgc7196n6s1qlsk2abw6i7v0z"))))
12491 (build-system python-build-system)
12492 (propagated-inputs
12493 `(("six" ,python-six)))
12494 (home-page "https://bitbucket.org/tkhyn/dirsync")
12495 (synopsis "Advanced directory tree synchronisation tool")
12496 (description "Advanced directory tree synchronisation tool.")
12497 (license license:expat)))
12498
12499(define-public python2-dirsync
12500 (package-with-python2 python-dirsync))
12501
12502(define-public python-levenshtein
12503 (package
12504 (name "python-levenshtein")
12505 (version "0.12.0")
12506 (source
12507 (origin
12508 (method url-fetch)
12509 (uri (pypi-uri "python-Levenshtein" version))
12510 (sha256
12511 (base32
12512 "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
12513 (build-system python-build-system)
12514 (home-page "https://github.com/ztane/python-Levenshtein")
12515 (synopsis "Fast computation of Levenshtein distance and string similarity")
12516 (description
12517 "The Levenshtein Python C extension module contains functions for fast computation of
12518@enumerate
12519@item Levenshtein (edit) distance, and edit operations
12520@item string similarity
12521@item approximate median strings, and generally string averaging
12522@item string sequence and set similarity
12523@end enumerate
12524It supports both normal and Unicode strings.")
12525 (license license:gpl2+)))
12526
12527(define-public python2-levenshtein
12528 (package-with-python2 python-levenshtein))
12529
12530(define-public python-scandir
12531 (package
12532 (name "python-scandir")
12533 (version "1.9.0")
12534 (source
12535 (origin
12536 (method url-fetch)
12537 (uri (pypi-uri "scandir" version))
12538 (sha256
12539 (base32 "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4"))))
12540 (build-system python-build-system)
12541 (arguments
12542 `(#:phases (modify-phases %standard-phases
12543 (replace 'check
12544 (lambda _
12545 (invoke "python" "test/run_tests.py"))))))
12546 (home-page "https://github.com/benhoyt/scandir")
12547 (synopsis "Directory iteration function")
12548 (description
12549 "Directory iteration function like os.listdir(), except that instead of
12550returning a list of bare filenames, it yields DirEntry objects that include
12551file type and stat information along with the name. Using scandir() increases
12552the speed of os.walk() by 2-20 times (depending on the platform and file
12553system) by avoiding unnecessary calls to os.stat() in most cases.
12554
12555This package is part of the Python standard library since version 3.5.")
12556 (license license:bsd-3)))
12557
12558(define-public python2-scandir
12559 (package-with-python2 python-scandir))
12560
12561(define-public python2-stemming
12562 (package
12563 (name "python2-stemming")
12564 (version "1.0.1")
12565 (source
12566 (origin
12567 (method url-fetch)
12568 (uri (pypi-uri "stemming" version))
12569 (sha256
12570 (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
12571 (build-system python-build-system)
12572 (arguments
12573 `(#:python ,python-2))
12574 (home-page "https://bitbucket.org/mchaput/stemming/overview")
12575 (synopsis "Python implementations of various stemming algorithms")
12576 (description
12577 "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
12578stemming algorithms for English. These implementations are straightforward and
12579efficient, unlike some Python versions of the same algorithms available on the
12580Web. This package is an extraction of the stemming code included in the Whoosh
12581search engine.")
12582 (license license:public-domain)))
12583
12584(define-public python-factory-boy
12585 (package
12586 (name "python-factory-boy")
12587 (version "2.8.1")
12588 (source
12589 (origin
12590 (method url-fetch)
12591 (uri (pypi-uri "factory_boy" version))
12592 (sha256
12593 (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
12594 (build-system python-build-system)
12595 (arguments
12596 ;; Tests are not included in the tarball.
12597 `(#:tests? #f))
12598 (propagated-inputs
12599 `(("faker" ,python-faker)))
12600 (home-page "https://github.com/benhoyt/scandir")
12601 (synopsis "Versatile test fixtures replacement")
12602 (description
12603 "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
12604
12605As a fixtures replacement tool, it aims to replace static, hard to maintain
12606fixtures with easy-to-use factories for complex object.
12607
12608Instead of building an exhaustive test setup with every possible combination
12609of corner cases, factory_boy allows you to use objects customized for the
12610current test, while only declaring the test-specific fields")
12611 (license license:expat)))
12612
12613(define-public python2-factory-boy
12614 (package-with-python2 python-factory-boy))
12615
12616(define-public python-translate-toolkit
12617 (package
12618 (name "python-translate-toolkit")
12619 (version "2.1.0")
12620 (source
12621 (origin
12622 (method url-fetch)
12623 (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
12624 (sha256
12625 (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
12626 (build-system python-build-system)
12627 (native-inputs
12628 `(("python-pytest" ,python-pytest)
12629 ("python-sphinx" ,python-sphinx)))
12630 (propagated-inputs
12631 `(("python-babel" ,python-babel)
12632 ("python-beautifulsoup4" ,python-beautifulsoup4)
12633 ("python-chardet" ,python-chardet)
12634 ("python-diff-match-patch" ,python-diff-match-patch)
12635 ("python-levenshtein" ,python-levenshtein)
12636 ("python-lxml" ,python-lxml)
12637 ("python-six" ,python-six)
12638 ("python-vobject" ,python-vobject)
12639 ("python-pyyaml" ,python-pyyaml)))
12640 (arguments
12641 ;; TODO: tests are not run, because they end with
12642 ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
12643 ;; 'parse_funcs'
12644 ;; during test setup.
12645 `(#:tests? #f))
18919cf9 12646 (home-page "https://toolkit.translatehouse.org")
44d10b1f
RW
12647 (synopsis "Tools and API for translation and localization engineering")
12648 (description
12649 "Tools and API for translation and localization engineering. It contains
12650several utilities, as well as an API for building localization tools.")
12651 (license license:gpl2+)))
12652
12653(define-public python2-translate-toolkit
12654 (package-with-python2 python-translate-toolkit))
12655
12656(define-public python-packaging
12657 (package
12658 (name "python-packaging")
5e5cdac0 12659 (version "19.0")
44d10b1f
RW
12660 (source
12661 (origin
12662 (method url-fetch)
12663 (uri (pypi-uri "packaging" version))
12664 (sha256
12665 (base32
5e5cdac0 12666 "1brjhygq9dz6x1kdljivkjfldi3qf5rbkqgck1bpgv9qpv8ab60c"))))
44d10b1f
RW
12667 (build-system python-build-system)
12668 (arguments
12669 `(#:phases (modify-phases %standard-phases
12670 (replace 'check
12671 (lambda _ (invoke "py.test" "-vv"))))))
12672 (native-inputs
12673 `(("python-pretend" ,python-pretend)
12674 ("python-pytest" ,python-pytest)))
12675 (propagated-inputs
12676 `(("python-pyparsing" ,python-pyparsing)
12677 ("python-six" ,python-six)))
12678 (home-page "https://github.com/pypa/packaging")
12679 (synopsis "Core utilities for Python packages")
12680 (description "Packaging is a Python module for dealing with Python packages.
12681It offers an interface for working with package versions, names, and dependency
12682information.")
12683 ;; From 'LICENSE': This software is made available under the terms of
12684 ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD.
12685 ;; Contributions to this software is made under the terms of *both* these
12686 ;; licenses.
12687 (license (list license:asl2.0 license:bsd-2))))
12688
12689(define-public python2-packaging
12690 (package-with-python2 python-packaging))
12691
12692(define-public python-relatorio
12693 (package
12694 (name "python-relatorio")
12695 (version "0.8.0")
12696 (source
12697 (origin
12698 (method url-fetch)
12699 (uri (pypi-uri "relatorio" version))
12700 (sha256
12701 (base32
12702 "1na6hlhz1awi1hbjg1gyclq0khz42iz90wvdjw7mmj655788bpxx"))))
12703 (build-system python-build-system)
12704 (propagated-inputs
12705 `(("python-lxml" ,python-lxml)
12706 ("python-genshi" ,python-genshi)))
12707 (native-inputs
12708 `(("python-magic" ,python-magic)))
12709 (home-page "https://relatorio.tryton.org/")
12710 (synopsis "Templating library able to output ODT and PDF files")
12711 (description "Relatorio is a templating library which provides a way to
12712easily output ODT, ODS, PNG, SVG and several other kinds of files. Support
12713for more filetypes can be easily added by creating plugins for them.")
12714 (license license:gpl3+)))
12715
12716(define-public python2-relatorio
12717 (package-with-python2 python-relatorio))
12718
12719(define-public python-radon
12720 (package
12721 (name "python-radon")
12722 (version "2.2.0")
12723 (source
12724 (origin
12725 (method url-fetch)
12726 (uri (pypi-uri "radon" version))
12727 (sha256
12728 (base32
12729 "07gq5hq4nrffxnlnksws9hrx7fd001gam63j62i82gyfr23gvdym"))))
12730 (build-system python-build-system)
12731 (arguments
12732 `(#:phases (modify-phases %standard-phases
12733 (replace 'check
12734 (lambda _
12735 (invoke "python" "radon/tests/run.py"))))))
12736 (propagated-inputs
12737 `(("python-colorama" ,python-colorama)
12738 ("python-flake8-polyfill" ,python-flake8-polyfill)
12739 ("python-mando" ,python-mando)))
12740 (native-inputs
12741 `(("python-pytest" ,python-pytest)
12742 ("python-pytest-mock" ,python-pytest-mock)))
12743 (home-page "https://radon.readthedocs.org/")
12744 (synopsis "Code Metrics in Python")
12745 (description "Radon is a Python tool which computes various code metrics.
12746Supported metrics are:
12747@itemize @bullet
12748@item raw metrics: SLOC, comment lines, blank lines, &c.
12749@item Cyclomatic Complexity (i.e. McCabe’s Complexity)
12750@item Halstead metrics (all of them)
12751@item the Maintainability Index (a Visual Studio metric)
12752@end itemize")
12753 (license license:expat)))
12754
12755(define-public python2-radon
12756 (package-with-python2 python-radon))
12757
12758(define-public python-sure
12759 (package
12760 (name "python-sure")
12761 (version "1.4.11")
12762 (source
12763 (origin
12764 (method url-fetch)
12765 (uri (pypi-uri "sure" version))
12766 (sha256
12767 (base32
12768 "1and0drq8w9iplsic22n2h7hkpyq03a1mbqk4sgcdqhqzdqm539w"))))
12769 (build-system python-build-system)
12770 (propagated-inputs
12771 `(("python-mock" ,python-mock)
12772 ("python-six" ,python-six)))
12773 (native-inputs
12774 `(("python-nose" ,python-nose)))
12775 (home-page "https://github.com/gabrielfalcao/sure")
12776 (synopsis "Automated testing library in python for python")
12777 (description
12778 "Sure is a python library that leverages a DSL for writing assertions.
12779Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
12780 (license license:gpl3+)))
12781
12782(define-public python2-sure
12783 (package-with-python2 python-sure))
12784
12785(define-public python2-couleur
12786 ;; This package does not seem to support python3 at all, hence,
12787 ;; only the python2 variant definition is provided.
12788 (package
12789 (name "python2-couleur")
12790 (version "0.6.2")
12791 (source
12792 (origin
12793 (method url-fetch)
12794 (uri (pypi-uri "couleur" version))
12795 (sha256
12796 (base32
12797 "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
12798 (build-system python-build-system)
12799 (arguments
12800 `(#:python ,python-2))
12801 (home-page "https://github.com/gabrielfalcao/couleur")
12802 (synopsis
12803 "ANSI terminal tool for python, colored shell and other handy fancy features")
12804 (description
12805 "@code{Couleur} provides python programs a way to use the ANSI features in a unix
12806terminal such as coloured output in the shell, overwriting output, indentation, etc.")
12807 ;; README.md says ASL2.0, but all source code headers are LGPL3+.
12808 ;; https://github.com/gabrielfalcao/couleur/issues/11
12809 (license license:lgpl3+)))
12810
12811(define-public python-misaka
12812 (package
12813 (name "python-misaka")
0dcb3412 12814 (version "2.1.1")
44d10b1f
RW
12815 (source
12816 (origin
12817 (method url-fetch)
12818 (uri (pypi-uri "misaka" version))
12819 (sha256
12820 (base32
0dcb3412 12821 "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2"))))
44d10b1f
RW
12822 (build-system python-build-system)
12823 (arguments
12824 `(;; Line 37 of setup.py calls self.run_command('develop')
12825 ;; in the 'check' phase. This command seems to be trying
12826 ;; to write to
12827 ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
12828 ;; for which it does not have the permission to write.
12829 #:tests? #f))
12830 (propagated-inputs
12831 `(("python-cffi" ,python-cffi)))
12832 (home-page "https://github.com/FSX/misaka")
12833 (synopsis "Python binding for Hoedown")
12834 (description
12835 "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
12836library written in C. It features a fast HTML renderer and functionality to make custom
12837renderers (e.g. man pages or LaTeX).")
12838 (license license:expat)))
12839
12840(define-public python2-misaka
12841 (package-with-python2 python-misaka))
12842
12843(define-public python2-steadymark
12844 ;; This is forced into being a python2 only variant
12845 ;; due to its dependence on couleur that has no support
12846 ;; for python3
12847 (package
12848 (name "python2-steadymark")
12849 (version "0.7.3")
12850 (source
12851 (origin
12852 (method url-fetch)
12853 (uri (pypi-uri "steadymark" version))
12854 (sha256
12855 (base32
12856 "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
12857 (build-system python-build-system)
12858 (native-inputs
12859 `(("python-couleur" ,python2-couleur)
12860 ("python-sure" ,python2-sure)
12861 ("python-misaka" ,python2-misaka)))
12862 (arguments
12863 `(#:python ,python-2
12864 #:phases
12865 (modify-phases %standard-phases
12866 (add-before 'build 'patch-setup-py
12867 (lambda _
12868 ;; Update requirements from dependency==version
12869 ;; to dependency>=version
12870 (substitute* "setup.py"
12871 (("==") ">="))
12872 #t)))))
12873 (home-page "https://github.com/gabrielfalcao/steadymark")
12874 (synopsis "Markdown-based test runner for python")
12875 (description
12876 "@code{Steadymark} allows documentation to be written in github-flavoured
12877markdown. The documentation may contain snippets of code surrounded by python
12878code blocks and @code{Steadymark} will find these snippets and run them, making
12879sure that there are no old malfunctional examples in the documentation examples.")
12880 (license license:expat)))
12881
12882(define-public python-jsonpointer
12883 (package
12884 (name "python-jsonpointer")
12885 (version "1.10")
12886 (source
12887 (origin
12888 (method url-fetch)
12889 (uri (pypi-uri "jsonpointer" version))
12890 (sha256
12891 (base32
12892 "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
12893 (build-system python-build-system)
12894 (home-page "https://github.com/stefankoegl/python-json-pointer")
12895 (synopsis "Identify specific nodes in a JSON document")
12896 (description "@code{jsonpointer} allows you to access specific nodes
12897by path in a JSON document (see RFC 6901).")
12898 (license license:bsd-3)))
12899
12900(define-public python2-jsonpointer
12901 (package-with-python2 python-jsonpointer))
12902
12903(define-public python-jsonpatch
12904 (package
12905 (name "python-jsonpatch")
12906 (version "1.16")
12907 (source
12908 (origin
12909 (method url-fetch)
12910 ;; pypi version lacks tests.js
12911 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
12912 "archive/v" version ".tar.gz"))
12913 (file-name (string-append name "-" version ".tar.gz"))
12914 (sha256
12915 (base32
12916 "085ykisl8v7mv9h7hvhdy3l2fjzs4214gx32r5k6nx4f76hbv6y5"))))
12917 (build-system python-build-system)
12918 (native-inputs
12919 `(("python-jsonpointer" ,python-jsonpointer)))
12920 (home-page "https://github.com/stefankoegl/python-json-patch")
12921 (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
12922 (description "@code{jsonpatch} is a library and program that allows
12923applying JSON Patches according to RFC 6902.")
12924 (license license:bsd-3)))
12925
12926(define-public python2-jsonpatch
12927 (package-with-python2 python-jsonpatch))
12928
12929(define-public python-jsonpatch-0.4
12930 (package (inherit python-jsonpatch)
12931 (name "python-jsonpatch")
12932 (version "0.4")
12933 (source
12934 (origin
12935 (method url-fetch)
12936 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
12937 "archive/v" version ".tar.gz"))
12938 (file-name (string-append name "-" version ".tar.gz"))
12939 (sha256
12940 (base32
12941 "0j0cd9z9zyp8kppp464jxrfgrnbgkzl1yi10i5gsv8yz6d95929d"))))))
12942
12943(define-public python2-jsonpatch-0.4
12944 (package-with-python2 python-jsonpatch-0.4))
12945
12946(define-public python-rfc3986
12947 (package
12948 (name "python-rfc3986")
12949 (version "1.1.0")
12950 (source (origin
12951 (method url-fetch)
12952 (uri (pypi-uri "rfc3986" version))
12953 (sha256
12954 (base32
12955 "06wlmysw83f75ff84zr1yr6n0shvc2xn1n1sb4iwzqap9hf5fn44"))))
12956 (build-system python-build-system)
12957 (arguments
12958 `(#:modules ((guix build utils)
12959 (guix build python-build-system)
12960 (ice-9 ftw)
12961 (srfi srfi-1)
12962 (srfi srfi-26))
12963 #:phases
12964 (modify-phases %standard-phases
12965 (replace 'check
12966 (lambda _
12967 (let ((cwd (getcwd)))
12968 (setenv "PYTHONPATH"
12969 (string-append cwd "/build/"
12970 (find (cut string-prefix? "lib" <>)
12971 (scandir (string-append cwd "/build")))
12972 ":"
12973 (getenv "PYTHONPATH")))
12974 (invoke "pytest" "-v")))))))
12975 (native-inputs
12976 `(("python-pytest" ,python-pytest)))
12977 (home-page "https://rfc3986.readthedocs.io/")
12978 (synopsis "Parse and validate URI references")
12979 (description
12980 "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including
12981validation and authority parsing. This module also supports RFC@tie{}6874
12982which adds support for zone identifiers to IPv6 addresses.")
12983 (license license:asl2.0)))
12984
12985(define-public python2-rfc3986
12986 (package-with-python2 python-rfc3986))
12987
12988(define-public python-rfc3987
12989 (package
12990 (name "python-rfc3987")
12991 (version "1.3.7")
12992 (source
12993 (origin
12994 (method url-fetch)
12995 (uri (pypi-uri "rfc3987" version))
12996 (sha256
12997 (base32
12998 "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
12999 (build-system python-build-system)
13000 (home-page "https://pypi.python.org/pypi/rfc3987")
13001 (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
13002 (description "@code{rfc3987} provides routines for parsing and
13003validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
13004 (license license:gpl3+)))
13005
13006(define-public python2-rfc3987
13007 (package-with-python2 python-rfc3987))
13008
13009(define-public python-validate-email
13010 (package
13011 (name "python-validate-email")
13012 (version "1.3")
13013 (source
13014 (origin
13015 (method url-fetch)
13016 (uri (pypi-uri "validate_email" version))
13017 (sha256
13018 (base32
13019 "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
13020 (build-system python-build-system)
13021 (home-page "https://github.com/syrusakbary/validate_email")
13022 (synopsis "Verifies if an email address is valid and really exists")
13023 (description "@code{validate_email} can be used to verify if an email
13024address is valid and really exists.")
13025 (license license:lgpl3+)))
13026
13027(define-public python2-validate-email
13028 (package-with-python2 python-validate-email))
13029
13030(define-public python-flex
13031 (package
13032 (name "python-flex")
13033 (version "6.10.0")
13034 (source
13035 (origin
13036 (method url-fetch)
13037 (uri (pypi-uri "flex" version))
13038 (sha256
13039 (base32
13040 "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
13041 (build-system python-build-system)
13042 (propagated-inputs
13043 `(("python-click" ,python-click)
13044 ("python-iso8601" ,python-iso8601)
13045 ("python-jsonpointer" ,python-jsonpointer)
13046 ("python-pyyaml" ,python-pyyaml)
13047 ("python-requests" ,python-requests)
13048 ("python-rfc3987" ,python-rfc3987)
13049 ("python-six" ,python-six)
13050 ("python-validate-email" ,python-validate-email)))
13051 (home-page "https://github.com/pipermerriam/flex")
13052 (synopsis "Validates Swagger schemata")
13053 (description "@code{flex} can be used to validate Swagger schemata.")
13054 (license license:bsd-3)))
13055
13056(define-public python2-flex
13057 (package-with-python2 python-flex))
13058
13059(define-public python-marshmallow
13060 (package
13061 (name "python-marshmallow")
13062 (version "3.0.0b14")
13063 (source
13064 (origin
13065 (method url-fetch)
13066 (uri (pypi-uri "marshmallow" version))
13067 (sha256
13068 (base32
13069 "1digk3f5cfk7wmlka65mc7bzsd96pbsgcsvp6pimd5b4ff9zb5p3"))))
13070 (build-system python-build-system)
13071 (propagated-inputs
13072 `(("python-dateutil" ,python-dateutil)
13073 ("python-simplejson" ,python-simplejson)))
13074 (native-inputs
13075 `(("python-pytest" ,python-pytest)
13076 ("python-pytz" ,python-pytz)))
13077 (home-page "https://github.com/marshmallow-code/marshmallow")
13078 (synopsis "Convert complex datatypes to and from native
13079Python datatypes.")
13080 (description "@code{marshmallow} provides a library for converting
13081complex datatypes to and from native Python datatypes.")
13082 (license license:expat)))
13083
13084(define-public python2-marshmallow
13085 (package-with-python2 python-marshmallow))
13086
13087(define-public python-apispec
13088 (package
13089 (name "python-apispec")
13090 (version "0.25.3")
13091 (source
13092 (origin
13093 (method url-fetch)
13094 (uri (pypi-uri "apispec" version))
13095 (sha256
13096 (base32
13097 "0kxa8723zbisx10363yh4mmmn4higxrspymbjfz5zq8f644zagm9"))))
13098 (build-system python-build-system)
13099 (propagated-inputs
13100 `(("python-pyyaml" ,python-pyyaml)))
13101 (native-inputs
13102 `(("python-pytest" ,python-pytest)
13103 ("python-flask" ,python-flask)
13104 ("python-marshmallow" ,python-marshmallow)
13105 ("python-tornado" ,python-tornado)
13106 ("python-bottle" ,python-bottle)
13107 ("python-mock" ,python-mock)))
13108 (home-page "https://github.com/marshmallow-code/apispec")
13109 (synopsis "Swagger 2.0 API specification generator")
13110 (description "@code{python-apispec} is a pluggable API specification
13111generator. Currently supports the OpenAPI specification (f.k.a.
13112Swagger 2.0).")
13113 (license license:expat)))
13114
13115(define-public python2-apispec
13116 (package-with-python2 python-apispec))
13117
13118(define-public python-flasgger
13119 (package
13120 (name "python-flasgger")
13121 (version "0.6.3")
13122 (source
13123 (origin
1a04d421
TGR
13124 (method git-fetch)
13125 (uri (git-reference
13126 (url "https://github.com/rochacbruno/flasgger.git")
13127 (commit version)))
13128 (file-name (git-file-name name version))
44d10b1f 13129 (sha256
1a04d421 13130 (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
44d10b1f
RW
13131 (build-system python-build-system)
13132 (arguments
13133 `(#:phases
13134 (modify-phases %standard-phases
13135 (replace 'check
13136 (lambda* (#:key inputs outputs #:allow-other-keys)
13137 (substitute* "Makefile"
13138 (("flake8 flasgger --ignore=F403")
13139 "flake8 flasgger --ignore=E731,F403"))
13140 (setenv "PYTHONPATH" (string-append (getcwd)
13141 ":"
13142 (getenv "PYTHONPATH")))
ac599a09 13143 (invoke "py.test"))))))
44d10b1f
RW
13144 (propagated-inputs
13145 `(("python-flask" ,python-flask)
13146 ("python-pyyaml" ,python-pyyaml)
13147 ("python-jsonschema" ,python-jsonschema)
13148 ("python-mistune" ,python-mistune)
13149 ("python-six" ,python-six)))
13150 (native-inputs
13151 `(("python-decorator" ,python-decorator)
13152 ("python-flake8" ,python-flake8)
13153 ("python-flask-restful" ,python-flask-restful)
13154 ("python-flex" ,python-flex)
13155 ("python-pytest" ,python-pytest)
13156 ("python-pytest-cov" ,python-pytest-cov)
13157 ("python-marshmallow" ,python-marshmallow)
13158 ("python-apispec" ,python-apispec)))
13159 (home-page "https://github.com/rochacbruno/flasgger/")
13160 (synopsis "Extract Swagger specs from your Flask project")
13161 (description "@code{python-flasgger} allows extracting Swagger specs
13162from your Flask project. It is a fork of Flask-Swagger.")
13163 (license license:expat)))
13164
13165(define-public python2-flasgger
13166 (package-with-python2 python-flasgger))
13167
13168(define-public python-swagger-spec-validator
13169 (package
13170 (name "python-swagger-spec-validator")
fe9c5b1d 13171 (version "2.4.3")
44d10b1f
RW
13172 (source
13173 (origin
13174 (method url-fetch)
13175 (uri (pypi-uri "swagger-spec-validator" version))
13176 (sha256
13177 (base32
fe9c5b1d 13178 "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
44d10b1f
RW
13179 (build-system python-build-system)
13180 (propagated-inputs
13181 `(("python-jsonschema" ,python-jsonschema)
fe9c5b1d 13182 ("python-pyyaml" ,python-pyyaml)
44d10b1f
RW
13183 ("python-six" ,python-six)))
13184 (home-page
13185 "https://github.com/Yelp/swagger_spec_validator")
13186 (synopsis "Validation of Swagger specifications")
13187 (description "@code{swagger_spec_validator} provides a library for
13188validating Swagger API specifications.")
13189 (license license:asl2.0)))
13190
13191(define-public python2-swagger-spec-validator
13192 (package-with-python2 python-swagger-spec-validator))
13193
13194(define-public python-apache-libcloud
13195 (package
13196 (name "python-apache-libcloud")
13197 (version "2.4.0")
13198 (source
13199 (origin
13200 (method url-fetch)
13201 (uri (pypi-uri "apache-libcloud" version))
13202 (sha256
13203 (base32
13204 "0daj3mkzw79v5zin2r1s2wkrz1hplfc16bwj4ss68i5qjq4l2p0j"))))
13205 (build-system python-build-system)
13206 (arguments
13207 `(#:phases
13208 (modify-phases %standard-phases
13209 (add-after 'unpack 'patch-ssh
13210 (lambda* (#:key inputs #:allow-other-keys)
13211 (substitute* "libcloud/compute/ssh.py"
13212 (("'ssh'") (string-append "'" (assoc-ref inputs "openssh")
13213 "/bin/ssh" "'")))
13214 #t))
13215 (add-after 'unpack 'patch-tests
13216 (lambda _
13217 (substitute* "./libcloud/test/test_file_fixtures.py"
13218 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-923>.
13219 (("def _ascii") "def _raw_data(self, method, url, body, headers):
13220 return (httplib.OK,
13221 \"1234abcd\",
13222 {\"test\": \"value\"},
13223 httplib.responses[httplib.OK])
13224 def _ascii"))
13225 (substitute* "libcloud/test/compute/test_ssh_client.py"
13226 (("class ShellOutSSHClientTests")
13227 "@unittest.skip(\"Guix container doesn't have ssh service\")
13228class ShellOutSSHClientTests")
13229 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-924>.
13230 (("'.xf0.x90.x8d.x88'") "b'\\xF0\\x90\\x8D\\x88'")
13231 (("'.xF0', '.x90', '.x8D', '.x88'")
13232 "b'\\xF0', b'\\x90', b'\\x8D', b'\\x88'"))
13233 #t))
13234 (add-before 'check 'copy-secret
13235 (lambda _
13236 (copy-file "libcloud/test/secrets.py-dist"
13237 "libcloud/test/secrets.py")
13238 #t)))))
13239 (inputs
13240 `(("openssh" ,openssh)))
13241 (propagated-inputs
13242 `(("python-paramiko" ,python-paramiko)
13243 ("python-requests" ,python-requests)))
13244 (native-inputs
13245 `(("python-lockfile" ,python-lockfile)
13246 ("python-mock" ,python-mock)
13247 ("python-pytest" ,python-pytest)
13248 ("python-pytest-runner" ,python-pytest-runner)
13249 ("python-requests-mock" ,python-requests-mock)))
13250 (home-page "https://libcloud.apache.org/")
13251 (synopsis "Unified Cloud API")
13252 (description "@code{libcloud} is a Python library for interacting with
13253many of the popular cloud service providers using a unified API.")
13254 (license license:asl2.0)))
13255
13256(define-public python2-apache-libcloud
13257 (package-with-python2 python-apache-libcloud))
13258
13259(define-public python-smmap2
13260 (package
13261 (name "python-smmap2")
13262 (version "2.0.3")
13263 (source
13264 (origin
13265 (method url-fetch)
13266 (uri (pypi-uri "smmap2" version))
13267 (sha256
13268 (base32
13269 "1hvn28p3zvxa98sbi9lrqvv2ps4q284j4jq9a619zw0m7yv0sly7"))))
13270 (build-system python-build-system)
13271 (native-inputs
13272 `(("python-nosexcover" ,python-nosexcover)))
13273 (home-page "https://github.com/Byron/smmap")
13274 (synopsis "Python sliding window memory map manager")
13275 (description "@code{smmap2} is a pure Python implementation of a sliding
13276window memory map manager.")
13277 (license license:bsd-3)))
13278
13279(define-public python2-smmap2
13280 (package-with-python2 python-smmap2))
13281
13282(define-public python-regex
13283 (package
13284 (name "python-regex")
c187c9d7 13285 (version "2019.04.14")
44d10b1f
RW
13286 (source (origin
13287 (method url-fetch)
13288 (uri (pypi-uri "regex" version))
13289 (sha256
13290 (base32
c187c9d7
BT
13291 "1a6hhfs6l6snr1z654ay6wzbmwdkmv282fzfkd5hk2d1n73y8v6m"))))
13292 ;; TODO: Fix and enable regex_test.py tests that complain about the
13293 ;; test.support module not existing.
44d10b1f
RW
13294 (build-system python-build-system)
13295 (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
13296 (synopsis "Alternative regular expression module")
13297 (description "This regular expression implementation is backwards-
13298compatible with the standard @code{re} module, but offers additional
13299functionality like full case-folding for case-insensitive matches in Unicode.")
13300 (license license:psfl)))
13301
13302(define-public python2-regex
13303 (package-with-python2 python-regex))
13304
13305(define-public python2-pyopengl
13306 (package
13307 (name "python2-pyopengl")
13308 (version "3.1.0")
13309 (source
13310 (origin
13311 (method url-fetch)
13312 (uri (pypi-uri "PyOpenGL" version))
13313 (sha256
13314 (base32
13315 "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
13316 (arguments
13317 `(#:python ,python-2))
13318 (build-system python-build-system)
13319 (home-page "http://pyopengl.sourceforge.net")
13320 (synopsis "Standard OpenGL bindings for Python")
13321 (description
13322 "PyOpenGL is the most common cross platform Python binding to OpenGL and
13323related APIs. The binding is created using the standard @code{ctypes}
13324library.")
13325 (license license:bsd-3)))
13326
13327(define-public python2-pyopengl-accelerate
13328 (package
13329 (inherit python2-pyopengl)
13330 (name "python2-pyopengl-accelerate")
13331 (version "3.1.0")
13332 (source
13333 (origin
13334 (method url-fetch)
13335 (uri (pypi-uri "PyOpenGL-accelerate" version))
13336 (sha256
13337 (base32
13338 "0464c1ifzk0k92lyndikmvzjgnx1y25r7bkkc8pnxm4kp1q4czwj"))))
13339 (synopsis "Acceleration code for PyOpenGL")
13340 (description
13341 "This is the Cython-coded accelerator module for PyOpenGL.")))
13342
13343(define-public python-rencode
13344 (package
13345 (name "python-rencode")
13346 (version "1.0.5")
13347 (source
13348 (origin
13349 (method url-fetch)
13350 (uri (pypi-uri "rencode" version))
13351 (sha256
13352 (base32
13353 "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv"))))
13354 (build-system python-build-system)
13355 (arguments
13356 `(#:phases
13357 (modify-phases %standard-phases
13358 (add-before 'check 'delete-bogus-test
13359 ;; This test requires /home/aresch/Downloads, which is not provided by
13360 ;; the build environment.
13361 (lambda _
13362 (delete-file "rencode/t.py")
13363 #t)))))
13364 (native-inputs `(("pkg-config" ,pkg-config)
13365 ("python-cython" ,python-cython)))
13366 (home-page "https://github.com/aresch/rencode")
13367 (synopsis "Serialization of heterogeneous data structures")
13368 (description
13369 "The @code{rencode} module is a data structure serialization library,
13370similar to @code{bencode} from the BitTorrent project. For complex,
13371heterogeneous data structures with many small elements, r-encoding stake up
13372significantly less space than b-encodings. This version of rencode is a
13373complete rewrite in Cython to attempt to increase the performance over the
13374pure Python module.")
13375 (license license:bsd-3)))
13376
13377(define-public python2-rencode
13378 (package-with-python2 python-rencode))
13379
13380(define-public python-xenon
13381 (package
13382 (name "python-xenon")
13383 (version "0.5.4")
13384 (source
13385 (origin
13386 (method url-fetch)
13387 (uri (pypi-uri "xenon" version))
13388 (sha256
13389 (base32
13390 "029cbhysg2vr5n4jz8gpg2793f8wkwnqpr1qgv6c1dn685vy31mc"))))
13391 (build-system python-build-system)
13392 (native-inputs
13393 `(("python-pyyaml" ,python-pyyaml)
13394 ("python-radon" ,python-radon)
13395 ("python-requests" ,python-requests)
13396 ("python-flake8" ,python-flake8)
13397 ("python-tox" ,python-tox)))
13398 (arguments
13399 `(#:phases
13400 (modify-phases %standard-phases
13401 (add-before 'build 'patch-test-requirements
13402 (lambda _
13403 ;; Remove httpretty dependency for tests.
13404 (substitute* "setup.py"
13405 (("httpretty") ""))
13406 #t)))))
13407 (home-page "https://xenon.readthedocs.org/")
13408 (synopsis "Monitor code metrics for Python on your CI server")
13409 (description
13410 "Xenon is a monitoring tool based on Radon. It monitors code complexity.
13411Ideally, @code{xenon} is run every time code is committed. Through command
13412line options, various thresholds can be set for the complexity of code. It
13413will fail (i.e. it will exit with a non-zero exit code) when any of these
13414requirements is not met.")
13415 (license license:expat)))
13416
13417(define-public python2-xenon
13418 (package-with-python2 python-xenon))
13419
13420(define-public python-pysocks
13421 (package
13422 (name "python-pysocks")
b8725cdf 13423 (version "1.7.0")
44d10b1f
RW
13424 (source
13425 (origin
13426 (method url-fetch)
13427 (uri (pypi-uri "PySocks" version))
13428 (sha256
13429 (base32
b8725cdf 13430 "0z4p31bpqm893cf87qqgb30k7nwd8kqfjwwjm5cvxb6zbyj1w0yr"))))
44d10b1f
RW
13431 (build-system python-build-system)
13432 (arguments `(#:tests? #f))
13433 (home-page "https://github.com/Anorov/PySocks")
13434 (synopsis "SOCKS client module")
13435 (description "@code{pysocks} is an updated and semi-actively maintained
13436version of @code{SocksiPy} with bug fixes and extra features.")
13437 (license license:bsd-3)))
13438
13439(define-public python2-pysocks
13440 (package-with-python2 python-pysocks))
13441
13442(define-public python-pydiff
13443 (package
13444 (name "python-pydiff")
13445 (version "0.2")
13446 (source
13447 (origin
13448 (method url-fetch)
13449 (uri (pypi-uri "pydiff" version))
13450 (sha256
13451 (base32
13452 "1als83h9w0gab24ipyna6khm390qmpnpkc5jksmdbs2xc8hp2z44"))))
13453 (build-system python-build-system)
13454 (home-page "https://github.com/myint/pydiff")
13455 (synopsis "Library to diff two Python files at the bytecode level")
13456 (description
13457 "@code{pydiff} makes it easy to look for actual code changes while
13458ignoring formatting changes.")
13459 (license license:expat)))
13460
13461(define-public python2-pydiff
13462 (package-with-python2 python-pydiff))
13463
13464(define-public python-tqdm
13465 (package
13466 (name "python-tqdm")
13467 (version "4.19.6")
13468 (source
13469 (origin
13470 (method url-fetch)
13471 (uri (pypi-uri "tqdm" version))
13472 (sha256
13473 (base32
13474 "1pw0ngm0zn9papdmkwipi3yih5c3di6d0w849bdmrraq4d2d9h2y"))))
13475 (build-system python-build-system)
13476 (native-inputs
13477 `(("python-flake8" ,python-flake8)
13478 ("python-nose" ,python-nose)
13479 ("python-coverage" ,python-coverage)))
13480 (home-page "https://github.com/tqdm/tqdm")
13481 (synopsis "Fast, extensible progress meter")
13482 (description
13483 "Make loops show a progress bar on the console by just wrapping any
13484iterable with @code{|tqdm(iterable)|}. Offers many options to define
13485design and layout.")
13486 (license (list license:mpl2.0 license:expat))))
13487
13488(define-public python2-tqdm
13489 (package-with-python2 python-tqdm))
13490
13491(define-public python-pkginfo
13492 (package
13493 (name "python-pkginfo")
13494 (version "1.4.2")
13495 (source
13496 (origin
13497 (method url-fetch)
13498 (uri (pypi-uri "pkginfo" version))
13499 (sha256
13500 (base32
13501 "0x6lm17p1ks031mj6pajyp4rkq74vpqq8qwjb7ikgwmkli1day2q"))))
13502 (build-system python-build-system)
13503 (arguments
13504 ;; The tests are broken upstream.
13505 '(#:tests? #f))
13506 (home-page
13507 "https://code.launchpad.net/~tseaver/pkginfo/trunk")
13508 (synopsis
13509 "Query metadatdata from sdists, bdists, and installed packages")
13510 (description
13511 "API to query the distutils metadata written in @file{PKG-INFO} inside a
13512source distriubtion (an sdist) or a binary distribution (e.g., created by
13513running bdist_egg). It can also query the EGG-INFO directory of an installed
13514distribution, and the *.egg-info stored in a \"development checkout\" (e.g,
13515created by running @code{python setup.py develop}).")
13516 (license license:expat)))
13517
13518(define-public python2-pkginfo
13519 (package-with-python2 python-pkginfo))
13520
13521(define-public python-twine
13522 (package
13523 (name "python-twine")
13524 (version "1.9.1")
13525 (source
13526 (origin
13527 (method url-fetch)
13528 (uri (pypi-uri "twine" version))
13529 (sha256
13530 (base32
13531 "1ay1b6kdq6k4bfbjsvf6ymj41wrgpvinhxndb09355pwhxwmp96a"))))
13532 (build-system python-build-system)
13533 (propagated-inputs
13534 `(("python-tqdm" ,python-tqdm)
13535 ("python-pkginfo" ,python-pkginfo)
13536 ("python-requests" ,python-requests)
13537 ("python-requests-toolbelt" ,python-requests-toolbelt)))
13538 (home-page "https://github.com/pypa/twine")
13539 (synopsis "Collection of utilities for interacting with PyPI")
13540 (description
13541 "@code{twine} currently supports registering projects and uploading
13542distributions. It authenticates the user over HTTPS, allows them to pre-sign
13543their files and supports any packaging format (including wheels).")
13544 (license license:asl2.0)))
13545
13546(define-public python2-twine
13547 (package-with-python2 python-twine))
13548
13549(define-public python-linecache2
13550 (package
13551 (name "python-linecache2")
13552 (version "1.0.0")
13553 (source
13554 (origin
13555 (method url-fetch)
13556 (uri (pypi-uri "linecache2" version))
13557 (sha256
13558 (base32
13559 "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
13560 (build-system python-build-system)
13561 (arguments
13562 `(;; The tests depend on unittest2, and our version is a bit too old.
13563 #:tests? #f))
13564 (native-inputs
13565 `(("python-pbr" ,python-pbr-minimal)))
13566 (home-page
13567 "https://github.com/testing-cabal/linecache2")
13568 (synopsis "Backports of the linecache module")
13569 (description
13570 "The linecache module allows one to get any line from any file, while
13571attempting to optimize internally, using a cache, the common case where many
13572lines are read from a single file.")
13573 (license license:psfl)))
13574
13575(define-public python2-linecache2
13576 (package-with-python2 python-linecache2))
13577
13578(define-public python-traceback2
13579 (package
13580 (name "python-traceback2")
13581 (version "1.4.0")
13582 (source
13583 (origin
13584 (method url-fetch)
13585 (uri (pypi-uri "traceback2" version))
13586 (sha256
13587 (base32
13588 "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
13589 (build-system python-build-system)
13590 (arguments
13591 `(;; python-traceback2 and python-unittest2 depend on one another.
13592 #:tests? #f))
13593 (native-inputs
13594 `(("python-pbr" ,python-pbr-minimal)))
13595 (propagated-inputs
13596 `(("python-linecache2" ,python-linecache2)))
13597 (home-page
13598 "https://github.com/testing-cabal/traceback2")
13599 (synopsis "Backports of the traceback module")
13600 (description
13601 "This module provides a standard interface to extract, format and print
13602stack traces of Python programs. It exactly mimics the behavior of the Python
13603interpreter when it prints a stack trace.")
13604 (license license:psfl)))
13605
13606(define-public python2-traceback2
13607 (package-with-python2 python-traceback2))
13608
13609(define-public python-ratelimiter
13610 (package
13611 (name "python-ratelimiter")
13612 (version "1.2.0")
13613 (source
13614 (origin
13615 (method url-fetch)
13616 (uri (pypi-uri "ratelimiter" version))
13617 (sha256
13618 (base32
13619 "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p"))))
13620 (build-system python-build-system)
13621 (arguments
13622 '(#:tests? #f)) ; There are no tests in the pypi archive.
13623 (home-page "https://github.com/RazerM/ratelimiter")
13624 (synopsis "Simple rate limiting object")
13625 (description
13626 "The @code{ratelimiter} module ensures that an operation will not be
13627executed more than a given number of times during a given period.")
13628 (license license:asl2.0)))
13629
13630(define-public python2-ratelimiter
13631 (package-with-python2 python-ratelimiter))
13632
13633(define-public python-dukpy
13634 (package
13635 (name "python-dukpy")
13636 (version "0.3")
13637 (source
13638 (origin
5b77ebe1
TGR
13639 (method git-fetch)
13640 (uri (git-reference
13641 (url "https://github.com/kovidgoyal/dukpy.git")
13642 (commit (string-append "v" version))))
13643 (file-name (git-file-name name version))
44d10b1f 13644 (sha256
5b77ebe1 13645 (base32 "13h21nqzasv4zj32xs61brmc106pr2cx243672crcmwxxnjgaxls"))))
44d10b1f
RW
13646 (build-system python-build-system)
13647 (home-page "https://github.com/kovidgoyal/dukpy")
13648 (synopsis "Run JavaScript in python")
13649 (description
13650 "dukpy is a JavaScript runtime environment for Python using the duktape
13651embeddable JavaScript engine.")
13652 ;; Dukpy is licensed under MIT like the embedded duktape library,
13653 ;; with 'errors.c' as GPL3.
13654 (license (list license:expat license:gpl3))))
13655
13656(define-public python2-dukpy
13657 (package-with-python2 python-dukpy))
13658
13659(define-public python-jsonrpclib-pelix
13660 (package
13661 (name "python-jsonrpclib-pelix")
13662 (version "0.3.2")
13663 (source
13664 (origin
13665 (method url-fetch)
13666 (uri (pypi-uri "jsonrpclib-pelix" version))
13667 (sha256
13668 (base32
13669 "0f83z5zi7w32vprhk1dyc94ir1bh4hdd57bjdbwkq9ykng8qilhl"))))
13670 (build-system python-build-system)
13671 (arguments
13672 `(#:tests? #f)) ; no tests in PyPI tarball
13673 (home-page "https://github.com/tcalmant/jsonrpclib/")
13674 (synopsis "JSON-RPC 2.0 client library for Python")
13675 (description
13676 "This library implements the JSON-RPC v2.0
13677specification (backwards-compatible) as a client library for Python. This
13678version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote
13679services.")
13680 (license license:asl2.0)))
13681
13682(define-public python2-jsonrpclib-pelix
13683 (package-with-python2 python-jsonrpclib-pelix))
13684
13685(define-public python-setuptools-scm-git-archive
13686 (package
13687 (name "python-setuptools-scm-git-archive")
13688 (version "1.0")
13689 (source
13690 (origin
13691 (method url-fetch)
13692 (uri (pypi-uri "setuptools_scm_git_archive" version))
13693 (sha256
13694 (base32
13695 "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
13696 (build-system python-build-system)
13697 (native-inputs
13698 `(("python-pytest" ,python-pytest)))
13699 (propagated-inputs
13700 `(("python-setuptools-scm" ,python-setuptools-scm)))
13701 (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
13702 (synopsis "Setuptools_scm plugin for git archives")
13703 (description
13704 "The setuptools_scm_git_archive package is a plugin to
13705setuptools_scm, which supports obtaining versions from git archives that
13706belong to tagged versions.")
13707 (license license:expat)))
13708
13709(define-public python2-setuptools-scm-git-archive
13710 (package-with-python2 python-setuptools-scm-git-archive))
13711
724a350c
RW
13712(define-public python-setuptools-git
13713 (package
13714 (name "python-setuptools-git")
13715 (version "1.2")
13716 (source
13717 (origin
13718 (method url-fetch)
13719 (uri (pypi-uri "setuptools-git" version))
13720 (sha256
13721 (base32
13722 "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z"))))
13723 (build-system python-build-system)
13724 (arguments
13725 `(#:phases
13726 (modify-phases %standard-phases
13727 ;; This is needed for tests.
13728 (add-after 'unpack 'configure-git
13729 (lambda _
13730 (setenv "HOME" "/tmp")
13731 (invoke "git" "config" "--global" "user.email" "guix")
13732 (invoke "git" "config" "--global" "user.name" "guix")
13733 #t)))))
13734 (native-inputs
13735 `(("git" ,git-minimal)))
13736 (home-page "https://github.com/msabramo/setuptools-git")
13737 (synopsis "Setuptools revision control system plugin for Git")
13738 (description
13739 "This package provides a plugin for Setuptools for revision control with
13740Git.")
13741 (license license:bsd-3)))
13742
44d10b1f
RW
13743(define-public python-pyclipper
13744 (package
13745 (name "python-pyclipper")
13746 (version "1.1.0.post1")
13747 (source
13748 (origin
13749 (method url-fetch)
13750 (uri (pypi-uri "pyclipper" version ".zip"))
13751 (sha256
13752 (base32
13753 "0ldbkbnx94an4zzrwb1sxmg6k0jgk4cwmvcdyy8y5k1zslc612wa"))
13754 (modules '((guix build utils)))
13755 (snippet
13756 '(begin
13757 ;; This file is generated by Cython.
13758 (delete-file "pyclipper/pyclipper.cpp") #t))))
13759 (build-system python-build-system)
13760 (arguments
13761 `(#:phases
13762 (modify-phases %standard-phases
13763 (add-before 'build 'cythonize-sources
13764 (lambda _
13765 (with-directory-excursion "pyclipper"
13766 (invoke "cython" "--cplus" "pyclipper.pyx")))))))
13767 (propagated-inputs
13768 `(("python-setuptools-scm-git-archive" ,python-setuptools-scm-git-archive)))
13769 (native-inputs
13770 `(("python-cython" ,python-cython)
13771 ("python-pytest" ,python-pytest)
13772 ("python-pytest-runner" ,python-pytest-runner)
13773 ("python-unittest2" ,python-unittest2)
13774 ("unzip" ,unzip)))
13775 (home-page "https://github.com/greginvm/pyclipper")
13776 (synopsis "Wrapper for Angus Johnson's Clipper library")
13777 (description
13778 "Pyclipper is a Cython wrapper for the C++ translation of the
13779Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).")
13780 (license license:expat)))
13781
13782(define-public python2-pyclipper
13783 (package-with-python2 python-pyclipper))
13784
13785(define-public python2-booleanoperations
13786 (package
13787 (name "python2-booleanoperations")
13788 (version "0.7.1")
13789 (source
13790 (origin
13791 (method url-fetch)
13792 (uri (pypi-uri "booleanOperations" version ".zip"))
13793 (sha256
13794 (base32
13795 "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
13796 (build-system python-build-system)
13797 (arguments
13798 `(#:python ,python-2))
13799 (native-inputs
13800 `(("unzip" ,unzip)
13801 ("python2-pytest" ,python2-pytest)
13802 ("python2-pytest-runner" ,python2-pytest-runner)))
13803 (propagated-inputs
13804 `(("python-fonttools" ,python2-fonttools)
13805 ("python-pyclipper" ,python2-pyclipper)
13806 ("python-ufolib" ,python2-ufolib)))
13807 (home-page "https://github.com/typemytype/booleanOperations")
13808 (synopsis "Boolean operations on paths")
13809 (description
13810 "BooleanOperations provides a Python library that enables
13811boolean operations on paths.")
13812 (license license:expat)))
13813
13814(define-public python-tempdir
13815 (package
13816 (name "python-tempdir")
13817 (version "0.7.1")
13818 (source
13819 (origin
13820 (method url-fetch)
13821 (uri (pypi-uri "tempdir" version))
13822 (sha256
13823 (base32
13824 "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
13825 (build-system python-build-system)
13826 (home-page "https://pypi.org/project/tempdir/")
13827 (arguments
13828 ;; the package has no tests
13829 '(#:tests? #f))
13830 (synopsis "Python library for managing temporary directories")
13831 (description
13832 "This library manages temporary directories that are automatically
13833deleted with all their contents when they are no longer needed. It is
13834particularly convenient for use in tests.")
13835 (license license:expat)))
13836
13837(define-public python2-tempdir
13838 (package-with-python2 python-tempdir))
13839
13840(define-public python-activepapers
13841 (package
13842 (name "python-activepapers")
13843 (version "0.2.2")
13844 (source
13845 (origin
13846 (method url-fetch)
13847 (uri (pypi-uri "ActivePapers.Py" version))
13848 (sha256
13849 (base32
13850 "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8"))))
13851 (build-system python-build-system)
13852 (arguments
13853 `(#:modules ((ice-9 ftw)
13854 (srfi srfi-1)
13855 (guix build utils)
13856 (guix build python-build-system))
13857
13858 #:phases
13859 (modify-phases %standard-phases
13860 (add-after 'unpack 'delete-python2-code
13861 (lambda _
13862 (for-each delete-file
13863 '("lib/activepapers/builtins2.py"
13864 "lib/activepapers/standardlib2.py"
13865 "lib/activepapers/utility2.py"))))
13866 (replace 'check
13867 (lambda _
13868 ;; Deactivate the test cases that download files
13869 (setenv "NO_NETWORK_ACCESS" "1")
13870 ;; For some strange reason, some tests fail if nosetests runs all
13871 ;; test modules in a single execution. They pass if each test
13872 ;; module is run individually.
13873 (for-each (lambda (filename)
13874 (invoke "nosetests"
13875 (string-append "tests/" filename)))
13876 (scandir "tests"
13877 (lambda (filename)
13878 (string-suffix? ".py" filename)))))))))
13879 (native-inputs
13880 `(("python-tempdir" ,python-tempdir)
13881 ("python-nose" ,python-nose)))
13882 (propagated-inputs
13883 `(("python-h5py" ,python-h5py)))
13884 (home-page "http://www.activepapers.org/")
13885 (synopsis "Executable papers for scientific computing")
13886 (description
13887 "ActivePapers is a tool for working with executable papers, which
13888combine data, code, and documentation in single-file packages,
13889suitable for publication as supplementary material or on repositories
13890such as figshare or Zenodo.")
13891 (properties `((python2-variant . ,(delay python2-activepapers))))
13892 (license license:bsd-3)))
13893
13894(define-public python2-activepapers
13895 (let ((base (package-with-python2
13896 (strip-python2-variant python-activepapers))))
13897 (package
13898 (inherit base)
13899 (arguments
13900 (substitute-keyword-arguments (package-arguments base)
13901 ((#:phases phases)
13902 `(modify-phases ,phases
13903 (delete 'delete-python2-code)
13904 (add-after 'unpack 'delete-python3-code
13905 (lambda _
13906 (for-each delete-file
13907 '("lib/activepapers/builtins3.py"
13908 "lib/activepapers/standardlib3.py"
13909 "lib/activepapers/utility3.py")))))))))))
13910
13911(define-public python-semver
13912 (package
13913 (name "python-semver")
13914 (version "2.7.9")
13915 (source
13916 (origin
13917 (method url-fetch)
13918 (uri (pypi-uri "semver" version))
13919 (sha256
13920 (base32
13921 "0hhgqppchv59rqj0yzi1prdg2nfsywqmjsqy2rycyxm0hvxmbyqz"))))
13922 (build-system python-build-system)
13923 (arguments
13924 `(#:phases
13925 (modify-phases %standard-phases
13926 (add-after 'unpack 'patch-test-requirements
13927 (lambda _
13928 (substitute* "setup.py"
13929 ;; Our Python is new enough.
13930 (("'virtualenv<14\\.0\\.0'") "'virtualenv'"))
13931 #t)))))
13932 (native-inputs
13933 `(("python-tox" ,python-tox)
13934 ("python-virtualenv" ,python-virtualenv)))
13935 (home-page "https://github.com/k-bx/python-semver")
13936 (synopsis "Python helper for Semantic Versioning")
13937 (description "This package provides a Python library for
13938@url{Semantic Versioning, http://semver.org/}.")
13939 (license license:bsd-3)))
13940
13941(define-public python2-semver
13942 (package-with-python2 python-semver))
13943
13944(define-public python-pyro4
13945 (package
13946 (name "python-pyro4")
ad1acb81 13947 (version "4.75")
44d10b1f
RW
13948 (source
13949 (origin
13950 (method url-fetch)
13951 (uri (pypi-uri "Pyro4" version))
13952 (sha256
ad1acb81 13953 (base32 "1dfpp36imddx19yv0kd28gk1l71ckhpqy6jd590wpm2680jw15rq"))))
44d10b1f
RW
13954 (build-system python-build-system)
13955 (propagated-inputs
13956 `(("python-serpent" ,python-serpent)))
13957 (home-page "https://pyro4.readthedocs.io")
13958 (synopsis "Distributed object middleware for Python")
13959 (description
13960 "Pyro enables you to build applications in which objects can talk to each
13961other over the network. You can just use normal Python method calls to call
13962objects on other machines, also known as remote procedure calls (RPC).")
13963 (license license:expat)))
13964
13965(define-public python2-pyro
13966 (package
13967 (name "python2-pyro")
13968 (version "3.16")
13969 (source
13970 (origin
13971 (method url-fetch)
13972 (uri (pypi-uri "Pyro" version))
13973 (file-name (string-append "Pyro-" version ".tar.gz"))
13974 (sha256
13975 (base32
13976 "0y75wzdqbjy565rpxaxscav4j8xg060sa90lnmb7aypgaf251v8v"))))
13977 (build-system python-build-system)
13978 (arguments
13979 ;; Pyro is not compatible with Python 3
13980 `(#:python ,python-2
13981 ;; Pyro has no test cases for automatic execution
13982 #:tests? #f))
13983 (home-page "http://pythonhosted.org/Pyro/")
13984 (synopsis "Distributed object manager for Python")
13985 (description "Pyro is a Distributed Object Technology system
13986written in Python that is designed to be easy to use. It resembles
13987Java's Remote Method Invocation (RMI). It has less similarity to CORBA,
13988which is a system and language independent Distributed Object Technology
13989and has much more to offer than Pyro or RMI. Pyro 3.x is no
13990longer maintained. New projects should use Pyro4 instead, which
13991is the new Pyro version that is actively developed.")
13992 (license license:expat)))
13993
13994(define-public python2-scientific
13995 (package
13996 (name "python2-scientific")
13997 (version "2.9.4")
13998 (source
13999 (origin
14000 (method url-fetch)
14001 (uri (string-append "https://bitbucket.org/khinsen/"
14002 "scientificpython/downloads/ScientificPython-"
14003 version ".tar.gz"))
14004 (file-name (string-append "ScientificPython-" version ".tar.gz"))
14005 (sha256
14006 (base32
14007 "0fc69zhlsn9d2jvbzyjl9ah53vj598h84nkq230c83ahfvgzx5y3"))))
14008 (build-system python-build-system)
14009 (inputs
14010 `(("netcdf" ,netcdf)))
14011 (propagated-inputs
14012 `(("python-numpy" ,python2-numpy-1.8)
14013 ("python-pyro" ,python2-pyro)))
14014 (arguments
14015 ;; ScientificPython is not compatible with Python 3
14016 `(#:python ,python-2
14017 #:tests? #f ; No test suite
14018 #:phases
14019 (modify-phases %standard-phases
14020 (replace 'build
14021 (lambda* (#:key inputs #:allow-other-keys)
77e61e25
RW
14022 (invoke "python" "setup.py" "build"
14023 (string-append "--netcdf_prefix="
14024 (assoc-ref inputs "netcdf"))))))))
44d10b1f
RW
14025 (home-page "https://bitbucket.org/khinsen/scientificpython")
14026 (synopsis "Python modules for scientific computing")
14027 (description "ScientificPython is a collection of Python modules that are
14028useful for scientific computing. Most modules are rather general (Geometry,
14029physical units, automatic derivatives, ...) whereas others are more
14030domain-specific (e.g. netCDF and PDB support). The library is currently
14031not actively maintained and works only with Python 2 and NumPy < 1.9.")
14032 (license license:cecill-c)))
14033
14034(define-public python2-mmtk
14035 (package
14036 (name "python2-mmtk")
14037 (version "2.7.11")
14038 (source
14039 (origin
14040 (method url-fetch)
14041 (uri (string-append "https://bitbucket.org/khinsen/"
14042 "mmtk/downloads/MMTK-" version ".tar.gz"))
14043 (file-name (string-append "MMTK-" version ".tar.gz"))
14044 (sha256
14045 (base32
14046 "1d0nnjx4lwsvh8f99vv1r6gi50d93yba0adkz8b4zgv4za4c5862"))))
14047 (build-system python-build-system)
14048 (native-inputs
14049 `(("netcdf" ,netcdf)))
14050 (propagated-inputs
14051 `(("python-scientific" ,python2-scientific)
14052 ("python-tkinter" ,python-2 "tk")))
14053 (arguments
14054 `(#:python ,python-2
14055 #:tests? #f
14056 #:phases
14057 (modify-phases %standard-phases
14058 (add-before 'build 'includes-from-scientific
14059 (lambda* (#:key inputs #:allow-other-keys)
14060 (mkdir-p "Include/Scientific")
14061 (copy-recursively
14062 (string-append
14063 (assoc-ref inputs "python-scientific")
14064 "/include/python2.7/Scientific")
14065 "Include/Scientific"))))))
14066 (home-page "http://dirac.cnrs-orleans.fr/MMTK")
14067 (synopsis "Python library for molecular simulation")
14068 (description "MMTK is a library for molecular simulations with an emphasis
14069on biomolecules. It provides widely used methods such as Molecular Dynamics
14070and normal mode analysis, but also basic routines for implementing new methods
14071for simulation and analysis. The library is currently not actively maintained
14072and works only with Python 2 and NumPy < 1.9.")
14073 (license license:cecill-c)))
14074
14075(define-public python-phonenumbers
14076 (package
14077 (name "python-phonenumbers")
14078 (version "8.9.1")
14079 (source
14080 (origin
14081 (method url-fetch)
14082 (uri (pypi-uri "phonenumbers" version))
14083 (sha256
14084 (base32
14085 "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1"))))
14086 (build-system python-build-system)
14087 (home-page
14088 "https://github.com/daviddrysdale/python-phonenumbers")
14089 (synopsis
14090 "Python library for dealing with international phone numbers")
14091 (description
14092 "This package provides a Python port of Google's libphonenumber library.")
14093 (license license:asl2.0)))
14094
14095(define-public python2-phonenumbers
14096 (package-with-python2 python-phonenumbers))
14097
14098(define-public python-send2trash
14099 (package
14100 (name "python-send2trash")
d9b0216b 14101 (version "1.5.0")
44d10b1f 14102 (source
d9b0216b 14103 (origin (method git-fetch)
44d10b1f 14104 ;; Source tarball on PyPI doesn't include tests.
d9b0216b
RW
14105 (uri (git-reference
14106 (url "https://github.com/hsoft/send2trash.git")
14107 (commit version)))
14108 (file-name (git-file-name name version))
44d10b1f
RW
14109 (sha256
14110 (base32
d9b0216b 14111 "1c76zldhw2ay7q7r00nnzcampjz9lkqfcbzqpm0iqp5i6bmmv30v"))))
44d10b1f
RW
14112 (build-system python-build-system)
14113 (arguments
14114 '(#:phases
14115 (modify-phases %standard-phases
14116 (add-before 'check 'pre-check
14117 (lambda _
14118 (mkdir-p "/tmp/foo")
14119 (setenv "HOME" "/tmp/foo")
14120 #t)))))
14121 (home-page "https://github.com/hsoft/send2trash")
14122 (synopsis "Send files to the user's @file{~/Trash} directory")
14123 (description "This package provides a Python library to send files to the
14124user's @file{~/Trash} directory.")
20b3fde7 14125 (properties `((python2-variant . ,(delay python2-send2trash))))
44d10b1f
RW
14126 (license license:bsd-3)))
14127
14128(define-public python2-send2trash
14129 (package
f32164ab 14130 (inherit (package-with-python2 (strip-python2-variant python-send2trash)))
44d10b1f
RW
14131 (arguments
14132 (substitute-keyword-arguments (package-arguments python-send2trash)
14133 ((#:phases phases)
14134 `(modify-phases ,phases
14135 (add-before 'check 'setenv
14136 (lambda _
14137 (setenv "PYTHONPATH"
14138 (string-append (getcwd) ":" (getenv "PYTHONPATH")))
4782a06f 14139 #t))))))))
44d10b1f
RW
14140
14141(define-public python-yapf
14142 (package
14143 (name "python-yapf")
14144 (version "0.24.0")
14145 (source
14146 (origin
14147 (method url-fetch)
14148 (uri (pypi-uri "yapf" version))
14149 (sha256
14150 (base32
14151 "0anwby0ydmyzcsgjc5dn1ryddwvii4dq61vck447q0n96npnzfyf"))))
14152 (build-system python-build-system)
14153 (home-page "https://github.com/google/yapf")
14154 (synopsis "Formatter for Python code")
14155 (description "YAPF is a formatter for Python code. It's based off of
14156@dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm
14157takes the code and reformats it to the best formatting that conforms to the
14158style guide, even if the original code didn't violate the style guide.")
14159 (license license:asl2.0)))
14160
14161(define-public python2-yapf
14162 (package-with-python2 python-yapf))
14163
14164(define-public python-gyp
14165 (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
14166 (revision "0"))
14167 (package
14168 (name "python-gyp")
14169 ;; Google does not release versions,
14170 ;; based on second most recent commit date.
14171 (version (git-version "0.0.0" revision commit))
14172 (source
14173 (origin
14174 ;; Google does not release tarballs,
14175 ;; git checkout is needed.
14176 (method git-fetch)
14177 (uri (git-reference
14178 (url "https://chromium.googlesource.com/external/gyp")
14179 (commit commit)))
14180 (file-name (git-file-name name version))
14181 (sha256
14182 (base32
14183 "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9"))))
14184 (build-system python-build-system)
14185 (home-page "https://gyp.gsrc.io/")
14186 (synopsis "GYP is a Meta-Build system")
14187 (description
14188 "GYP builds build systems for large, cross platform applications.
14189It can be used to generate XCode projects, Visual Studio projects, Ninja build
14190files, and Makefiles.")
14191 (license license:bsd-3))))
14192
14193(define-public python2-gyp
14194 (package-with-python2 python-gyp))
14195
14196(define-public python-whatever
14197 (package
14198 (name "python-whatever")
14199 (version "0.5")
14200 (source
14201 (origin
14202 (method url-fetch)
14203 (uri (string-append "https://github.com/Suor/whatever/archive/" version
14204 ".tar.gz"))
14205 (sha256
14206 (base32
14207 "1iqvnaf0zpc6b4rvbqq4xy45mszcscyzpzknv8wg6j84pbp22sap"))
14208 (file-name (string-append name "-" version ".tar.gz"))))
14209 (build-system python-build-system)
14210 (arguments
14211 `(#:phases
14212 (modify-phases %standard-phases
14213 (replace 'check
14214 (lambda _
14215 (invoke "py.test"))))))
14216 (native-inputs
14217 `(("python-pytest" ,python-pytest)))
14218 (home-page "http://github.com/Suor/whatever")
14219 (synopsis "Make anonymous functions by partial application of operators")
14220 (description "@code{whatever} provides an easy way to make anonymous
14221functions by partial application of operators.")
14222 (license license:bsd-3)))
14223
14224(define-public python2-whatever
14225 (package-with-python2 python-whatever))
14226
14227(define-public python-funcy
14228 (package
14229 (name "python-funcy")
9e396ab8 14230 (version "1.11")
44d10b1f
RW
14231 (source
14232 (origin
a85c6027
TGR
14233 (method git-fetch)
14234 (uri (git-reference
14235 (url "https://github.com/Suor/funcy.git")
14236 (commit version)))
44d10b1f 14237 (sha256
a85c6027
TGR
14238 (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
14239 (file-name (git-file-name name version))))
44d10b1f
RW
14240 (build-system python-build-system)
14241 (arguments
14242 `(#:phases
14243 (modify-phases %standard-phases
14244 (replace 'check
14245 (lambda _
14246 (invoke "py.test"))))))
14247 (native-inputs
14248 `(("python-pytest" ,python-pytest)
14249 ("python-whatever" ,python-whatever)))
14250 (home-page "http://github.com/Suor/funcy")
14251 (synopsis "Functional tools")
14252 (description "@code{funcy} is a library that provides functional tools.
14253Examples are:
14254@enumerate
14255@item merge - Merges collections of the same type
14256@item walk - Type-preserving map
14257@item select - Selects a part of a collection
14258@item take - Takes the first n items of a collection
14259@item first - Takes the first item of a collection
14260@item remove - Predicated-removes items of a collection
14261@item concat - Concatenates two collections
14262@item flatten - Flattens a collection with subcollections
14263@item distinct - Returns only distinct items
14264@item split - Predicated-splits a collection
14265@item split_at - Splits a collection at a given item
14266@item group_by - Groups items by group
14267@item pairwise - Pairs off adjacent items
14268@item partial - Partially-applies a function
14269@item curry - Curries a function
14270@item compose - Composes functions
14271@item complement - Complements a predicate
14272@item all_fn - \"all\" with predicate
14273@end enumerate")
14274 (license license:bsd-3)))
14275
14276(define-public python2-funcy
14277 (package-with-python2 python-funcy))
14278
14279(define-public python-isoweek
14280 (package
14281 (name "python-isoweek")
14282 (version "1.3.3")
14283 (source
14284 (origin
14285 (method url-fetch)
14286 (uri (pypi-uri "isoweek" version))
14287 (sha256
14288 (base32
14289 "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk"))))
14290 (build-system python-build-system)
14291 (home-page "https://github.com/gisle/isoweek")
14292 (synopsis "Objects representing a week")
14293 (description "The @code{isoweek} module provide the class Week that
14294implements the week definition of ISO 8601. This standard also defines
14295a notation for identifying weeks; yyyyWww (where the W is a literal).
14296Week instances stringify to this form.")
14297 (license license:bsd-3)))
14298
14299(define-public python2-isoweek
14300 (package-with-python2 python-isoweek))
14301
14302(define-public python-tokenize-rt
14303 (package
14304 (name "python-tokenize-rt")
14305 (version "2.0.1")
14306 (source
14307 (origin
14308 (method url-fetch)
14309 (uri (pypi-uri "tokenize-rt" version))
14310 (sha256
14311 (base32
14312 "1yjvbz7rvrz31zjyax1cgy3xhf4wb3j18jwnj4bnl77ca4gliyiw"))))
14313 (build-system python-build-system)
14314 (home-page "https://github.com/asottile/tokenize-rt")
14315 (synopsis "Wrapper around the stdlib tokenize which roundtrips.")
14316 (description
14317 "This Python library is a wrapper around @code{tokenize} from the Python
14318standard library. It provides two additional tokens @code{ESCAPED_NL} and
14319@code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens}
14320and @code{tokens_to_src} to roundtrip.")
14321 (license license:expat)))
14322
14323(define-public python-future-fstrings
14324 (package
14325 (name "python-future-fstrings")
14326 (version "0.4.1")
14327 (source
14328 (origin
14329 (method url-fetch)
14330 (uri (pypi-uri "future_fstrings" version))
14331 (sha256
14332 (base32
14333 "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47"))))
14334 (build-system python-build-system)
14335 (propagated-inputs
14336 `(("python-tokenize-rt" ,python-tokenize-rt)))
14337 (home-page "https://github.com/asottile/future-fstrings")
14338 (synopsis "Backport of fstrings to Python < 3.6")
14339 (description
14340 "This package provides a UTF-8 compatible encoding
14341@code{future_fstrings}, which performs source manipulation. It decodes the
14342source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
14343@code{f} strings.")
14344 (license license:expat)))
14345
dae2eb1c
MC
14346(define-public python-typed-ast
14347 (package
14348 (name "python-typed-ast")
14349 (version "1.3.5")
14350 (source
14351 (origin
14352 (method url-fetch)
14353 (uri (pypi-uri "typed-ast" version))
14354 (sha256
14355 (base32
14356 "1m7pr6qpana3cvqwiw7mlvrgvmw27ch5mx1592572xhlki8g85ak"))))
14357 (build-system python-build-system)
14358 (arguments
14359 `(#:modules ((guix build utils)
14360 (guix build python-build-system)
14361 (ice-9 ftw)
14362 (srfi srfi-1)
14363 (srfi srfi-26))
14364 #:phases
14365 (modify-phases %standard-phases
14366 (replace 'check
14367 (lambda _
14368 (let ((cwd (getcwd)))
14369 (setenv "PYTHONPATH"
14370 (string-append cwd "/build/"
14371 (find (cut string-prefix? "lib" <>)
14372 (scandir (string-append cwd "/build")))
14373 ":"
14374 (getenv "PYTHONPATH"))))
14375 (invoke "pytest")
14376 #t)))))
14377 (native-inputs `(("python-pytest" ,python-pytest)))
14378 (home-page "https://github.com/python/typed_ast")
14379 (synopsis "Fork of Python @code{ast} modules with type comment support")
14380 (description "This package provides a parser similar to the standard
14381@code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast}
14382include PEP 484 type comments and are independent of the version of Python
14383under which they are run. The @code{typed_ast} parsers produce the standard
14384Python AST (plus type comments), and are both fast and correct, as they are
14385based on the CPython 2.7 and 3.7 parsers.")
14386 ;; See the file "LICENSE" for the details.
14387 (license (list license:psfl
14388 license:asl2.0
14389 license:expat)))) ;ast27/Parser/spark.py
14390
44d10b1f
RW
14391(define-public python-typing
14392 (package
14393 (name "python-typing")
14394 (version "3.6.6")
14395 (source
14396 (origin
14397 (method url-fetch)
14398 (uri (pypi-uri "typing" version))
14399 (sha256
14400 (base32
14401 "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0"))))
14402 (build-system python-build-system)
14403 (home-page "https://docs.python.org/3/library/typing.html")
14404 (synopsis "Type hints for Python")
14405 (description "This is a backport of the standard library @code{typing}
14406module to Python versions older than 3.5. Typing defines a standard notation
14407for Python function and variable type annotations. The notation can be used
14408for documenting code in a concise, standard format, and it has been designed
14409to also be used by static and runtime type checkers, static analyzers, IDEs
14410and other tools.")
14411 (license license:psfl)))
14412
14413(define-public python2-typing
14414 (package-with-python2 python-typing))
14415
f89d443b
VC
14416(define-public python-typing-extensions
14417 (package
14418 (name "python-typing-extensions")
14419 (version "3.7.2")
14420 (source
14421 (origin
14422 (method url-fetch)
14423 (uri (pypi-uri "typing_extensions" version))
14424 (sha256
14425 (base32
14426 "0wfsv71pvkyf2na938l579jh0v3kzl6g744ijgnahcwd4d9x0b7v"))))
14427 (build-system python-build-system)
14428 (home-page
14429 "https://github.com/python/typing/blob/master/typing_extensions/README.rst")
14430 (synopsis "Experimental type hints for Python")
14431 (description
14432 "The typing_extensions module contains additional @code{typing} hints not
14433yet present in the of the @code{typing} standard library.
14434Included are implementations of:
14435@enumerate
14436@item ClassVar
14437@item ContextManager
14438@item Counter
14439@item DefaultDict
14440@item Deque
14441@item NewType
14442@item NoReturn
14443@item overload
14444@item Protocol
14445@item runtime
14446@item Text
14447@item Type
14448@item TYPE_CHECKING
14449@item AsyncGenerator
14450@end enumerate\n")
14451 (license license:psfl)))
14452
44d10b1f
RW
14453(define-public bpython
14454 (package
14455 (name "bpython")
14456 (version "0.17.1")
14457 (source
14458 (origin
14459 (method url-fetch)
14460 (uri (pypi-uri "bpython" version))
14461 (sha256
14462 (base32
14463 "0bxhxi5zxdkrf8b4gwn0d363kdz3qnypjwhm1aydki53ph8ca1w9"))))
14464 (build-system python-build-system)
14465 (arguments
14466 `(#:phases
14467 (modify-phases %standard-phases
14468 (add-after 'unpack 'remove-failing-test
14469 (lambda _
14470 ;; Remove failing test. FIXME: make it pass
14471 (delete-file "bpython/test/test_args.py")
14472 #t))
14473 (add-after 'wrap 'add-aliases
14474 ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc.
14475 (lambda* (#:key outputs #:allow-other-keys)
14476 (let ((out (assoc-ref outputs "out")))
14477 (for-each
14478 (lambda (old new)
14479 (symlink old (string-append out "/bin/" new)))
14480 '("bpython" "bpython-curses" "bpython-urwid" "bpdb")
14481 '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3")))
14482 #t)))))
14483 (propagated-inputs
14484 `(("python-pygments" ,python-pygments)
14485 ("python-requests" ,python-requests)
14486 ("python-babel" ,python-babel) ; optional, for internationalization
14487 ("python-curtsies" ,python-curtsies) ; >= 0.1.18
14488 ("python-greenlet" ,python-greenlet)
14489 ("python-urwid" ,python-urwid) ; for bpython-urwid only
14490 ("python-six" ,python-six)))
14491 (native-inputs
14492 `(("python-sphinx" ,python-sphinx)
14493 ("python-mock" ,python-mock)))
14494 (home-page "https://bpython-interpreter.org/")
14495 (synopsis "Fancy interface to the Python interpreter")
14496 (description "Bpython is a fancy interface to the Python
14497interpreter. bpython's main features are
14498
14499@enumerate
14500@item in-line syntax highlighting,
14501@item readline-like autocomplete with suggestions displayed as you type,
14502@item expected parameter list for any Python function,
14503@item \"rewind\" function to pop the last line of code from memory and
14504 re-evaluate,
14505@item send the code you've entered off to a pastebin,
14506@item save the code you've entered to a file, and
14507@item auto-indentation.
14508@end enumerate")
14509 (license license:expat)))
14510
14511(define-public bpython2
14512 (let ((base (package-with-python2
14513 (strip-python2-variant bpython))))
14514 (package (inherit base)
14515 (name "bpython2")
14516 (arguments
14517 `(#:python ,python-2
14518 #:phases
14519 (modify-phases %standard-phases
14520 (add-after 'unpack 'remove-failing-test
14521 (lambda _
14522 ;; Remove failing test. FIXME: make it pass
14523 (delete-file "bpython/test/test_args.py")
14524 ;; Disable failing test-cases (renaming inhibits they are
14525 ;; discovered)
14526 (substitute* "bpython/test/test_curtsies_repl.py"
14527 (("^(\\s*def )(test_get_last_word_with_prev_line\\W)" _ a b)
14528 (string-append a "xxx_off_" b))
14529 (("^(\\s*def )(test_complex\\W)" _ a b)
14530 (string-append a "xxx_off_" b)))
14531 #t))
14532 (add-before 'build 'rename-scripts
14533 ;; rename the scripts to bypthon2, bpdb2, etc.
14534 (lambda _
14535 (substitute* "setup.py"
14536 (("^(\\s+'bpdb)(\\s+=.*',?)\\s*?$" _ name rest)
14537 (string-append name "2" rest "\n"))
14538 (("^(\\s+'bpython)(-\\S+)?(\\s+=.*',?)\\s*?$" _ name sub rest)
14539 (string-append name "2" (or sub "") rest "\n")))
14540 #t))))))))
14541
14542(define-public python-pyinotify
14543 (package
14544 (name "python-pyinotify")
14545 (version "0.9.6")
14546 (source (origin
14547 (method url-fetch)
14548 (uri (pypi-uri "pyinotify" version))
14549 (sha256
14550 (base32
14551 "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw"))))
14552 (build-system python-build-system)
14553 (arguments `(#:tests? #f)) ;no tests
14554 (home-page "https://github.com/seb-m/pyinotify")
14555 (synopsis "Python library for monitoring inotify events")
14556 (description
14557 "@code{pyinotify} provides a Python interface for monitoring
14558file system events on Linux.")
14559 (license license:expat)))
14560
14561(define-public python2-pyinotify
14562 (package-with-python2 python-pyinotify))
14563
14564;; Ada parser uses this version.
14565(define-public python2-quex-0.67.3
14566 (package
14567 (name "python2-quex")
14568 (version "0.67.3")
14569 (source
14570 (origin
14571 (method url-fetch)
14572 (uri (string-append "mirror://sourceforge/quex/HISTORY/"
14573 (version-major+minor version)
14574 "/quex-" version ".zip"))
14575 (sha256
14576 (base32
14577 "14gv8ll3ipqv4kyc2xiy891nrmjl4ic823zfyx8hassagyclyppw"))))
14578 (build-system python-build-system)
14579 (native-inputs
14580 `(("unzip" ,unzip)))
14581 (arguments
14582 `(#:python ,python-2
14583 #:tests? #f
14584 #:phases
14585 (modify-phases %standard-phases
14586 (delete 'configure)
14587 (delete 'build)
14588 (replace 'install
14589 (lambda* (#:key outputs #:allow-other-keys)
14590 (let* ((out (assoc-ref outputs "out"))
14591 (share/quex (string-append out "/share/quex"))
14592 (bin (string-append out "/bin")))
14593 (copy-recursively "." share/quex)
14594 (mkdir-p bin)
14595 (symlink (string-append share/quex "/quex-exe.py")
14596 (string-append bin "/quex"))
14597 #t))))))
14598 (native-search-paths
14599 (list (search-path-specification
14600 (variable "QUEX_PATH")
14601 (files '("share/quex")))))
14602 (home-page "http://quex.sourceforge.net/")
14603 (synopsis "Lexical analyzer generator in Python")
14604 (description "@code{quex} is a lexical analyzer generator in Python.")
14605 (license license:lgpl2.1+))) ; Non-military
14606
14607(define-public python2-quex
14608 (package (inherit python2-quex-0.67.3)
14609 (name "python2-quex")
14610 (version "0.68.1")
14611 (source
14612 (origin
14613 (method url-fetch)
14614 (uri (string-append "mirror://sourceforge/quex/DOWNLOAD/quex-" version ".tar.gz"))
14615 (sha256
14616 (base32
14617 "0svc9nla3b9145d6b7fb9dizx412l3difzqw0ilh9lz52nsixw8j"))
14618 (file-name (string-append name "-" version ".tar.gz"))))))
14619
14620(define-public python-more-itertools
14621 (package
14622 (name "python-more-itertools")
14623 (version "4.3.0")
14624 (source
14625 (origin
14626 (method url-fetch)
14627 (uri (pypi-uri "more-itertools" version))
14628 (sha256
14629 (base32
14630 "17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4"))))
14631 (build-system python-build-system)
14632 (arguments
14633 `(,@(if (any (cute string-prefix? <> (or (%current-system)
14634 (%current-target-system)))
14635 '("armhf" "i686"))
14636 '(#:phases
14637 (modify-phases %standard-phases
14638 ;; This is required for 32-bit hardware.
14639 ;; TODO: Try to remove this when upgrading.
14640 (add-after 'unpack 'patch-test
14641 (lambda _
14642 (substitute* "more_itertools/tests/test_more.py"
14643 (("10 \\*\\* 10") "9 ** 9"))
14644 #t))))
14645 '())))
14646 (propagated-inputs
14647 `(("python-six" ,python-six-bootstrap)))
14648 (home-page "https://github.com/erikrose/more-itertools")
14649 (synopsis "More routines for operating on iterables, beyond itertools")
14650 (description "Python's built-in @code{itertools} module implements a
14651number of iterator building blocks inspired by constructs from APL, Haskell,
14652and SML. @code{more-itertools} includes additional building blocks for
14653working with iterables.")
14654 (license license:expat)))
14655
14656(define-public python2-more-itertools
14657 (package-with-python2 python-more-itertools))
14658
14659(define-public python-latexcodec
14660 (package
14661 (name "python-latexcodec")
91b61f02 14662 (version "1.0.6")
44d10b1f
RW
14663 (source
14664 (origin
14665 (method url-fetch)
14666 (uri (pypi-uri "latexcodec" version))
14667 (sha256
91b61f02 14668 (base32 "0s4wdbg0w2l8pj3i0y4510i0s04p8nhxcsa2z41bjsv0k66npb81"))))
44d10b1f
RW
14669 (build-system python-build-system)
14670 (inputs
14671 `(("python-six" ,python-six)))
14672 (home-page "https://readthedocs.org/projects/latexcodec/")
14673 (synopsis "Work with LaTeX code in Python")
14674 (description "Lexer and codec to work with LaTeX code in Python.")
14675 (license license:expat)))
14676
14677(define-public python-pybtex
14678 (package
14679 (name "python-pybtex")
9441a9c1 14680 (version "0.22.2")
44d10b1f
RW
14681 (source
14682 (origin
14683 (method url-fetch)
14684 (uri (pypi-uri "pybtex" version))
14685 (sha256
9441a9c1 14686 (base32 "070wfcmxrd7xg1si421mi9150gmx2qwx431nwf69sq3hhmgnx080"))))
44d10b1f
RW
14687 (build-system python-build-system)
14688 (native-inputs
14689 `(("python-nose" ,python-nose)))
14690 (inputs
14691 `(("python-latexcodec" ,python-latexcodec)
14692 ("python-pyyaml" ,python-pyyaml)
14693 ("python-six" ,python-six)))
14694 (arguments
14695 `(#:test-target "nosetests"))
14696 (home-page "https://pybtex.org/")
14697 (synopsis "BibTeX-compatible bibliography processor")
14698 (description "Pybtex is a BibTeX-compatible bibliography processor written
14699in Python. You can simply type pybtex instead of bibtex.")
14700 (license license:expat)))
14701
14702(define-public python-onetimepass
14703 (package
14704 (name "python-onetimepass")
14705 (version "1.0.1")
14706 (source
14707 (origin
14708 (method url-fetch)
14709 (uri (pypi-uri "onetimepass" version))
14710 (sha256
14711 (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5"))))
14712 (build-system python-build-system)
14713 (propagated-inputs `(("python-six" ,python-six)))
14714 (home-page "https://github.com/tadeck/onetimepass/")
14715 (synopsis "One-time password library")
14716 (description "Python one-time password library for HMAC-based (HOTP) and
14717time-based (TOTP) passwords.")
14718 (license license:expat)))
14719
14720(define-public python-parso
14721 (package
14722 (name "python-parso")
14723 (version "0.3.1")
14724 (source
14725 (origin
14726 (method url-fetch)
14727 (uri (pypi-uri "parso" version))
14728 (sha256
14729 (base32
14730 "18p89iwcm8mnf380f92g9w0bhx5km8wxp392vvjcq4y1ld1llw1m"))))
14731 (native-inputs
14732 `(("python-pytest" ,python-pytest)))
14733 (build-system python-build-system)
14734 (home-page "https://github.com/davidhalter/parso")
14735 (synopsis "Python Parser")
14736 (description "Parso is a Python parser that supports error recovery and
14737round-trip parsing for different Python versions (in multiple Python versions).
14738Parso is also able to list multiple syntax errors in your Python file.")
14739 (license license:expat)))
14740
14741(define-public python2-parso
14742 (package-with-python2 python-parso))
14743
14744(define-public python-async-generator
14745 (package
14746 (name "python-async-generator")
94fcbf8d 14747 (version "1.10")
44d10b1f
RW
14748 (source
14749 (origin
14750 (method url-fetch)
14751 (uri (pypi-uri "async_generator" version))
14752 (sha256
14753 (base32
94fcbf8d 14754 "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf"))))
44d10b1f
RW
14755 (build-system python-build-system)
14756 (native-inputs
14757 `(("python-pytest" ,python-pytest)))
14758 (home-page "https://github.com/python-trio/async_generator")
14759 (synopsis "Async generators and context managers for Python 3.5+")
14760 (description "@code{async_generator} back-ports Python 3.6's native async
14761generators and Python 3.7's context managers into Python 3.5.")
14762 ;; Dual licensed.
14763 (license (list license:expat license:asl2.0))))
14764
14765(define-public python-async-timeout
14766 (package
14767 (name "python-async-timeout")
14768 (version "3.0.1")
14769 (source
14770 (origin
14771 (method url-fetch)
14772 (uri (pypi-uri "async-timeout" version))
14773 (sha256
14774 (base32
14775 "0pscbyr840m7fyfc3r8zv9kgkwdcn9f78p7zsrczciwd09m82g0c"))))
14776 (build-system python-build-system)
14777 (home-page "https://github.com/aio-libs/async_timeout/")
14778 (synopsis "Timeout context manager for asyncio programs")
14779 (description "@code{async-timeout} provides a timeout timeout context
14780manager compatible with @code{asyncio}.")
14781 (license license:asl2.0)))
14782
14783(define-public python-glob2
14784 (package
14785 (name "python-glob2")
14786 (version "0.6")
8fa2bcc7
TGR
14787 (source
14788 (origin
14789 (method git-fetch)
14790 (uri (git-reference
14791 (url "https://github.com/miracle2k/python-glob2.git")
14792 (commit version)))
14793 (file-name (git-file-name name version))
14794 (sha256
14795 (base32 "1lm1xz3k3l0k1c5bcp9hlzmi3gp5j8dl1k3xhpiq5mnm0xq6n163"))))
44d10b1f
RW
14796 (build-system python-build-system)
14797 (home-page "https://github.com/miracle2k/python-glob2/")
14798 (synopsis "Extended Version of the python buildin glob module")
14799 (description "This is an extended version of the Python
14800@url{http://docs.python.org/library/glob.html, built-in glob module} which
14801adds:
14802
14803@itemize
14804@item The ability to capture the text matched by glob patterns, and return
14805those matches alongside the file names.
14806@item A recursive @code{**} globbing syntax, akin for example to the
14807@code{globstar} option of Bash.
14808@item The ability to replace the file system functions used, in order to glob
14809on virtual file systems.
14810@item Compatible with Python 2 and Python 3 (tested with 3.3).
14811@end itemize
14812
14813Glob2 currently based on the glob code from Python 3.3.1.")
14814 (license license:bsd-2)))
14815
14816(define-public python2-glob2
14817 (package-with-python2 python-glob2))
14818
14819(define-public python-gipc
14820 (package
14821 (name "python-gipc")
14822 (version "0.6.0")
14823 (source
14824 (origin
14825 (method url-fetch)
14826 (uri (pypi-uri "gipc" version ".zip"))
14827 (sha256
14828 (base32
14829 "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2"))))
14830 (build-system python-build-system)
14831 (native-inputs
14832 `(("unzip" ,unzip)))
14833 (propagated-inputs
14834 `(("python-gevent" ,python-gevent)))
14835 (home-page "http://gehrcke.de/gipc")
14836 (synopsis "Child process management in the context of gevent")
14837 (description "Usage of Python's multiprocessing package in a
14838gevent-powered application may raise problems. With @code{gipc},
14839process-based child processes can safely be created anywhere within a
14840gevent-powered application.")
14841 (license license:expat)))
14842
14843(define-public python2-gipc
14844 (package-with-python2 python-gipc))
14845
14846(define-public python-fusepy
14847 (package
14848 (name "python-fusepy")
14849 (version "2.0.4")
14850 (source
14851 (origin
14852 (method url-fetch)
14853 (uri (pypi-uri "fusepy" version))
14854 (sha256
14855 (base32
14856 "0v5grm4zyf58hsplwsxfbihddw95lz9w8cy3rpzbyha287swgx8h"))))
14857 (build-system python-build-system)
14858 (arguments
14859 `(#:phases
14860 (modify-phases %standard-phases
14861 (add-before 'build 'set-library-file-name
14862 (lambda* (#:key inputs #:allow-other-keys)
14863 (let ((fuse (assoc-ref inputs "fuse")))
14864 (substitute* "fuse.py"
14865 (("find_library\\('fuse'\\)")
14866 (string-append "'" fuse "/lib/libfuse.so'")))
14867 #t))))))
14868 (propagated-inputs
14869 `(("fuse" ,fuse)))
14870 (home-page "https://github.com/fusepy/fusepy")
14871 (synopsis "Simple ctypes bindings for FUSE")
14872 (description "Python module that provides a simple interface to FUSE and
14873MacFUSE. The binding is created using the standard @code{ctypes} library.")
14874 (license license:isc)))
14875
14876(define-public python2-fusepy
14877 (package-with-python2 python-fusepy))
14878
14879(define-public python2-gdrivefs
14880 (package
14881 (name "python2-gdrivefs")
14882 (version "0.14.9")
14883 (source
14884 (origin
14885 (method url-fetch)
14886 (uri (pypi-uri "gdrivefs" version))
14887 (sha256
14888 (base32
14889 "0v9sp2cfg4ki3wagkwf3rnfpjhvgf845anz3757il9z95yvvcvb7"))))
14890 (build-system python-build-system)
14891 (arguments
14892 `(#:python ,python-2
14893 #:phases
14894 (modify-phases %standard-phases
14895 (add-before 'build 'patch-setup-py
14896 (lambda _
14897 ;; Update requirements from dependency==version
14898 ;; to dependency>=version
14899 (substitute* "gdrivefs/resources/requirements.txt"
14900 (("==") ">="))
14901 #t)))))
14902 (native-inputs
14903 `(("python2-gipc" ,python2-gipc)
14904 ("python2-gevent" ,python2-gevent)
14905 ("python2-greenlet" ,python2-greenlet)
14906 ("python2-httplib2" ,python2-httplib2)
14907 ("python2-uritemplate" ,python2-uritemplate)
14908 ("python2-oauth2client" ,python2-oauth2client)
14909 ("python2-six" ,python2-six)))
14910 (propagated-inputs
14911 `(("python2-dateutil" ,python2-dateutil)
14912 ("python2-fusepy" ,python2-fusepy)
14913 ("python2-google-api-client" ,python2-google-api-client)))
14914 (home-page "https://github.com/dsoprea/GDriveFS")
14915 (synopsis "Mount Google Drive as a local file system")
14916 (description "@code{gdrivefs} provides a FUSE wrapper for Google Drive
14917under Python 2.7.")
14918 (license license:gpl2)))
14919
14920(define-public pybind11
14921 (package
14922 (name "pybind11")
14923 (version "2.2.4")
14924 (source (origin
14925 (method git-fetch)
14926 (uri (git-reference
14927 (url "https://github.com/pybind/pybind11.git")
14928 (commit (string-append "v" version))))
14929 (sha256
14930 (base32
14931 "0pa79ymcasv8br5ifbx7878id5py2jpjac3i20cqxr6gs9l6ivlv"))
14932 (file-name (git-file-name name version))))
14933 (build-system cmake-build-system)
14934 (native-inputs
14935 `(("python" ,python)
14936 ("python-pytest" ,python-pytest)))
14937 (arguments
14938 `(#:test-target "check"))
14939 (home-page "https://github.com/pybind/pybind11/")
14940 (synopsis "Seamless operability between C++11 and Python")
14941 (description "pybind11 is a lightweight header-only library that exposes
14942C++ types in Python and vice versa, mainly to create Python bindings of
14943existing C++ code. Its goals and syntax are similar to the excellent
14944Boost.Python library by David Abrahams: to minimize boilerplate code in
14945traditional extension modules by inferring type information using compile-time
14946introspection.")
14947 (license license:expat)))
14948
14949(define-public python-fasteners
14950 (package
14951 (name "python-fasteners")
14952 (version "0.14.1")
14953 (source
14954 (origin
14955 (method url-fetch)
14956 (uri (pypi-uri "fasteners" version))
14957 (sha256
14958 (base32
14959 "063y20kx01ihbz2mziapmjxi2cd0dq48jzg587xdsdp07xvpcz22"))))
14960 (build-system python-build-system)
14961 (propagated-inputs
14962 `(("python-monotonic" ,python-monotonic)
14963 ("python-six" ,python-six)
14964 ("python-testtools" ,python-testtools)))
14965 (home-page "https://github.com/harlowja/fasteners")
14966 (synopsis "Python package that provides useful locks")
14967 (description
14968 "This package provides a Python program that provides following locks:
14969
14970@itemize
14971@item Locking decorator
14972@item Reader-writer locks
14973@item Inter-process locks
14974@item Generic helpers
14975@end itemize\n")
14976 (properties `((python2-variant . ,(delay python2-fasteners))))
14977 (license license:asl2.0)))
14978
14979(define-public python2-fasteners
14980 (let ((base (package-with-python2 (strip-python2-variant python-fasteners))))
14981 (package
14982 (inherit base)
14983 (propagated-inputs
14984 `(("python2-futures" ,python2-futures)
14985 ,@(package-propagated-inputs base))))))
14986
14987(define-public python-requests-file
14988 (package
14989 (name "python-requests-file")
14990 (version "1.4.3")
14991 (source
14992 (origin
14993 (method url-fetch)
14994 (uri (pypi-uri "requests-file" version))
14995 (sha256
14996 (base32
14997 "1yp2jaxg3v86pia0q512dg3hz6s9y5vzdivsgrba1kds05ial14g"))))
14998 (build-system python-build-system)
14999 (propagated-inputs
15000 `(("python-requests" ,python-requests)
15001 ("python-six" ,python-six)))
15002 (home-page
15003 "https://github.com/dashea/requests-file")
15004 (synopsis "File transport adapter for Requests")
15005 (description
15006 "Requests-File is a transport adapter for use with the Requests Python
52beae7b 15007library to allow local file system access via @code{file://} URLs.")
44d10b1f
RW
15008 (license license:asl2.0)))
15009
15010(define-public python2-requests-file
15011 (package-with-python2 python-requests-file))
15012
15013(define-public python-tldextract
15014 (package
15015 (name "python-tldextract")
15016 (version "2.2.0")
15017 (source
15018 (origin
15019 (method url-fetch)
15020 (uri (pypi-uri "tldextract" version))
15021 (sha256
15022 (base32
15023 "1d5s8v6kpsgazyahflhji1cfdcf89rv7l7z55v774bhzvcjp2y99"))))
15024 (build-system python-build-system)
15025 (native-inputs
15026 `(("python-pytest" ,python-pytest)
15027 ("python-responses" ,python-responses)))
15028 (propagated-inputs
15029 `(("python-idna" ,python-idna)
15030 ("python-requests" ,python-requests)
15031 ("python-requests-file" ,python-requests-file)))
15032 (home-page
15033 "https://github.com/john-kurkowski/tldextract")
15034 (synopsis
15035 "Separate the TLD from the registered domain and subdomains of a URL")
15036 (description
15037 "TLDExtract accurately separates the TLD from the registered domain and
15038subdomains of a URL, using the Public Suffix List. By default, this includes
15039the public ICANN TLDs and their exceptions. It can optionally support the
15040Public Suffix List's private domains as well.")
15041 (license license:bsd-3)))
15042
15043(define-public python2-tldextract
15044 (package-with-python2 python-tldextract))
15045
15046(define-public python-pynamecheap
15047 (package
15048 (name "python-pynamecheap")
15049 (version "0.0.3")
15050 (source
15051 (origin
15052 (method url-fetch)
15053 (uri (pypi-uri "PyNamecheap" version))
15054 (sha256
15055 (base32
15056 "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l"))))
15057 (build-system python-build-system)
15058 (propagated-inputs
15059 `(("python-requests" ,python-requests)))
15060 (home-page
15061 "https://github.com/Bemmu/PyNamecheap")
15062 (synopsis
15063 "Namecheap API client in Python")
15064 (description
15065 "PyNamecheap is a Namecheap API client in Python.")
15066 (license license:expat)))
15067
15068(define-public python2-pynamecheap
15069 (package-with-python2 python-pynamecheap))
15070
15071(define-public python-dns-lexicon
15072 (package
15073 (name "python-dns-lexicon")
15074 (version "2.4.0")
15075 (source
15076 (origin
15077 (method url-fetch)
15078 (uri (pypi-uri "dns-lexicon" version))
15079 (sha256
15080 (base32
15081 "0jdn3ns71bsybr7njgsqr9xlxsqh7zh6phn4ld0liazqdn2l5f6m"))))
15082 (build-system python-build-system)
15083 (arguments
15084 `(#:tests? #f)) ;requires internet access
15085 (propagated-inputs
15086 `(("python-future" ,python-future)
15087 ("python-pynamecheap" ,python-pynamecheap)
15088 ("python-requests" ,python-requests)
15089 ("python-tldextract" ,python-tldextract)
15090 ("python-urllib3" ,python-urllib3)))
15091 (home-page "https://github.com/AnalogJ/lexicon")
15092 (synopsis
15093 "Manipulate DNS records on various DNS providers")
15094 (description
15095 "Lexicon provides a way to manipulate DNS records on multiple DNS
15096providers in a standardized way. It has a CLI but it can also be used as a
15097Python library. It was designed to be used in automation, specifically with
15098Let's Encrypt.")
15099 (license license:expat)))
15100
15101(define-public python2-dns-lexicon
15102 (package-with-python2 python-dns-lexicon))
15103
15104(define-public python-commandlines
15105 (package
15106 (name "python-commandlines")
15107 (version "0.4.1")
15108 (source
15109 (origin
15110 (method url-fetch)
15111 (uri (pypi-uri "commandlines" version))
15112 (sha256
15113 (base32
15114 "0r7xcr0knv02p4mswa2bng61nn8nbhhrs6kvdnb9bb3hhjvm1dl6"))))
15115 (build-system python-build-system)
15116 (home-page "https://github.com/chrissimpkins/commandlines")
15117 (synopsis "Command line argument to object parsing library")
15118 (description
15119 "@code{Commandlines} is a Python library for command line application
15120development that supports command line argument parsing, command string
15121validation testing and application logic.")
15122 (license license:expat)))
15123
15124;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with
15125;; python-numba. They have a very unflexible relationship.
15126(define-public python-numba
15127 (package
15128 (name "python-numba")
7757e6d8 15129 (version "0.42.0")
44d10b1f
RW
15130 (source
15131 (origin
15132 (method url-fetch)
15133 (uri (pypi-uri "numba" version))
15134 (sha256
15135 (base32
7757e6d8 15136 "03rqdfx0512lcri2bcpngx5k3jwfbqnanqj3n19c7d6h6hqxvq9x"))))
44d10b1f
RW
15137 (build-system python-build-system)
15138 (arguments
15139 `(#:modules ((guix build utils)
15140 (guix build python-build-system)
15141 (ice-9 ftw)
15142 (srfi srfi-1)
15143 (srfi srfi-26))
15144 #:phases
15145 (modify-phases %standard-phases
15146 (add-after 'unpack 'disable-proprietary-features
15147 (lambda _
15148 (setenv "NUMBA_DISABLE_HSA" "1")
15149 (setenv "NUMBA_DISABLE_CUDA" "1")
15150 #t))
15151 (add-after 'unpack 'remove-failing-tests
15152 (lambda _
15153 ;; FIXME: these tests fail for unknown reasons:
15154 ;; test_non_writable_pycache, test_non_creatable_pycache, and
15155 ;; test_frozen (all in numba.tests.test_dispatcher.TestCache).
15156 (substitute* "numba/tests/test_dispatcher.py"
15157 (("def test(_non_writable_pycache)" _ m)
15158 (string-append "def guix_skip" m))
15159 (("def test(_non_creatable_pycache)" _ m)
15160 (string-append "def guix_skip" m))
15161 (("def test(_frozen)" _ m)
15162 (string-append "def guix_skip" m)))
15163
15164 ;; These tests fail because we don't run the tests from the build
15165 ;; directory: test_setup_py_distutils, test_setup_py_setuptools
15166 ;; They ar in numba.tests.test_pycc.TestDistutilsSupport.
15167 (substitute* "numba/tests/test_pycc.py"
15168 (("def test(_setup_py_distutils|_setup_py_setuptools)" _ m)
15169 (string-append "def guix_skip" m)))
15170 #t))
15171 (replace 'check
15172 (lambda _
15173 (let ((cwd (getcwd)))
15174 (setenv "PYTHONPATH"
15175 (string-append cwd "/build/"
15176 (find (cut string-prefix? "lib" <>)
15177 (scandir (string-append cwd "/build")))
15178 ":"
15179 (getenv "PYTHONPATH")))
15180 ;; Something is wrong with the PYTHONPATH when running the
15181 ;; tests from the build directory, as it complains about not being
15182 ;; able to import certain modules.
15183 (with-directory-excursion "/tmp"
15184 (invoke "python3" "-m" "numba.runtests" "-v" "-m")))
15185 #t)))))
15186 (propagated-inputs
15187 `(("python-llvmlite" ,python-llvmlite)
15188 ("python-numpy" ,python-numpy)
15189 ("python-singledispatch" ,python-singledispatch)))
15190 ;; Needed for tests.
15191 (inputs
15192 `(("python-jinja2" ,python-jinja2)
15193 ("python-pygments" ,python-pygments)))
15194 (home-page "https://numba.pydata.org")
15195 (synopsis "Compile Python code using LLVM")
15196 (description "Numba gives you the power to speed up your applications with
15197high performance functions written directly in Python. With a few
15198annotations, array-oriented and math-heavy Python code can be just-in-time
15199compiled to native machine instructions, similar in performance to C, C++ and
15200Fortran, without having to switch languages or Python interpreters.
15201
15202Numba works by generating optimized machine code using the LLVM compiler
15203infrastructure at import time, runtime, or statically (using the included pycc
15204tool).")
15205 (license license:bsd-3)))
15206
15207(define-public python-anndata
15208 (package
15209 (name "python-anndata")
8c9372c1 15210 (version "0.6.18")
44d10b1f
RW
15211 (source
15212 (origin
15213 (method url-fetch)
15214 (uri (pypi-uri "anndata" version))
15215 (sha256
15216 (base32
8c9372c1 15217 "03x83yjaccbqszj7x4fwwmpil0ai59yx64d1zmf2691za3j03w73"))))
44d10b1f
RW
15218 (build-system python-build-system)
15219 (propagated-inputs
15220 `(("python-h5py" ,python-h5py)
15221 ("python-natsort" ,python-natsort)
15222 ("python-pandas" ,python-pandas)
15223 ("python-scipy" ,python-scipy)))
15224 (home-page "https://github.com/theislab/anndata")
15225 (synopsis "Annotated data for data analysis pipelines")
15226 (description "Anndata is a package for simple (functional) high-level APIs
15227for data analysis pipelines. In this context, it provides an efficient,
15228scalable way of keeping track of data together with learned annotations and
15229reduces the code overhead typically encountered when using a mostly
15230object-oriented library such as @code{scikit-learn}.")
15231 (license license:bsd-3)))
15232
15233(define-public python-dill
15234 (package
15235 (name "python-dill")
c60b15cc 15236 (version "0.2.9")
44d10b1f
RW
15237 (source
15238 (origin
15239 (method url-fetch)
15240 (uri (pypi-uri "dill" version))
15241 (sha256
c60b15cc 15242 (base32 "0vwqyi6hyz2r29zydc78dqymkbc5y7gia16xcdh215cikxph9mpn"))))
44d10b1f 15243 (build-system python-build-system)
c60b15cc 15244 ;; FIXME: The check phase fails with "don't know how to make test from: …".
44d10b1f
RW
15245 (arguments '(#:tests? #f))
15246 (home-page "https://pypi.org/project/dill")
15247 (synopsis "Serialize all of Python")
15248 (description "Dill extends Python's @code{pickle} module for serializing
15249and de-serializing Python objects to the majority of the built-in Python
15250types. Dill provides the user the same interface as the @code{pickle} module,
15251and also includes some additional features. In addition to pickling Python
15252objects, @code{dill} provides the ability to save the state of an interpreter
61985d65 15253session in a single command. Hence, it would be feasible to save a
44d10b1f
RW
15254interpreter session, close the interpreter, ship the pickled file to another
15255computer, open a new interpreter, unpickle the session and thus continue from
15256the saved state of the original interpreter session.")
15257 (license license:bsd-3)))
15258
15259(define-public python-multiprocess
15260 (package
15261 (name "python-multiprocess")
15262 (version "0.70.6.1")
15263 (source
15264 (origin
15265 (method url-fetch)
15266 (uri (pypi-uri "multiprocess" version))
15267 (sha256
15268 (base32
15269 "1ip5caz67b3q0553mr8gm8xwsb8x500jn8ml0gihgyfy52m2ypcq"))))
15270 (build-system python-build-system)
15271 (propagated-inputs
15272 `(("python-dill" ,python-dill)))
15273 (home-page "https://pypi.org/project/multiprocess")
15274 (synopsis "Multiprocessing and multithreading in Python")
15275 (description
15276 "This package is a fork of the multiprocessing Python package, a package
15277which supports the spawning of processes using the API of the standard
15278library's @code{threading} module.")
15279 (license license:bsd-3)))
15280
15281(define-public python-toolz
15282 (package
15283 (name "python-toolz")
15284 (version "0.9.0")
15285 (source
15286 (origin
15287 (method url-fetch)
15288 (uri (pypi-uri "toolz" version))
15289 (sha256
15290 (base32
15291 "1j9i7fdjnx9dz35fdj5gvgxx6585ja9sxgaiv65if77nlxz0m7wj"))))
15292 (build-system python-build-system)
15293 ;; FIXME: tests cannot be computed: "Can't perform this operation for
15294 ;; unregistered loader type"
15295 (arguments '(#:tests? #f))
15296 (home-page "https://github.com/pytoolz/toolz/")
15297 (synopsis "List processing tools and functional utilities")
15298 (description
15299 "This package provides a set of utility functions for iterators,
15300functions, and dictionaries.")
15301 (license license:bsd-3)))
15302
15303(define-public python2-toolz
15304 (package-with-python2 python-toolz))
15305
15306(define-public python-cytoolz
15307 (package
15308 (name "python-cytoolz")
15309 (version "0.9.0.1")
15310 (source
15311 (origin
15312 (method url-fetch)
15313 (uri (pypi-uri "cytoolz" version))
15314 (sha256
15315 (base32
15316 "1r80p88hm3f3r4zpixzr047y5hw4bzy41m4xywnhycda83x0dk44"))))
15317 (build-system python-build-system)
15318 ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute
15319 ;; 'exceptions'"
15320 (arguments '(#:tests? #f))
15321 (propagated-inputs
15322 `(("python-toolz" ,python-toolz)))
15323 (native-inputs
15324 `(("python-cython" ,python-cython)))
15325 (home-page "https://github.com/pytoolz/cytoolz")
15326 (synopsis "High performance functional utilities")
15327 (description
15328 "The cytoolz package implements the same API as provided by toolz. The
15329main differences are that @code{cytoolz} is faster and cytoolz offers a C API
15330that is accessible to other projects developed in Cython.")
15331 (license license:bsd-3)))
15332
15333(define-public python-sortedcontainers
15334 (package
15335 (name "python-sortedcontainers")
15336 (version "2.0.4")
15337 (source
15338 (origin
15339 (method url-fetch)
15340 (uri (pypi-uri "sortedcontainers" version))
15341 (sha256
15342 (base32
15343 "10hrk2k0hbf9x78vd3f0lj277m1yzfhzzxr0hja718liwb398wk0"))))
15344 (build-system python-build-system)
15345 (native-inputs
15346 `(("python-tox" ,python-tox)))
15347 (home-page "http://www.grantjenks.com/docs/sortedcontainers/")
15348 (synopsis "Sorted List, Sorted Dict, Sorted Set")
15349 (description
15350 "This package provides a sorted collections library, written in
15351pure-Python.")
15352 (license license:asl2.0)))
15353
15354(define-public python-cloudpickle
15355 (package
15356 (name "python-cloudpickle")
15357 (version "0.6.1")
15358 (source
15359 (origin
15360 (method url-fetch)
15361 (uri (pypi-uri "cloudpickle" version))
15362 (sha256
15363 (base32
15364 "1wdw89mlm7fqa3fm3ymskx05jrys66n8m1z1a8s0mss0799ahsgi"))))
15365 (build-system python-build-system)
15366 ;; FIXME: there are 5 errors in 122 tests:
15367 ;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.CloudPickleTest)
15368 ;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.CloudPickleTest)
15369 ;; ERROR: test_function_pickle_compat_0_4_0 (tests.cloudpickle_test.Protocol2CloudPickleTest)
15370 ;; ERROR: test_function_pickle_compat_0_4_1 (tests.cloudpickle_test.Protocol2CloudPickleTest)
15371 ;; ERROR: test_temp_file (tests.cloudpickle_file_test.CloudPickleFileTests)
15372 ;; TypeError: cannot serialize '_io.BufferedRandom' object
15373 (arguments '(#:tests? #f))
15374 (native-inputs
15375 `(("python-pytest" ,python-pytest)
15376 ("python-mock" ,python-mock)
15377 ("python-tornado" ,python-tornado)))
15378 (home-page "https://github.com/cloudpipe/cloudpickle")
15379 (synopsis "Extended pickling support for Python objects")
15380 (description
15381 "Cloudpickle makes it possible to serialize Python constructs not
15382supported by the default pickle module from the Python standard library. It
15383is especially useful for cluster computing where Python expressions are
15384shipped over the network to execute on remote hosts, possibly close to the
15385data.")
15386 (license license:bsd-3)))
15387
15388(define-public python2-cloudpickle
15389 (package-with-python2 python-cloudpickle))
15390
15391(define-public python-locket
15392 (package
15393 (name "python-locket")
15394 (version "0.2.0")
15395 (source
15396 (origin
15397 (method url-fetch)
15398 (uri (pypi-uri "locket" version))
15399 (sha256
15400 (base32
15401 "1d4z2zngrpqkrfhnd4yhysh66kjn4mblys2l06sh5dix2p0n7vhz"))))
15402 (build-system python-build-system)
15403 (home-page "https://github.com/mwilliamson/locket.py")
15404 (synopsis "File-based locks for Python")
15405 (description
15406 "Locket implements a lock that can be used by multiple processes provided
15407they use the same path.")
15408 (license license:bsd-2)))
15409
15410(define-public python2-locket
15411 (package-with-python2 python-locket))
15412
15413(define-public python-blosc
15414 (package
15415 (name "python-blosc")
15416 (version "1.5.1")
15417 (source
15418 (origin
15419 (method url-fetch)
15420 (uri (pypi-uri "blosc" version))
15421 (sha256
15422 (base32
15423 "1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw"))))
15424 (build-system python-build-system)
15425 ;; FIXME: all tests pass, but then this error is printed:
15426 ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test
15427 (arguments '(#:tests? #f))
15428 (propagated-inputs
15429 `(("python-numpy" ,python-numpy)))
15430 (home-page "https://github.com/blosc/python-blosc")
15431 (synopsis "Python wrapper for the Blosc data compressor library")
15432 (description "Blosc is a high performance compressor optimized for binary
15433data. It has been designed to transmit data to the processor cache faster
15434than the traditional, non-compressed, direct memory fetch approach via a
15435@code{memcpy()} system call.
15436
15437Blosc works well for compressing numerical arrays that contains data with
15438relatively low entropy, like sparse data, time series, grids with
15439regular-spaced values, etc.
15440
15441This Python package wraps the Blosc library.")
15442 (license license:bsd-3)))
15443
15444(define-public python2-blosc
15445 (package-with-python2 python-blosc))
15446
15447(define-public python-partd
15448 (package
15449 (name "python-partd")
15450 (version "0.3.9")
15451 (source
15452 (origin
15453 (method url-fetch)
15454 (uri (pypi-uri "partd" version))
15455 (sha256
15456 (base32
15457 "0sz6rwlnl4fqq220pyz863cnv0gjdxl4m7lscl71ishl5z0xkmhz"))))
15458 (build-system python-build-system)
15459 (propagated-inputs
15460 `(("python-blosc" ,python-blosc)
15461 ("python-locket" ,python-locket)
15462 ("python-numpy" ,python-numpy)
15463 ("python-pandas" ,python-pandas)
15464 ("python-pyzmq" ,python-pyzmq)
15465 ("python-toolz" ,python-toolz)))
15466 (home-page "https://github.com/dask/partd/")
15467 (synopsis "Appendable key-value storage")
15468 (description "Partd stores key-value pairs. Values are raw bytes. We
15469append on old values. Partd excels at shuffling operations.")
15470 (license license:bsd-3)))
15471
15472(define-public python2-partd
15473 (package-with-python2 python-partd))
15474
15475(define-public python-dask
15476 (package
15477 (name "python-dask")
0998175f 15478 (version "1.2.2")
44d10b1f
RW
15479 (source
15480 (origin
15481 (method url-fetch)
15482 (uri (pypi-uri "dask" version))
15483 (sha256
0998175f 15484 (base32 "0b29gvf96gmp20wicly3v3mhyc93zbm3mdv935fka6x0wax7cy2y"))))
44d10b1f
RW
15485 (build-system python-build-system)
15486 ;; A single test out of 5000+ fails. This test is marked as xfail when
15487 ;; pytest-xdist is used.
15488 (arguments
15489 `(#:phases
15490 (modify-phases %standard-phases
15491 (add-after 'unpack 'disable-broken-test
15492 (lambda _
15493 (substitute* "dask/tests/test_threaded.py"
15494 (("def test_interrupt\\(\\)" m)
15495 (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
15496 m)))
15497 (when (which "python2")
15498 ;; This test fails with recent Pandas:
15499 ;; <https://github.com/dask/dask/issues/3794>.
15500 (substitute* "dask/dataframe/tests/test_dataframe.py"
15501 (("def test_info\\(\\)" m)
15502 (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
15503 m))))
15504 #t))
15505 (replace 'check
15506 (lambda _ (invoke "pytest" "-vv"))))))
15507 (propagated-inputs
15508 `(("python-cloudpickle" ,python-cloudpickle)
15509 ("python-numpy" ,python-numpy)
15510 ("python-pandas" ,python-pandas)
15511 ("python-partd" ,python-partd)
15512 ("python-toolz" ,python-toolz)
15513 ("python-pyyaml" ,python-pyyaml)))
15514 (native-inputs
15515 `(("python-pytest" ,python-pytest)
15516 ("python-pytest-runner" ,python-pytest-runner)))
15517 (home-page "https://github.com/dask/dask/")
15518 (synopsis "Parallel computing with task scheduling")
15519 (description
15520 "Dask is a flexible parallel computing library for analytics. It
15521consists of two components: dynamic task scheduling optimized for computation,
15522and large data collections like parallel arrays, dataframes, and lists that
15523extend common interfaces like NumPy, Pandas, or Python iterators to
15524larger-than-memory or distributed environments. These parallel collections
15525run on top of the dynamic task schedulers. ")
15526 (license license:bsd-3)))
15527
15528(define-public python2-dask
15529 (package-with-python2 python-dask))
15530
15531(define-public python-ilinkedlist
15532 (package
15533 (name "python-ilinkedlist")
15534 (version "0.4.0")
15535 (source
15536 (origin
15537 (method url-fetch)
15538 (uri (pypi-uri "ilinkedlist" version))
15539 (sha256
15540 (base32
15541 "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l"))))
15542 (build-system python-build-system)
15543 (native-inputs `(("python-pytest" ,python-pytest)))
15544 (inputs `(("python" ,python)))
15545 (home-page "https://github.com/luther9/ilinkedlist-py")
15546 (synopsis "Immutable linked list library")
15547 (description
15548 "This is a implementation of immutable linked lists for Python. It
15549contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes.
15550Since a linked list is treated as immutable, it is hashable, and its length
15551can be retrieved in constant time. Some of the terminology is inspired by
15552LISP. It is possible to create an improper list by creating a @code{Pair}
15553with a non-list @code{cdr}.")
15554 (license license:gpl3+)))
15555
15556(define-public python-readlike
15557 (package
15558 (name "python-readlike")
15559 (version "0.1.3")
15560 (source
15561 (origin
15562 (method url-fetch)
15563 (uri (pypi-uri "readlike" version))
15564 (sha256
15565 (base32 "027w8fvi50ksl57q0a7kb5zvmq8jxaawnviib1jdqw0p3igvm1j4"))))
15566 (build-system python-build-system)
15567 (home-page "https://github.com/jangler/readlike")
15568 (synopsis "GNU Readline-like line editing module")
15569 (description
15570 "This Python module provides line editing functions similar to the default
15571Emacs-style ones of GNU Readline. Unlike the Python standard library's
15572@code{readline} package, this one allows access to those capabilties in settings
15573outside of a standard command-line interface. It is especially well-suited to
15574interfacing with Urwid, due to a shared syntax for describing key inputs.
15575
15576Currently, all stateless Readline commands are implemented. Yanking and history
15577are not supported.")
15578 (license license:expat)))
15579
15580(define-public python2-readlike
15581 (package-with-python2 python-readlike))
15582
15583(define-public python-reparser
15584 (package
15585 (name "python-reparser")
15586 (version "1.4.3")
15587 (source
15588 (origin
15589 (method url-fetch)
15590 (uri (pypi-uri "ReParser" version))
15591 (sha256
15592 (base32 "0nniqb69xr0fv7ydlmrr877wyyjb61nlayka7xr08vlxl9caz776"))))
15593 (build-system python-build-system)
15594 (home-page "https://github.com/xmikos/reparser")
15595 (synopsis "Simple lexer/parser for inline markup based on regular expressions")
15596 (description
15597 "This Python library provides a simple lexer/parser for inline markup based
15598on regular expressions.")
15599 (license license:expat)))
15600
15601(define-public python2-reparser
15602 (let ((reparser (package-with-python2
15603 (strip-python2-variant python-reparser))))
15604 (package (inherit reparser)
15605 (propagated-inputs
15606 `(("python2-enum34" ,python2-enum34)
15607 ,@(package-propagated-inputs reparser))))))
15608
15609(define-public python-precis-i18n
15610 (package
15611 (name "python-precis-i18n")
15612 (version "1.0.0")
15613 (source
15614 (origin
15615 (method url-fetch)
15616 (uri (pypi-uri "precis_i18n" version))
15617 (sha256
15618 (base32
15619 "0gjhvwd8aifx94rl1ag08vlmndyx2q3fkyqb0c4i46x3p2bc2yi2"))))
15620 (build-system python-build-system)
15621 (home-page "https://github.com/byllyfish/precis_i18n")
15622 (synopsis "Implementation of the PRECIS framework")
15623 (description
15624 "This module implements the PRECIS Framework as described in RFC 8264,
15625RFC 8265 and RFC 8266.")
15626 (license license:expat)))
15627
d0446c4b
RW
15628(define-public python-absl-py
15629 (package
15630 (name "python-absl-py")
15631 (version "0.6.1")
15632 (source
15633 (origin
15634 (method url-fetch)
15635 (uri (pypi-uri "absl-py" version))
15636 (sha256
15637 (base32
15638 "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7"))))
15639 (build-system python-build-system)
15640 (propagated-inputs
15641 `(("python-six" ,python-six)))
15642 (home-page "https://github.com/abseil/abseil-py")
15643 (synopsis "Abseil Python common libraries")
15644 (description
15645 "This package provides the Abseil Python Common Libraries, a collection
15646of Python libraries for building Python applications.")
15647 (license license:asl2.0)))
15648
81bed4e9
RW
15649(define-public python-astor
15650 (package
15651 (name "python-astor")
15652 (version "0.7.1")
15653 (source
15654 (origin
15655 (method url-fetch)
15656 (uri (pypi-uri "astor" version))
15657 (sha256
15658 (base32
15659 "13gv6f2xz9i564byp21gcpc0l3w4cs23k1wbcam8kky2ls3hvhwm"))))
15660 (build-system python-build-system)
15661 ;; FIXME: There are two errors and two test failures.
15662 (arguments `(#:tests? #f))
15663 (home-page "https://github.com/berkerpeksag/astor")
39ee82ff 15664 (synopsis "Read and write Python ASTs")
81bed4e9 15665 (description "Astor is designed to allow easy manipulation of Python
39ee82ff 15666source via the Abstract Syntax Tree.")
81bed4e9
RW
15667 (license license:bsd-3)))
15668
39ee82ff
RW
15669(define-public python2-astor
15670 (package-with-python2 python-astor))
15671
22e623ae
RW
15672(define-public python-grpcio
15673 (package
15674 (name "python-grpcio")
15675 (version "1.17.1")
15676 (source
15677 (origin
15678 (method url-fetch)
15679 (uri (pypi-uri "grpcio" version))
15680 (sha256
15681 (base32
15682 "0qb9y6j83nxa6d4kc60i8yfgdm7a8ms7b54kncjzf5y7nsxp8rzx"))))
15683 (build-system python-build-system)
15684 (propagated-inputs
15685 `(("python-six" ,python-six)))
15686 (home-page "https://grpc.io")
15687 (synopsis "HTTP/2-based RPC framework")
15688 (description "This package provides a Python library for communicating
15689with the HTTP/2-based RPC framework gRPC.")
15690 (license license:asl2.0)))
15691
79869f80
RW
15692(define-public python-astunparse
15693 (package
15694 (name "python-astunparse")
47d79541 15695 (version "1.6.2")
79869f80
RW
15696 (source
15697 (origin
15698 (method url-fetch)
15699 (uri (pypi-uri "astunparse" version))
15700 (sha256
47d79541 15701 (base32 "0rzbc44xcvzjhhiy7wac96mgal5mcjz1mfq8rmvgswskf4kf9cys"))))
79869f80 15702 (build-system python-build-system)
47d79541 15703 (arguments '(#:tests? #f)) ; there are none
79869f80
RW
15704 (propagated-inputs
15705 `(("python-six" ,python-six)
15706 ("python-wheel" ,python-wheel)))
15707 (home-page "https://github.com/simonpercivall/astunparse")
15708 (synopsis "AST unparser for Python")
15709 (description "This package provides an AST unparser for Python. It is a
15710factored out version of @code{unparse} found in the Python source
15711distribution.")
15712 (license license:bsd-3)))
15713
2884aac0
RW
15714(define-public python-gast
15715 (package
15716 (name "python-gast")
bd300261 15717 (version "0.2.2")
2884aac0
RW
15718 (source
15719 (origin
15720 (method url-fetch)
15721 (uri (pypi-uri "gast" version))
15722 (sha256
bd300261 15723 (base32 "1w5dzdb3gpcfmd2s0b93d8gff40a1s41rv31458z14inb3s9v4zy"))))
2884aac0
RW
15724 (build-system python-build-system)
15725 (propagated-inputs
15726 `(("python-astunparse" ,python-astunparse)))
15727 (home-page "https://pypi.org/project/gast/")
15728 (synopsis "Generic Python AST that abstracts the underlying Python version")
15729 (description
15730 "GAST provides a compatibility layer between the AST of various Python
15731versions, as produced by @code{ast.parse} from the standard @code{ast}
15732module.")
15733 (license license:bsd-3)))
15734
44d10b1f
RW
15735(define-public python-wikidata
15736 (package
15737 (name "python-wikidata")
15738 (version "0.6.1")
15739 (source
15740 (origin
15741 (method url-fetch)
15742 (uri (pypi-uri "Wikidata" version))
15743 (sha256
15744 (base32
15745 "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9"))))
15746 (build-system python-build-system)
15747 (propagated-inputs
15748 `(("python-babel" ,python-babel)))
15749 (home-page "https://github.com/dahlia/wikidata")
15750 (synopsis "Wikidata client library")
15751 (description
15752 "This package provides a Python interface to
15753@url{https://www.wikidata.org/, Wikidata}.")
15754 (properties '((upstream-name . "Wikidata")))
15755 (license license:gpl3+)))
15756
15757(define-public python-doctest-ignore-unicode
15758 (package
15759 (name "python-doctest-ignore-unicode")
15760 (version "0.1.2")
15761 (source
15762 (origin
15763 (method url-fetch)
15764 (uri (pypi-uri "doctest-ignore-unicode" version))
15765 (sha256
15766 (base32
15767 "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w"))))
15768 (build-system python-build-system)
15769 (native-inputs
15770 `(("python-nose" ,python-nose)))
15771 (home-page "https://github.com/gnublade/doctest-ignore-unicode")
15772 (synopsis "Ignore Unicode literal prefixes in doctests")
15773 (description
15774 "This package adds support for a flag to ignore Unicode literal prefixes
15775in doctests.")
15776 (license license:asl2.0)))
15777
15778(define-public python-attr
15779 (package
15780 (name "python-attr")
15781 (version "0.3.1")
15782 (source
15783 (origin
15784 (method url-fetch)
15785 (uri (pypi-uri "attr" version))
15786 (sha256
15787 (base32
15788 "0pbpskvxp5hzdvcaf766ljwpckshir8sf7z6jqji6zyib20594ch"))))
15789 (build-system python-build-system)
15790 (home-page "https://github.com/denis-ryzhkov/attr")
15791 (synopsis "Decorator for attributes of target function or class")
15792 (description "Simple decorator to set attributes of target function or
15793class in a @acronym{DRY, Don't Repeat Yourself} way.")
15794 (license license:expat)))
f98232a3
VC
15795
15796(define-public python-construct
15797 (package
15798 (name "python-construct")
15799 (version "2.9.45")
15800 (source
15801 (origin
15802 (method url-fetch)
15803 (uri (pypi-uri "construct" version))
15804 (sha256
15805 (base32
15806 "130iy05awzigm2xah2yvlmb08mac5bi4gzr5m3g7k1krs3ps0w92"))))
15807 (build-system python-build-system)
15808 (arguments
15809 `(#:tests? #f)) ; No tests exist.
15810 (propagated-inputs
15811 `(("python-extras" ,python-extras)
15812 ("python-arrow" ,python-arrow)
15813 ("python-numpy" ,python-numpy)
15814 ("python-ruamel.yaml" ,python-ruamel.yaml)))
15815 (home-page "http://construct.readthedocs.io")
15816 (synopsis "Declarative and symmetrical parser and builder for binary data")
15817 (description
15818 "This package provides both simple, atomic constructs (such as
15819integers of various sizes), as well as composite ones which allow you
15820form hierarchical and sequential structures of increasing complexity.
15821It features bit and byte granularity, easy debugging and testing, an
15822easy-to-extend subclass system, and lots of primitive constructs to
15823make your work easier.")
15824 (license license:expat)))
b742c006
LF
15825
15826(define-public python-humanize
15827 (package
15828 (name "python-humanize")
15829 (version "0.5.1")
15830 (source
15831 (origin
15832 (method url-fetch)
15833 (uri (pypi-uri "humanize" version))
15834 (sha256
15835 (base32
15836 "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4"))))
15837 (arguments
15838 '(#:tests? #f)) ; tests not in pypi archive
15839 (build-system python-build-system)
15840 (home-page "https://github.com/jmoiron/humanize")
15841 (synopsis "Print numerical information in a human-readable form")
15842 (description "This package provides a Python module that displays numbers
15843and dates in \"human readable\" forms. For example, it would display
15844\"12345591313\" as \"12.3 billion\".")
15845 (license license:expat)))
d5bbf66d
LF
15846
15847(define-public python-txaio
15848 (package
15849 (name "python-txaio")
15850 (version "18.8.1")
15851 (source
15852 (origin
15853 (method url-fetch)
15854 (uri (pypi-uri "txaio" version))
15855 (sha256
15856 (base32
15857 "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7"))))
15858 (build-system python-build-system)
15859 (propagated-inputs
15860 `(("python-twisted" ,python-twisted)
15861 ("python-six" ,python-six)))
15862 (home-page "https://github.com/crossbario/txaio")
15863 (synopsis "Compatibility layer between Python asyncio and Twisted")
15864 (description "Txaio provides a compatibility layer between the Python
15865@code{asyncio} module and @code{Twisted}.")
15866 (license license:expat)))
963dfd3a
RW
15867
15868(define-public python-toolshed
15869 (package
15870 (name "python-toolshed")
15871 (version "0.4.6")
15872 (source
15873 (origin
15874 (method url-fetch)
15875 (uri (pypi-uri "toolshed" version))
15876 (sha256
15877 (base32
15878 "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3"))))
15879 (build-system python-build-system)
15880 (native-inputs
15881 `(("python-nose" ,python-nose)))
15882 (home-page "https://github.com/brentp/toolshed/")
15883 (synopsis "Collection of modules and functions for working with data")
15884 (description "This is a collection of well-tested, simple modules and
15885functions that aim to reduce boilerplate when working with data.")
15886 (license license:bsd-2)))
c91ecf2d
RW
15887
15888(define-public python-annoy
15889 (package
15890 (name "python-annoy")
15891 (version "1.15.1")
15892 (source
15893 (origin
15894 (method url-fetch)
15895 (uri (pypi-uri "annoy" version))
15896 (sha256
15897 (base32
15898 "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp"))))
15899 (build-system python-build-system)
15900 (native-inputs
15901 `(("python-nose" ,python-nose)))
15902 (home-page "https://github.com/spotify/annoy/")
15903 (synopsis "Approximate nearest neighbors library")
15904 (description
15905 "Annoy is a C++ library with Python bindings to search for points in
15906space that are close to a given query point. It also creates large read-only
15907file-based data structures that are @code{mmap}ped into memory so that many
15908processes may share the same data.")
15909 (license license:asl2.0)))
412342d1 15910
79bfa422 15911(define-public python-pylzma
412342d1 15912 (package
79bfa422
DM
15913 (name "python-pylzma")
15914 (version "0.5.0")
15915 (source
15916 (origin
15917 (method url-fetch)
15918 (uri (pypi-uri "pylzma" version))
15919 (sha256
15920 (base32
15921 "074anvhyjgsv2iby2ql1ixfvjgmhnvcwjbdz8gk70xzkzcm1fx5q"))))
412342d1 15922 (build-system python-build-system)
79bfa422
DM
15923 (home-page "http://www.joachim-bauch.de/projects/pylzma/")
15924 (synopsis "Python bindings for the LZMA library by Igor Pavlov.")
15925 (description "This package provides Python bindings for the LZMA library
15926by Igor Pavlov.")
15927 (license license:lgpl2.1+)))
15928
15929(define-public python2-pylzma
15930 (package-with-python2 python-pylzma))
f825e605 15931
6609ebe7
AG
15932(define-public python2-zeroconf
15933 (package
15934 (name "python2-zeroconf")
15935
15936 ;; This is the last version that supports Python 2.x.
15937 (version "0.19.1")
15938 (source
15939 (origin
15940 (method url-fetch)
15941 (uri (pypi-uri "zeroconf" version))
15942 (sha256
15943 (base32
15944 "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3"))))
15945 (build-system python-build-system)
15946 (arguments
15947 `(#:python ,python-2
15948 #:phases
15949 (modify-phases %standard-phases
15950 (add-after 'unpack 'patch-requires
15951 (lambda* (#:key inputs #:allow-other-keys)
15952 (substitute* "setup.py"
15953 (("enum-compat")
15954 "enum34"))
15955 #t)))))
15956 (native-inputs
15957 `(("python2-six" ,python2-six)
15958 ("python2-enum32" ,python2-enum34)
15959 ("python2-netifaces" ,python2-netifaces)
15960 ("python2-typing" ,python2-typing)))
15961 (home-page "https://github.com/jstasiak/python-zeroconf")
15962 (synopsis "Pure Python mDNS service discovery")
15963 (description
15964 "Pure Python multicast DNS (mDNS) service discovery library (Bonjour/Avahi
15965compatible).")
15966 (license license:lgpl2.1+)))
15967
f825e605
GLV
15968(define-public python-bsddb3
15969 (package
15970 (name "python-bsddb3")
15971 (version "6.2.6")
15972 (source
15973 (origin
15974 (method url-fetch)
15975 (uri (pypi-uri "bsddb3" version))
15976 (sha256
15977 (base32
15978 "019db2y6bfmiqbrgg9x9f6h72qjmqh05czdn2v5sy9bl0gs23mj2"))))
15979 (build-system python-build-system)
15980 (inputs
15981 `(("bdb" ,bdb)))
15982 (arguments
15983 '(#:phases
15984 (modify-phases %standard-phases
15985 (add-after 'unpack 'configure-locations
15986 (lambda* (#:key inputs #:allow-other-keys)
15987 (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
15988 (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
15989 #t))
15990 (replace 'check
15991 (lambda _
15992 (invoke "python3" "test3.py" "-v"))))))
15993 (home-page "https://www.jcea.es/programacion/pybsddb.htm")
15994 (synopsis "Python bindings for Oracle Berkeley DB")
15995 (description
15996 "This module provides a nearly complete wrapping of the Oracle/Sleepycat
15997C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
15998Transaction objects, and each of these is exposed as a Python type in the
15999bsddb3.db module. The database objects can use various access methods: btree,
16000hash, recno, and queue. Complete support of Berkeley DB distributed
16001transactions. Complete support for Berkeley DB Replication Manager.
16002Complete support for Berkeley DB Base Replication. Support for RPC.")
16003 (license license:bsd-3)))
edeb04bf
PL
16004
16005(define-public python-dbfread
16006 (package
16007 (name "python-dbfread")
16008 (version "2.0.7")
16009 (source (origin
16010 (method url-fetch)
16011 (uri (pypi-uri "dbfread" version))
16012 (sha256
16013 (base32
16014 "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07"))))
16015 (build-system python-build-system)
16016 (native-inputs
16017 `(("python-pytest" ,python-pytest)))
16018 (home-page "https://dbfread.readthedocs.io")
16019 (synopsis "Read DBF Files with Python")
16020 (description
16021 "This library reads DBF files and returns the data as native Python data
16022types for further processing. It is primarily intended for batch jobs and
16023one-off scripts.")
16024 (license license:expat)))
e308b4f0
JM
16025
16026(define-public python-cached-property
16027 (package
16028 (name "python-cached-property")
16029 (version "1.5.1")
16030 (source
16031 (origin
16032 (method url-fetch)
16033 (uri (pypi-uri "cached-property" version))
16034 (sha256
16035 (base32
16036 "010m1bl380l2r3vwq24r5v14l6gwvgm9v0mqqjkjss552jgsa5wj"))))
16037 (build-system python-build-system)
16038 (arguments
16039 `(#:phases
16040 (modify-phases %standard-phases
16041 ;; https://github.com/pydanny/cached-property/issues/131
16042 ;; recent versions of freezegun break one test
16043 (add-after 'unpack 'disable-broken-test
16044 (lambda _
16045 (substitute* "tests/test_cached_property.py"
16046 (("def test_threads_ttl_expiry\\(self\\)" m)
16047 (string-append "@unittest.skip(\"Disabled by Guix\")\n"
16048 " " m)))
16049 #t)))))
16050 (native-inputs
16051 `(("python-freezegun" ,python-freezegun)))
16052 (home-page
16053 "https://github.com/pydanny/cached-property")
16054 (synopsis
16055 "Decorator for caching properties in classes")
16056 (description
16057 "This package provides a decorator which makes caching
16058time-or-computationally-expensive properties quick and easy and works in Python
160592 or 3.")
16060 (license license:bsd-3)))
dfe8a704
NG
16061
16062(define-public python-folium
16063 (package
16064 (name "python-folium")
16065 (version "0.10.0")
16066 (source
16067 (origin
16068 (method url-fetch)
16069 (uri (pypi-uri "folium" version))
16070 (sha256
16071 (base32
16072 "18fzxijsgrb95r0a8anc9ba5ijyw3nlnv3rpavfbkqa5v878x84f"))))
16073 (build-system python-build-system)
16074 (propagated-inputs
16075 `(("python-branca" ,python-branca)
16076 ("python-jinja2" ,python-jinja2)
16077 ("python-numpy" ,python-numpy)
16078 ("python-requests" ,python-requests)))
16079 (native-inputs
16080 `(("python-pytest" ,python-pytest)))
16081 (home-page "https://github.com/python-visualization/folium")
16082 (synopsis "Make beautiful maps with Leaflet.js & Python")
16083 (description "@code{folium} makes it easy to visualize data that’s been
16084manipulated in Python on an interactive leaflet map. It enables both the
16085binding of data to a map for @code{choropleth} visualizations as well as
16086passing rich vector/raster/HTML visualizations as markers on the map.
16087
16088The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
16089Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
16090supports Image, Video, GeoJSON and TopoJSON overlays.")
16091 (license license:expat)))
9dd5f475
LC
16092
16093(define-public jube
16094 (package
16095 ;; This is a command-line tool, so no "python-" prefix.
16096 (name "jube")
16097 (version "2.2.2")
16098 (source (origin
16099 (method url-fetch)
16100 (uri (string-append
16101 "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
16102 version))
16103 (sha256
16104 (base32
16105 "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
16106 (file-name (string-append "jube-" version ".tar.gz"))))
16107 (build-system python-build-system)
16108 (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
16109 (synopsis "Benchmarking environment")
16110 (description
16111 "JUBE helps perform and analyze benchmarks in a systematic way. For each
16112benchmarked application, benchmark data is stored in a format that allows JUBE
16113to deduct the desired information. This data can be parsed by automatic pre-
16114and post-processing scripts that draw information and store it more densely
16115for manual interpretation.")
a9f33960 16116 (license license:gpl3+)))
66436424
NG
16117
16118(define-public python-pyroutelib3
16119 (package
16120 (name "python-pyroutelib3")
16121 (version "1.3.post1")
16122 (source
16123 (origin
16124 (method url-fetch)
16125 (uri (pypi-uri "pyroutelib3" version))
16126 (sha256
16127 (base32
16128 "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
16129 (build-system python-build-system)
16130 (propagated-inputs
16131 `(("python-dateutil" ,python-dateutil)))
16132 (home-page "https://github.com/MKuranowski/pyroutelib3")
16133 (synopsis "Library for simple routing on OSM data")
16134 (description "Library for simple routing on OSM data")
16135 (license license:gpl3+)))
30e7c03a
GL
16136
16137(define-public python-elementpath
16138 (package
16139 (name "python-elementpath")
16140 (version "1.2.0")
16141 (source
16142 (origin
16143 (method url-fetch)
16144 (uri (pypi-uri "elementpath" version))
16145 (sha256
16146 (base32
16147 "1syn2z543brab23dskh3fjd9pqvz6npqbcicrs2d88dbg26xl08p"))))
16148 (build-system python-build-system)
16149 (home-page
16150 "https://github.com/sissaschool/elementpath")
16151 (synopsis
16152 "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml")
16153 (description
16154 "The proposal of this package is to provide XPath 1.0 and 2.0 selectors
16155for Python's ElementTree XML data structures, both for the standard
16156ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
16157
16158For lxml.etree this package can be useful for providing XPath 2.0 selectors,
16159because lxml.etree already has it's own implementation of XPath 1.0.")
16160 (license license:expat)))