1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
3 ;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
5 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
6 ;;; Copyright © 2014, 2017, 2021, 2022 Eric Bavier <bavier@posteo.net>
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, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
11 ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
12 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
13 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
14 ;;; Copyright © 2015, 2016, 2017, 2019, 2022 Leo Famulari <leo@famulari.name>
15 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
16 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
17 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
18 ;;; Copyright © 2015, 2017, 2020 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, 2019, 2021 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>
26 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
27 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
28 ;;; Copyright © 2016 David Craven <david@craven.ch>
29 ;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
30 ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <stefan@xsteve.at>
31 ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
32 ;;; Copyright © 2016, 2017, 2018, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
33 ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
34 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
35 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
36 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
37 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
38 ;;; Copyright © 2017, 2018 Adriano Peluso <catonano@gmail.com>
39 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
40 ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Mathieu Othacehe <m.othacehe@gmail.com>
41 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
42 ;;; Copyright © 2017, 2020, 2021 Roel Janssen <roel@gnu.org>
43 ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
44 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
45 ;;; Copyright © 2017, 2019, 2021 Brendan Tildesley <mail@brendan.scot>
46 ;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com
47 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
48 ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
49 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
50 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
51 ;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
52 ;;; Copyright © 2018-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
53 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
54 ;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org>
55 ;;; Copyright © 2018, 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
56 ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
57 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
58 ;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
59 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
60 ;;; Copyright © 2019 Sam <smbaines8@gmail.com>
61 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
62 ;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
63 ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
64 ;;; Copyright © 2019, 2020, 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com>
65 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
66 ;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <goodoldpaul@autistici.org>
67 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
68 ;;; Copyright © 2019, 2020, 2021, 2022 Tanguy Le Carrour <tanguy@bioneland.org>
69 ;;; Copyright © 2019, 2021, 2022 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
70 ;;; Copyright © 2020 Riku Viitanen <riku.viitanen@protonmail.com>
71 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
72 ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com>
73 ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
74 ;;; Copyright © 2020, 2021 Alexandros Theodotou <alex@zrythm.org>
75 ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
76 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
77 ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
78 ;;; Copyright © 2020, 2022 Matthew James Kraai <kraai@ftbfs.org>
79 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
80 ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
81 ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
82 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
83 ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
84 ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
85 ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
86 ;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
87 ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
88 ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
89 ;;; Copyright © 2020, 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
90 ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
91 ;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
92 ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
93 ;;; Copyright © 2019 Kristian Trandem <kristian@devup.no>
94 ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com>
95 ;;; Copyright © 2020 EuAndreh <eu@euandre.org>
96 ;;; Copyright © 2021, 2022 Morgan Smith <Morgan.J.Smith@outlook.com>
97 ;;; Copyright © 2021, 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
98 ;;; Copyright © 2021 Ellis Kenyő <me@elken.dev>
99 ;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
100 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
101 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
102 ;;; Copyright © 2021 jgart <jgart@dismail.de>
103 ;;; Copyright © 2021 Danial Behzadi <dani.behzi@ubuntu.com>
104 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
105 ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
106 ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
107 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
108 ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
109 ;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
110 ;;; Copyright © 2021, 2022 Pradana Aumars <paumars@courrier.dev>
111 ;;; Copyright © 2021, 2022 Felix Gruber <felgru@posteo.net>
112 ;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
113 ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be>
114 ;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com>
115 ;;; Copyright © 2021 Filip Lajszczak <filip@lajszczak.dev>
116 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
117 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
118 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
119 ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
120 ;;; Copyright © 2022 drozdov <drozdov@portalenergy.tech>
121 ;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io>
122 ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
123 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
124 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
125 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
126 ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
127 ;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
128 ;;; Copyright © 2022 Marek Felšöci <marek@felsoci.sk>
129 ;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
130 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
131 ;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it>
132 ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org>
133 ;;; Copyright © 2022 Baptiste Strazzulla <bstrazzull@hotmail.fr>
135 ;;; This file is part of GNU Guix.
137 ;;; GNU Guix is free software; you can redistribute it and/or modify it
138 ;;; under the terms of the GNU General Public License as published by
139 ;;; the Free Software Foundation; either version 3 of the License, or (at
140 ;;; your option) any later version.
142 ;;; GNU Guix is distributed in the hope that it will be useful, but
143 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
144 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
145 ;;; GNU General Public License for more details.
147 ;;; You should have received a copy of the GNU General Public License
148 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
150 (define-module (gnu packages python-xyz)
151 #:use-module ((guix licenses) #:prefix license:)
152 #:use-module (gnu packages)
153 #:use-module (gnu packages algebra)
154 #:use-module (gnu packages adns)
155 #:use-module (gnu packages aidc)
156 #:use-module (gnu packages attr)
157 #:use-module (gnu packages backup)
158 #:use-module (gnu packages bash)
159 #:use-module (gnu packages check)
160 #:use-module (gnu packages cmake)
161 #:use-module (gnu packages compression)
162 #:use-module (gnu packages crypto)
163 #:use-module (gnu packages databases)
164 #:use-module (gnu packages dbm)
165 #:use-module (gnu packages django)
166 #:use-module (gnu packages djvu)
167 #:use-module (gnu packages docker)
168 #:use-module (gnu packages documentation)
169 #:use-module (gnu packages enchant)
170 #:use-module (gnu packages file)
171 #:use-module (gnu packages fontutils)
172 #:use-module (gnu packages fonts)
173 #:use-module (gnu packages freedesktop)
174 #:use-module (gnu packages gdb)
175 #:use-module (gnu packages gcc)
176 #:use-module (gnu packages geo)
177 #:use-module (gnu packages ghostscript)
178 #:use-module (gnu packages gl)
179 #:use-module (gnu packages glib)
180 #:use-module (gnu packages gnome)
181 #:use-module (gnu packages gnupg)
182 #:use-module (gnu packages graphviz)
183 #:use-module (gnu packages graphics)
184 #:use-module (gnu packages gsasl)
185 #:use-module (gnu packages gstreamer)
186 #:use-module (gnu packages gtk)
187 #:use-module (gnu packages haskell-xyz)
188 #:use-module (gnu packages icu4c)
189 #:use-module (gnu packages inkscape)
190 #:use-module (gnu packages image)
191 #:use-module (gnu packages image-processing)
192 #:use-module (gnu packages imagemagick)
193 #:use-module (gnu packages jupyter)
194 #:use-module (gnu packages kerberos)
195 #:use-module (gnu packages libevent)
196 #:use-module (gnu packages libffi)
197 #:use-module (gnu packages libidn)
198 #:use-module (gnu packages libusb)
199 #:use-module (gnu packages linux)
200 #:use-module (gnu packages llvm)
201 #:use-module (gnu packages man)
202 #:use-module (gnu packages markup)
203 #:use-module (gnu packages maths)
204 #:use-module (gnu packages monitoring)
205 #:use-module (gnu packages multiprecision)
206 #:use-module (gnu packages networking)
207 #:use-module (gnu packages ncurses)
208 #:use-module (gnu packages node)
209 #:use-module (gnu packages ninja)
210 #:use-module (gnu packages openstack)
211 #:use-module (gnu packages pcre)
212 #:use-module (gnu packages pdf)
213 #:use-module (gnu packages perl)
214 #:use-module (gnu packages photo)
215 #:use-module (gnu packages pkg-config)
216 #:use-module (gnu packages protobuf)
217 #:use-module (gnu packages python)
218 #:use-module (gnu packages python-build)
219 #:use-module (gnu packages python-check)
220 #:use-module (gnu packages python-compression)
221 #:use-module (gnu packages python-crypto)
222 #:use-module (gnu packages python-science)
223 #:use-module (gnu packages python-web)
224 #:use-module (gnu packages qt)
225 #:use-module (gnu packages rdf)
226 #:use-module (gnu packages readline)
227 #:use-module (gnu packages regex)
228 #:use-module (gnu packages sdl)
229 #:use-module (gnu packages scanner)
230 #:use-module (gnu packages search)
231 #:use-module (gnu packages serialization)
232 #:use-module (gnu packages shells)
233 #:use-module (gnu packages sphinx)
234 #:use-module (gnu packages ssh)
235 #:use-module (gnu packages swig)
236 #:use-module (gnu packages terminals)
237 #:use-module (gnu packages tex)
238 #:use-module (gnu packages texinfo)
239 #:use-module (gnu packages textutils)
240 #:use-module (gnu packages time)
241 #:use-module (gnu packages tls)
242 #:use-module (gnu packages version-control)
243 #:use-module (gnu packages video)
244 #:use-module (gnu packages web)
245 #:use-module (gnu packages wxwidgets)
246 #:use-module (gnu packages base)
247 #:use-module (gnu packages xml)
248 #:use-module (gnu packages xorg)
249 #:use-module (gnu packages xdisorg)
250 #:use-module (gnu packages tcl)
251 #:use-module (gnu packages bdw-gc)
252 #:use-module (gnu packages serialization)
253 #:use-module (guix packages)
254 #:use-module (guix download)
255 #:use-module (guix gexp)
256 #:use-module (guix git-download)
257 #:use-module (guix hg-download)
258 #:use-module (guix gexp)
259 #:use-module (guix utils)
260 #:use-module (guix build-system gnu)
261 #:use-module (guix build-system cmake)
262 #:use-module (guix build-system pyproject)
263 #:use-module (guix build-system python)
264 #:use-module (guix build-system trivial)
265 #:use-module (srfi srfi-1)
266 #:use-module (srfi srfi-26))
268 (define-public python-xmldiff
270 (name "python-xmldiff")
275 (uri (pypi-uri "xmldiff" version))
277 (base32 "0qygxi3z1jwb0471k7bh5gcqf7wqm4xhrkmwhf36gjgjw46a5gh5"))))
278 (build-system python-build-system)
279 (propagated-inputs (list python-lxml python-six))
280 (home-page "https://github.com/Shoobx/xmldiff")
281 (synopsis "Creates diffs of XML files")
282 (description "This Python tool figures out the differences between two
283 similar XML files, in the same way the @command{diff} utility does it.")
284 (license license:expat)))
286 (define-public python-janus
288 (name "python-janus")
293 (uri (pypi-uri "janus" version))
295 (base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7"))))
296 (build-system python-build-system)
299 (modify-phases %standard-phases
301 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
303 (add-installed-pythonpath inputs outputs)
304 (invoke "pytest" "--cov=janus" "--cov=tests")))))))
306 (list python-pytest python-pytest-cov python-pytest-asyncio))
307 (home-page "https://github.com/aio-libs/janus/")
309 "Sync-async queue to interoperate between asyncio tasks and classic threads")
311 "Mixed sync-async queue, supposed to be used for communicating between
312 classic synchronous (threaded) code and asynchronous (in terms of
313 @url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like
314 @url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the
315 library has two faces: synchronous and asynchronous interface. Synchronous is
316 fully compatible with
317 @url{https://docs.python.org/3/library/queue.html,standard queue},
318 asynchronous one follows
319 @url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue
321 (license license:asl2.0)))
323 (define-public python-jupytext
325 (name "python-jupytext")
331 (url "https://github.com/mwouts/jupytext")
332 (commit (string-append "v" version))))
333 (file-name (git-file-name name version))
335 (base32 "0gqpvphrp2ja9ggadx0rrk0sqbpz6kqqg62qqmw4k17469lphc8c"))))
336 (build-system python-build-system)
340 #~(modify-phases %standard-phases
342 (lambda* (#:key tests? #:allow-other-keys)
343 ;; some tests fail when HOME=/homeless-shelter.
344 (setenv "HOME" "/tmp")
345 ;; OSError: [Errno 18] Invalid cross-device link
346 (setenv "TMPDIR" "/tmp")
348 (let ((disabled-tests
349 (list "test_create_header_with_set_formats"
350 "test_pre_commit_hook"
351 "test_sync_with_pre_commit_hook")))
352 (invoke "pytest" "-vv" "-k"
353 (string-append "not "
354 (string-join disabled-tests
355 " and not "))))))))))
363 python-ipython-genutils
364 python-jupyter-server
369 (list python-markdown-it-py
370 python-mdit-py-plugins
372 (home-page "https://github.com/mwouts/jupytext")
374 "Jupyter notebooks as Markdown documents, Julia, Python or R scripts")
376 "Jupytext is a plugin for Jupyter that can save Jupyter notebooks as
377 either Markdown files or scripts in many languages. Common use cases for
381 @item version control on Jupyter Notebooks
382 @item editing, merging or refactoring notebooks in your favorite text editor
383 @item applying Q&A checks on notebooks.
386 (license license:expat)))
388 (define-public python-logzero
390 (name "python-logzero")
395 (uri (pypi-uri "logzero" version))
397 (base32 "10nh186vk6hpnpfycym44gja4fja0jyzw7q8dwimfd1rmv9xswvz"))))
398 (build-system python-build-system)
400 (list python-pytest python-pytest-runner))
403 (modify-phases %standard-phases
405 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
407 (add-installed-pythonpath inputs outputs)
408 (invoke "pytest")))))))
409 (home-page "https://github.com/metachris/logzero")
410 (synopsis "Robust and effective logging for Python")
412 "@code{logzero} provides a fully configured Python logger object for
413 easy logging and rotating to a console or a file.")
414 (license license:expat)))
416 (define-public python-logbook
418 (name "python-logbook")
423 (uri (pypi-uri "Logbook" version))
425 (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36"))))
426 (build-system python-build-system)
429 (modify-phases %standard-phases
430 (add-before 'build 'cythonize-sources
432 (with-directory-excursion "logbook"
433 (invoke "cython" "_speedups.pyx"))))
435 (lambda* (#:key tests? #:allow-other-keys)
437 ;; Check cython build also
438 (setenv "CYBUILD" "True")
439 (invoke "pytest" "--cov=logbook" "-r" "s" "tests")))))))
441 (list python-cython python-mock python-pytest python-pytest-cov
442 python-google-brotli))
443 (home-page "https://github.com/getlogbook/logbook")
444 (synopsis "Logbook is a logging replacement for Python")
446 "Logbook is a logging system for Python that replaces the standard
447 library’s logging module. It was designed with both complex and simple
448 applications in mind and the idea to make logging fun.")
449 (license license:bsd-3)))
451 (define-public python-ubelt
453 (name "python-ubelt")
459 (url "https://github.com/Erotemic/ubelt")
460 (commit (string-append "v" version))))
461 (file-name (git-file-name name version))
464 "0hac9nqqvqfbca2s4g0mp1fnj0ah60bg9fb8234ibna3jww8qs33"))))
465 (build-system python-build-system)
468 #~(modify-phases %standard-phases
470 (lambda* (#:key tests? #:allow-other-keys)
472 (setenv "HOME" "/tmp") ;else the test suite hangs
473 (invoke "pytest" "-vv" "-k"
475 ;; The builder user home doesn't match HOME,
476 ;; which causes this test to fail.
478 ;; This one pointlessly tries
479 ;; locating various binaries on
481 "and not find_exe"))))))))
482 (propagated-inputs (list python-ordered-set))
487 (home-page "https://github.com/Erotemic/ubelt")
488 (synopsis "Python library for hashing, caching, timing and more")
489 (description "Ubelt is a small library of simple functions that extend the
490 Python standard library. It includes an @acronym{API, Application Programming
491 Interface} to simplify common problems such as caching, timing, computing
492 progress, among other things.")
493 (license license:asl2.0)))
495 (define-public python-ueberzug
497 (name "python-ueberzug")
502 (uri (pypi-uri "ueberzug" version))
505 "1hxd45dnwa9yv908acarr98n2drmar66wzq9z2qd3irj24srzr3w"))))
506 (build-system python-build-system)
508 (list libx11 libxext))
510 (list python-attrs python-docopt python-pillow python-xlib))
511 (home-page "https://github.com/seebye/ueberzug")
512 (synopsis "Command line util to display images in combination with X11")
513 (description "Überzug is a command line util which draws images on
514 terminals by using child windows. The advantages of using Überzug are:
516 @item No race conditions as a new window is created to display images.
517 @item Expose events will be processed, so images will be redrawn on switch
519 @item Tmux support (excluding multi pane windows).
520 @item Terminals without the WINDOWID environment variable are supported.
521 @item Chars are used as position - and size unit.
522 @item No memory leak (/ unlimited cache).
524 (license license:gpl3+)))
526 (define-public python-fire
533 (uri (pypi-uri "fire" version))
536 "0qka44n88y3qcj7xz0k0f3qb4phcg4z0wvd4jcii9lcr6rvbiqn5"))))
537 (build-system python-build-system)
539 (list python-pytest))
542 (modify-phases %standard-phases
544 (lambda* (#:key tests? #:allow-other-keys)
546 (invoke "pytest")))))))
548 (list python-six python-termcolor))
549 (synopsis "Library for automatically generating command line interfaces")
551 "Fire is a library for automatically generating command line interfaces
552 from absolutely any Python object. The following are the advantages:
554 @item A simple way to create a CLI in Python.
555 @item A helpful tool for developing and debugging Python code.
556 @item Helps with exploring existing code or turning other people's code into a
557 command line interface.
558 @item Makes transitioning between Bash and Python easier.
559 @item Makes using a Python REPL easier by setting up the REPL with the modules
560 and variables you'll need already imported and created.
562 (home-page "https://github.com/google/python-fire")
563 (license license:asl2.0)))
565 (define-public python-dotmap
567 (name "python-dotmap")
571 (uri (pypi-uri "dotmap" version))
574 "0s5kb2v7jd0narz6m6jcicak3h5pw290wz21cdsv8pq77y9sf8aq"))))
575 (build-system python-build-system)
576 (home-page "https://github.com/drgrib/dotmap")
577 (synopsis "Ordered, dynamically-expandable dot-access dictionary")
579 "DotMap is a dot-access dictionary subclass that has dynamic
580 hierarchy creation, can be initialized with keys, can be initialized from a
581 dictionary, can be convert to a dictionary, and is ordered by insertion.")
582 (license license:expat)))
584 (define-public python-twodict
586 (name "python-twodict")
591 (uri (pypi-uri "twodict" version))
593 (base32 "0ifv7dv18jn2lg0a3l6zdlvmmlda2ivixfjbsda58a2ay6kxznr0"))))
594 (build-system python-build-system)
595 (home-page "https://github.com/MrS0m30n3/twodict")
596 (synopsis "Two way ordered dictionary for Python")
597 (description "TwoDict is a custom dictionary in which you can get the
598 key:value relationship but you can also get the value:key relationship. It also
599 remembers the order in which the items were inserted and supports almost all the
600 features of the Python's built-in dict.")
601 (license license:unlicense)))
603 (define-public python-argopt
605 (name "python-argopt")
609 (uri (pypi-uri "argopt" version))
612 "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa"))))
613 (build-system python-build-system)
615 (list python-coverage python-nose python-setuptools ; Won't build without this.
616 python-setuptools-scm))
618 (list python-toml python-flake8))
619 (home-page "https://github.com/casperdcl/argopt")
620 (synopsis "Generate a command-line interface from a docstring")
621 (description "This package provides tools to define a command line interface
622 from a docstring rather than the other way around.")
623 (license license:mpl2.0)))
625 (define-public python-cachetools
627 (name "python-cachetools")
631 (uri (pypi-uri "cachetools" version))
634 "1zqc098gk6y614lxwqd9z2gm8lldgvrpid133pnlm4m048gfvdb1"))))
635 (build-system python-build-system)
636 (home-page "https://github.com/tkem/cachetools/")
637 (synopsis "Extensible memoizing collections and decorators")
638 (description "This module provides various memoizing collections and
639 decorators, including variants of the Python standard library's
640 @code{lru_cache} function decorator.")
641 (license license:expat)))
643 (define-public python-cobib
645 (name "python-cobib")
649 (uri (pypi-uri "cobib" version))
650 (file-name (string-append name "-" version ".tar.gz"))
653 "16nbrbvascbf6cb7yvn9q793dy8zx703pqrmk3mswib9a19mnx3n"))))
654 (build-system python-build-system)
656 (list python-beautifulsoup4
660 python-requests-oauthlib
666 (home-page "https://gitlab.com/mrossinek/cobib")
667 (synopsis "Terminal-based bibliography management tool")
669 "@command{cobib} is a command-line based bibliography management tool.
670 It uses a plain-text database, a location-independent library, and features
671 git integration, command-line support, and a curses-based TUI.")
672 (license license:expat)))
674 (define-public python-colorful
676 (name "python-colorful")
682 (pypi-uri "colorful" version))
684 (base32 "1sh7g2cn1fyz2hzmzs933razdxi2bna9i1lxa790r9pdwba8m146"))))
685 (build-system python-build-system)
686 ;; FIXME: tests cannot be computed:
687 ;; "Can't perform this operation for unregistered loader type"
691 (list python-coverage python-flake8 python-pytest))
693 (list python-colorama))
694 (home-page "http://github.com/timofurrer/colorful")
695 (synopsis "Terminal string styling")
696 (description "Colorful provides an array of text styles, that can be used
697 as functions or string constants to form colored terminal output.")
698 (license license:expat)))
700 (define-public python-yaspin
702 (name "python-yaspin")
708 (pypi-uri "yaspin" version))
710 (base32 "1iirah0kydrdp505qnjj6gi54avcr7z0hbkfx9vmh8myr30rpz6q"))))
711 (build-system python-build-system)
713 (list python-pytest))
714 (home-page "https://github.com/pavdmyt/yaspin")
715 (synopsis "Yet Another Terminal Spinner")
716 (description "Yaspin provides a terminal spinner to indicate the progress
717 during long operations.")
718 (license license:expat)))
720 (define-public python-lunr
728 (pypi-uri "lunr" version))
730 (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc"))))
731 (build-system python-build-system)
733 (list python-mock python-pytest))
735 (list python-nltk-3.4))
737 "https://github.com/yeraydiazdiaz/lunr.py")
738 (synopsis "Full-text search library")
739 (description "This package provides python library for full-text search.
740 It indexes documents and provides a search interface for retrieving documents
741 that best match text queries.")
742 (license license:expat)))
744 (define-public python-mdit-py-plugins
746 (name "python-mdit-py-plugins")
751 (uri (pypi-uri "mdit-py-plugins" version))
754 "0l4pwsn2q30j160zjg79qa8v2brc4zl295rgrkpbfspcxr8lzhpc"))))
755 (build-system python-build-system)
756 (propagated-inputs (list python-markdown-it-py))
758 (list python-coverage
761 python-pytest-regressions))
762 (home-page "https://github.com/executablebooks/mdit-py-plugins")
763 (synopsis "Collection of plugins for markdown-it-py")
765 "This package contains a collection of plugins for @code{markdown-it-py}
772 @item definition list,
780 (license license:expat)))
782 (define-public python-mdurl
784 (name "python-mdurl")
788 (uri (pypi-uri "mdurl" version))
791 "1fn1hy35h9grggwqax90zcb52inlfxrxsm27vlqqz8zfyllkshdv"))))
792 (build-system python-build-system)
795 #:tests? #f ;pypi source does not contain tests
797 #~(modify-phases %standard-phases
799 (lambda _ (invoke "flit" "build")))
804 (invoke "python" "-m" "pip" "install"
805 wheel (string-append "--prefix=" #$output)))
806 (find-files "dist" "\\.whl$")))))))
807 (native-inputs (list python-flit))
808 (home-page "https://github.com/executablebooks/mdurl")
809 (synopsis "Markdown URL utilities")
811 "This package implements a Python port of the JavaScript @code{mdurl}.")
812 (license license:expat)))
814 (define-public python-mrkd
821 (uri (pypi-uri "mrkd" version))
823 (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5"))))
824 (build-system python-build-system)
826 (list python-jinja2 python-mistune python-pygments))
827 (home-page "https://pypi.org/project/mrkd/")
828 (synopsis "Python Markdown implementation")
830 "@code{mrkd} writes man pages using Markdown, and convert them to Roff or
832 (license license:bsd-3)))
834 (define-public python-mkdocs
836 (name "python-mkdocs")
840 ;; The tests suite appears to be incomplete in the PyPI archive.
843 (url "https://github.com/mkdocs/mkdocs")
845 (file-name (git-file-name name version))
848 "1n5rdllrxvhnxmdrddf55p3s86dakx0rq2gg6bj6pr6jg2pn932b"))))
849 (build-system python-build-system)
852 (modify-phases %standard-phases
853 ;; Requirements refer to a specific version of dependencies,
854 ;; which are too old. So we patch to refer to any later version.
855 (add-after 'unpack 'patch-requirements
857 (substitute* "setup.py"
860 (lambda* (#:key tests? #:allow-other-keys)
862 (invoke "python" "-m" "unittest"
863 "discover" "-p" "*tests.py" "mkdocs"
864 "--top-level-directory" ".")))))))
869 python-importlib-metadata
877 python-pyyaml-env-tag
879 (home-page "https://www.mkdocs.org")
880 (synopsis "Project documentation with Markdown")
881 (description "MkDocs is a static site generator geared towards building
882 project documentation. Documentation source files are written in Markdown, and
883 configured with a single YAML configuration file.")
884 (license license:bsd-3)))
886 (define-public python-mkdocs-markdownextradata-plugin
888 (name "python-mkdocs-markdownextradata-plugin")
891 ;; Use git, as there are some test files missing from the PyPI release,
892 ;; see https://github.com/rosscdh/mkdocs-markdownextradata-plugin/issues/41.
895 (url "https://github.com/rosscdh/mkdocs-markdownextradata-plugin")
897 (file-name (git-file-name name version))
900 "1a3868s9m7pzyfncpjbjsa9vw5nihssl2v47pxj7h6qa67kvlk3g"))))
901 (build-system python-build-system)
902 (native-inputs (list python-pytest))
903 (propagated-inputs (list python-mkdocs python-pyyaml))
904 (home-page "https://github.com/rosscdh/mkdocs-markdownextradata-plugin/")
905 (synopsis "Inject mkdocs.yml extra variables into the MkDocs markdown
908 "This package provides a MkDocs plugin that injects the mkdocs.yml extra
909 variables into the markdown template")
910 (license license:expat)))
912 (define-public python-pymdown-extensions
914 (name "python-pymdown-extensions")
920 (pypi-uri "pymdown-extensions" version))
922 (base32 "0d8pdndrl1kj105lq7r6kw2dnhcvll6h2qs07w71mcpi7gx728v3"))))
923 (build-system python-build-system)
924 ;; FIXME: "AssertionError: False is not true"
928 (list python-markdown))
929 (home-page "https://github.com/facelessuser/pymdown-extensions")
930 (synopsis "Extension pack for Python Markdown")
931 (description "PyMdown Extensions is a collection of extensions for Python
932 Markdown. All extensions are found under the module namespace of pymdownx.")
933 (license license:expat)))
935 (define-public python-plotille
937 (name "python-plotille")
941 (uri (pypi-uri "plotille" version))
944 "0fvsk6glxfphhqy405h05rj3v95jd1byl5hv2fyd5l31wln23shj"))))
945 (build-system python-build-system)
946 (native-inputs (list python-six))
947 (home-page "https://github.com/tammoippen/plotille")
948 (synopsis "Plot in the terminal using braille dots")
950 "Plotille provides a figure class and graphing functions to create plots,
951 scatter plots, histograms and heatmaps in the terminal using braille dots.")
952 (license license:expat)))
954 (define-public python-mdx-gh-links
956 (name "python-mdx-gh-links")
961 (uri (pypi-uri "mdx_gh_links" version))
963 (base32 "167k1jbp3jifxbnlpi6wy0z1skam7gqv2sixb5bhggb2vypqvysr"))))
964 (build-system python-build-system)
965 (arguments (list #:tests? #f)) ;tests connect github
966 (propagated-inputs (list python-markdown))
967 (home-page "https://github.com/Python-Markdown/github-links/")
968 (synopsis "Python-Markdown extension adding support for shorthand links")
969 (description "This package is an extension to Python-Markdown which adds
970 support for shorthand links to GitHub users, repositories, issues and
972 (license license:bsd-3)))
974 (define-public python-mkdocs-material
976 (name "python-mkdocs-material")
982 (pypi-uri "mkdocs-material" version))
984 (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3"))))
985 (build-system python-build-system)
988 (modify-phases %standard-phases
989 ;; Requirement mkdocs-material-extensions
990 ;; in-turn requires mkdocs-material. This causes
991 ;; circular dependency, so we remove this requirement.
992 (add-after 'unpack 'patch-requirements
994 (substitute* "requirements.txt"
995 (("mkdocs-material-extensions.*$") "")))))))
997 (list python-markdown python-mkdocs python-pygments
998 python-pymdown-extensions))
999 (home-page "https://squidfunk.github.io/mkdocs-material/")
1000 (synopsis "Material Design theme for MkDocs")
1001 (description "This package provides a theme plugin for the static site
1003 (license license:expat)))
1005 (define-public python-slixmpp
1007 (name "python-slixmpp")
1014 (url "https://lab.louiz.org/poezio/slixmpp.git")
1016 (string-append "slix-" version))))
1018 (git-file-name name version))
1020 (base32 "15mqxcws14bjvh5jcfwl86zsvrymkdw3ya07vb44md7vfnsnclwx"))))
1021 (build-system python-build-system)
1024 (modify-phases %standard-phases
1025 (add-after 'unpack 'patch
1027 (substitute* "setup.py"
1032 `(("cython" ,python-cython)
1034 ("pkg-config" ,pkg-config)))
1036 (list python-aiodns python-aiohttp python-pyasn1
1037 python-pyasn1-modules))
1039 (list libidn python)) ; We are building a Python extension.
1040 (synopsis "XMPP library without threads")
1041 (description "Slixmpp is a XMPP library for Python 3.7+. It is a fork of
1042 SleekXMPP. Its goal is to only rewrite the core of the library (the low level
1043 socket handling, the timers, the events dispatching) in order to remove all
1045 (home-page "https://lab.louiz.org/poezio/slixmpp")
1046 (license license:expat)))
1048 (define-public python-tenacity
1050 (name "python-tenacity")
1054 (uri (pypi-uri "tenacity" version))
1057 "0bwkvjpjfyi9dgszzad9aww2vc00w3bczjnbifi92cp7wch2l923"))))
1058 (build-system python-build-system)
1060 (list python-setuptools-scm python-tornado python-typeguard
1064 #~(modify-phases %standard-phases
1066 (lambda _ (invoke "pytest" "-vv"))))))
1067 (home-page "https://github.com/jd/tenacity")
1068 (synopsis "Retrying library for python")
1069 (description "Tenacity is a general-purpose python library to simplify the
1070 task of adding retry behavior to just about anything.")
1071 (license license:asl2.0)))
1073 (define-public python-pytelegrambotapi
1075 (name "python-pytelegrambotapi")
1081 (url "https://github.com/eternnoir/pyTelegramBotAPI")
1083 (file-name (git-file-name name version))
1085 (base32 "0r7g5zs0fk3g2dxvbpl0pi730x7r2kalrhn30fs0pvc15a59fmxz"))))
1086 (build-system python-build-system)
1089 (modify-phases %standard-phases
1091 (lambda* (#:key tests? #:allow-other-keys)
1093 (with-directory-excursion "tests"
1094 (invoke "py.test")))
1097 (list python-requests))
1099 (list python-pytest))
1100 (home-page "https://github.com/eternnoir/pyTelegramBotAPI")
1101 (synopsis "Python Telegram bot api")
1102 (description "This package provides a simple, but extensible Python
1103 implementation for the Telegram Bot API.")
1104 (license license:gpl2)))
1106 (define-public python-colorlog
1108 (name "python-colorlog")
1113 (uri (pypi-uri "colorlog" version))
1115 (base32 "1s7x0v872h8aks8xp01wmv6hzisxqjrh1svbbcycir0980h76krl"))))
1116 (build-system python-build-system)
1119 (modify-phases %standard-phases
1121 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
1123 (add-installed-pythonpath inputs outputs)
1124 (invoke "python" "-m" "pytest")))))))
1126 (list python-pytest))
1127 (home-page "https://github.com/borntyping/python-colorlog")
1128 (synopsis "Log formatting with colors for python")
1129 (description "The @code{colorlog.ColoredFormatter} is a formatter for use
1130 with Python's logging module that outputs records using terminal colors.")
1131 (license license:expat)))
1133 (define-public python-pyprind
1135 (name "python-pyprind")
1139 (uri (pypi-uri "PyPrind" version))
1142 "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3"))))
1143 (build-system python-build-system)
1145 (list python-psutil))
1146 (home-page "https://github.com/rasbt/pyprind")
1147 (synopsis "Python Progress Bar and Percent Indicator Utility")
1148 (description "The PyPrind (Python Progress Indicator) module provides a
1149 progress bar and a percentage indicator object that let you track the progress
1150 of a loop structure or other iterative computation.")
1151 (license license:bsd-3)))
1153 (define-public python-glymur
1155 (name "python-glymur")
1159 (method git-fetch) ; no tests data in PyPi package
1161 (url "https://github.com/quintusdias/glymur")
1162 (commit (string-append "v" version))))
1163 (file-name (git-file-name name version))
1165 (base32 "1cq9r8vzwvds1kasy5gc2rxw034jh9l43rraps1n739072pfz6qg"))))
1166 (build-system python-build-system)
1170 #~(modify-phases %standard-phases
1171 (add-after 'unpack 'patch-library-locations
1172 (lambda* (#:key inputs #:allow-other-keys)
1173 ;; XXX: It's a workaround for Python inability to find the
1174 ;; .so libraries with ctypes.util.find_library()
1175 (substitute* '("glymur/config.py")
1176 (("path = find_library\\(libname\\)")
1178 "if libname == \"openjp2\":\n"
1180 (search-input-file inputs "/lib/libopenjp2.so") "\"\n"
1181 " elif libname == \"tiff\":\n"
1183 (search-input-file inputs "/lib/libtiff.so") "\"\n"
1184 " elif libname == \"c\":\n"
1186 (search-input-file inputs "/lib/libc.so.6") "\"\n")))))
1187 ;; TODO: implement as a feature of python-build-system (PEP-621,
1188 ;; PEP-631, PEP-660)
1191 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
1192 ;; ZIP does not support timestamps before 1980.
1193 (setenv "SOURCE_DATE_EPOCH" "315532800")
1194 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
1196 (lambda* (#:key outputs #:allow-other-keys)
1197 (let ((whl (car (find-files "dist" "\\.whl$"))))
1198 (invoke "pip" "--no-cache-dir" "--no-input"
1199 "install" "--no-deps" "--prefix" #$output whl))))
1201 (lambda* (#:key tests? #:allow-other-keys)
1203 ;; Failing test due to inability of
1204 ;; ctypes.util.find_library() to determine library path,
1205 ;; which is patched above.
1206 (delete-file "tests/test_config.py")
1207 (invoke "python" "-m" "pytest" "-vv" "tests")))))))
1209 (list python-pypa-build python-pytest))
1211 (list openjpeg ; glymur/lib/openjp2.py
1212 libtiff)) ; glymur/lib/tiff.py
1217 (home-page "https://github.com/quintusdias/glymur")
1218 (synopsis "Python interface to OpenJPEG and LibTIFF")
1220 "This package provides Python interface to the OpenJPEG library which
1221 allows one to read and write JPEG 2000 files")
1222 (license license:expat)))
1224 (define-public python-gphoto2
1226 (name "python-gphoto2")
1230 (uri (pypi-uri "gphoto2" version))
1233 "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r"))))
1234 (build-system python-build-system)
1239 (home-page "https://github.com/jim-easterbrook/python-gphoto2")
1240 (synopsis "Python interface to libgphoto2")
1241 (description "@code{python-gphoto2} is a comprehensive Python interface
1242 (or binding) to @code{libgphoto2}. It is built using @code{SWIG} to
1243 automatically generate the interface code.")
1244 (license license:gpl3+)))
1246 (define-public python-colour
1248 (name "python-colour")
1252 (uri (pypi-uri "colour" version))
1255 "1visbisfini5j14bdzgs95yssw6sm4pfzyq1n3lfvbyjxw7i485g"))))
1256 (build-system python-build-system)
1258 (list python-d2to1))
1259 (home-page "https://github.com/vaab/colour")
1260 (synopsis "Convert and manipulate various color representations")
1261 (description "Pythonic way to manipulate color representations (HSL, RVB,
1263 (license license:expat)))
1265 (define-public python-d2to1
1267 (name "python-d2to1")
1268 (version "0.2.12.post1")
1271 (uri (pypi-uri "d2to1" version))
1274 "09fq7pq1z8d006xh5z75rm2lk61v6yn2xhy53z4gsgibhqb2vvs9"))))
1275 (build-system python-build-system)
1278 (home-page "https://github.com/embray/d2to1")
1279 (synopsis "Allows for distutils2-like setup.cfg files as package metadata
1281 (description "The python package d2to1 (the d is for distutils) allows
1282 using distutils2-like setup.cfg files for a package's metadata with a
1283 distribute/setuptools setup.py script.")
1284 (license license:bsd-2)))
1286 (define-public python-rawkit
1288 (name "python-rawkit")
1292 (uri (pypi-uri "rawkit" version))
1295 "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s"))))
1296 (build-system python-build-system)
1298 (list python-pytest python-mock))
1301 (home-page "https://rawkit.readthedocs.io")
1302 (synopsis "Ctypes-based LibRaw binding for Python")
1303 (description "The rawkit package provides two modules: rawkit and libraw.
1304 The rawkit module provides a high-level Pythonic interface for developing raw
1305 photos, while the libraw module provides a CTypes based interface for
1306 interacting with the low-level LibRaw C APIs.")
1307 (license license:expat)))
1309 (define-public python-easygui
1311 (name "python-easygui")
1315 (uri (pypi-uri "easygui" version))
1318 "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v"))))
1319 (build-system python-build-system)
1321 (list `(,python "tk")))
1322 (home-page "https://github.com/robertlugg/easygui")
1323 (synopsis "GUI programming module for Python")
1324 (description "EasyGUI is a module for very simple, very easy GUI
1325 programming in Python. EasyGUI is different from other GUI generators in that
1326 EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by
1327 simple function calls.")
1328 (license license:bsd-3)))
1330 (define-public python-pymd4c
1332 (name "python-pymd4c")
1333 (version "0.4.6.0b1")
1337 (uri (pypi-uri "pymd4c" version))
1339 (base32 "07s3arn85ri92im6x3ipljdmrxmpik7irs06i6lm17j1x6j9841d"))))
1340 (build-system python-build-system)
1344 (list python-flake8 python-pkgconfig pkg-config))
1345 (home-page "https://github.com/dominickpastore/pymd4c")
1346 (synopsis "Python bindings for MD4C")
1348 "PyMD4C provides Python bindings for MD4c, a C Markdown parser, compliant
1350 (license license:expat)))
1352 (define-public python-pymediainfo
1354 (name "python-pymediainfo")
1359 (uri (pypi-uri "pymediainfo" version))
1362 "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd"))))
1363 (build-system python-build-system)
1365 (list python-setuptools-scm python-pytest))
1367 (list libmediainfo))
1370 (modify-phases %standard-phases
1371 (add-after 'unpack 'patch-libmediainfo
1373 (substitute* "pymediainfo/__init__.py"
1374 (("libmediainfo.so.0")
1375 (search-input-file %build-inputs
1376 "/lib/libmediainfo.so.0")))))
1378 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
1380 (add-installed-pythonpath inputs outputs)
1381 ;; Skip the only failing test "test_parse_url" because it tries
1382 ;; to access the internet.
1383 (invoke "pytest" "-vv" "-k" "not test_parse_url")))))))
1385 "https://github.com/sbraz/pymediainfo")
1387 "Python wrapper for the mediainfo library")
1389 "This package provides a Python wrapper for the mediainfo library to
1390 access the technical and tag data for video and audio files.")
1391 (license license:expat)))
1393 (define-public python-psutil
1395 (name "python-psutil")
1400 (uri (pypi-uri "psutil" version))
1402 (base32 "0p1bf6ndcssqh0ic828ggwhzhm67mzj3ffq6043v0fvc1fhn3f7y"))))
1403 (build-system python-build-system)
1405 ;; FIXME: some tests do not return and time out. Some tests fail because
1406 ;; some processes survive kill().
1408 (home-page "https://github.com/giampaolo/psutil")
1409 (synopsis "Library for retrieving information on running processes")
1411 "@code{psutil} (Python system and process utilities) is a library for
1412 retrieving information on running processes and system utilization (CPU,
1413 memory, disks, network) in Python. It is useful mainly for system monitoring,
1414 profiling and limiting process resources and management of running processes.
1415 It implements many functionalities offered by command line tools such as: ps,
1416 top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat,
1417 iotop, uptime, pidof, tty, taskset, pmap.")
1418 (license license:bsd-3)))
1420 (define-public python-shapely
1422 (name "python-shapely")
1427 (uri (pypi-uri "Shapely" version))
1429 (base32 "130rqd0czi128wm5pdn47v4m6czxd7pkzanbya8q48gsm8ffb5d1"))))
1430 (build-system python-build-system)
1432 (list python-cython python-matplotlib python-pytest
1437 (list python-numpy))
1440 (modify-phases %standard-phases
1441 (add-after 'unpack 'patch-geos-path
1442 (lambda* (#:key inputs #:allow-other-keys)
1443 (let ((geos (assoc-ref inputs "geos"))
1444 (glibc (assoc-ref inputs ,(if (%current-target-system)
1445 "cross-libc" "libc"))))
1446 (substitute* '("shapely/geos.py" "shapely/_buildcfg.py")
1447 (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
1448 (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
1449 geos "/lib/libgeos_c.so'])"))
1450 (("free = load_dll\\('c'\\)\\.free")
1451 (string-append "free = load_dll('c', fallbacks=['"
1452 glibc "/lib/libc.so.6']).free"))
1453 (("free = load_dll\\('c', fallbacks=.*\\)\\.free")
1454 (string-append "free = load_dll('c', fallbacks=['"
1455 glibc "/lib/libc.so.6']).free"))))
1457 (home-page "https://github.com/Toblerity/Shapely")
1458 (synopsis "Library for the manipulation and analysis of geometric objects")
1459 (description "Shapely is a Python package for manipulation and analysis of
1460 planar geometric objects. It is based on the @code{GEOS} library.")
1461 (license license:bsd-3)))
1463 (define-public python-shortuuid
1465 (name "python-shortuuid")
1470 (uri (pypi-uri "shortuuid" version))
1473 "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh"))))
1474 (build-system python-build-system)
1477 (home-page "https://github.com/skorokithakis/shortuuid")
1478 (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs")
1480 "@code{shortuuid} is a Python library for generating concise, unambiguous
1481 and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid}
1482 module and then similar looking characters are removed.")
1483 (license license:bsd-3)))
1485 (define-public python-logwrap
1487 (name "python-logwrap")
1488 (version "8.2.0.post0")
1492 (uri (pypi-uri "logwrap" version))
1495 "1dv7gny3rfci5cal2ipr6d0pcz3yhka7af96dfsd3ir1mxy8p1j9"))))
1496 (build-system python-build-system)
1498 `(#:tests? #f ; Tests not included in pypi release.
1500 (modify-phases %standard-phases
1502 (lambda* (#:key tests? #:allow-other-keys)
1507 (list python-cython python-pytest python-setuptools-scm python-toml
1509 (home-page "https://github.com/python-useful-helpers/logwrap")
1510 (synopsis "Decorator for logging function arguments")
1511 (description "This package provides a decorator to log function arguments
1512 and function call return values in a human-readable way.")
1513 (license license:asl2.0)))
1515 (define-public python-clyent
1517 (name "python-clyent")
1522 (uri (pypi-uri "clyent" version))
1525 "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj"))))
1526 (build-system python-build-system)
1529 (home-page "https://github.com/Anaconda-Platform/clyent")
1530 (synopsis "Command line client library")
1531 (description "Clyent is a Python command line utility library. It is used
1532 by @code{binstar}, @code{binstar-build}, and @code{chalmers}.")
1533 (license license:bsd-3)))
1535 (define-public python-babel
1537 (name "python-babel")
1542 (uri (pypi-uri "Babel" version))
1545 "0l9cvfmsz0hlvcinxaf6xf2f02ldgw3xq9i1fc7lk5zf24vma53n"))))
1546 (build-system python-build-system)
1548 (list python-freezegun python-pytest tzdata-for-tests))
1552 `(#:phases (modify-phases %standard-phases
1555 (invoke "pytest" "-vv"))))))
1556 (home-page "https://babel.pocoo.org/")
1558 "Tools for internationalizing Python applications")
1560 "Babel is composed of two major parts:
1561 - tools to build and work with gettext message catalogs
1562 - a Python interface to the CLDR (Common Locale Data Repository), providing
1563 access to various locale display names, localized number and date formatting,
1565 (license license:bsd-3)))
1567 (define-public python-bidict
1569 (name "python-bidict")
1574 (uri (pypi-uri "bidict" version))
1577 "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g"))))
1578 (build-system python-build-system)
1580 (list python-coverage
1585 python-pytest-benchmark
1587 python-setuptools-scm
1588 python-sortedcollections
1589 python-sortedcontainers
1591 python-sphinx-autodoc-typehints
1594 `(#:phases (modify-phases %standard-phases
1595 (add-after 'unpack 'relax-reqs
1597 (substitute* "setup.py"
1598 (("sortedcollections < 2") "sortedcollections"))
1601 (lambda _ (invoke "./run_tests.py"))))))
1602 (home-page "https://bidict.readthedocs.io")
1603 (synopsis "Bidirectional mapping library")
1604 (description "The @code{bidict} library provides several data structures
1605 for working with bidirectional mappings in Python.")
1606 (license license:mpl2.0)))
1608 (define-public python-bip39
1610 (name "python-bip39")
1615 (uri (pypi-uri "bip39" version))
1617 (base32 "18m7d3gi7vj2zi0bl1z7m0nhcj6i8j9vj4vil276siagnpkv64ry"))))
1618 (build-system python-build-system)
1619 (native-inputs (list python-pytest))
1620 (home-page "https://github.com/de-centralized-systems/python-bip39/")
1621 (synopsis "Self-contained and simple BIP39 implementation in Python")
1623 "This package provides a self-contained and simple BIP39
1624 implementation written in Python. It includes a @code{bip39.py} executable.
1626 BIP39 is a standardized mapping between binary data (the @emph{entropy}),
1627 and a list of words that are easier to remember for humans (the
1629 (license license:expat)))
1631 (define-public python-bitarray
1633 (name "python-bitarray")
1637 (uri (pypi-uri "bitarray" version))
1640 "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g"))))
1641 (build-system python-build-system)
1642 (home-page "https://github.com/ilanschnell/bitarray")
1643 (synopsis "Efficient arrays of booleans")
1644 (description "This package provides an object type which efficiently
1645 represents an array of booleans. Bitarrays are sequence types and behave very
1646 much like usual lists. Eight bits are represented by one byte in a contiguous
1647 block of memory. The user can select between two representations:
1648 little-endian and big-endian. All of the functionality is implemented in C.
1649 Methods for accessing the machine representation are provided. This can be
1650 useful when bit level access to binary files is required, such as portable
1651 bitmap image files. Also, when dealing with compressed data which uses
1652 variable bit length encoding, you may find this module useful.")
1653 (license license:psfl)))
1655 (define-public python-boolean.py
1657 (name "python-boolean.py")
1661 ;; There's no source tarball on PyPI.
1664 (url "https://github.com/bastikr/boolean.py")
1665 (commit (string-append "v" version))))
1666 (file-name (git-file-name name version))
1668 (base32 "1wc89y73va58cj7dsx6c199zpxsy9q53dsffsdj6zmc90inqz6qs"))))
1669 (build-system python-build-system)
1670 (home-page "https://github.com/bastikr/boolean.py")
1671 (synopsis "Boolean algebra in one Python module")
1673 "This is a small Python library that implements boolean algebra.
1674 It defines two base elements, @code{TRUE} and @code{FALSE}, and a
1675 @code{Symbol} class that can take on one of these two values. Calculations
1676 are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other
1677 compositions like @code{XOR} and @code{NAND} are emulated on top of them.
1678 Expressions are constructed from parsed strings or directly in Python.")
1679 (license license:bsd-2)))
1681 (define-public python-hdf4
1683 (name "python-hdf4")
1688 (uri (pypi-uri name version))
1691 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
1692 (build-system python-build-system)
1693 (native-inputs `(("nose" ,python-nose)))
1694 (propagated-inputs `(("numpy" ,python-numpy)))
1697 ("libjpeg" ,libjpeg-turbo)
1701 (modify-phases %standard-phases
1704 (invoke "./runexamples.sh")
1705 (invoke "nosetests" "-v"))))))
1706 (home-page "https://github.com/fhs/python-hdf4")
1707 (synopsis "Python interface to the NCSA HDF4 library")
1709 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
1710 which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
1711 NetCDF files can also be read and modified. Python-HDF4 is a fork of
1712 @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
1713 (license license:expat)))
1715 (define-public python-h5netcdf
1717 (name "python-h5netcdf")
1722 (uri (pypi-uri "h5netcdf" version))
1724 (base32 "1b2dcgf5rwy7pb7hr4prkc5vgcw9qc2was20dmnj90lbrpx08rvp"))))
1725 (build-system python-build-system)
1728 #~(modify-phases %standard-phases
1730 (lambda* (#:key tests? #:allow-other-keys)
1732 (invoke "pytest" "-vv" "h5netcdf/tests")))))))
1734 (list python-netcdf4
1736 python-setuptools-scm))
1738 (list python-h5py python-packaging))
1739 (home-page "https://h5netcdf.org")
1740 (synopsis "Python interface for the netCDF4 file-format based on h5py")
1741 (description "This package provides Python interface for the netCDF4
1742 file-format that reads and writes local or remote HDF5 files directly via h5py
1743 or h5pyd, without relying on the Unidata netCDF library")
1744 (license license:bsd-3)))
1746 (define-public python-h5py
1748 (name "python-h5py")
1753 (uri (pypi-uri "h5py" version))
1756 "0afv805vqrm5071g7alwv41920nhh8kjv4m5nbia9awj9a0x4ll7"))))
1757 (build-system python-build-system)
1759 `(#:tests? #f ; no test target
1761 (modify-phases %standard-phases
1762 (add-after 'unpack 'fix-hdf5-paths
1763 (lambda* (#:key inputs #:allow-other-keys)
1764 (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")))))))
1766 (list python-six python-numpy))
1770 (list python-cython python-pkgconfig pkg-config))
1771 (home-page "https://www.h5py.org/")
1772 (synopsis "Read and write HDF5 files from Python")
1774 "The h5py package provides both a high- and low-level interface to the
1775 HDF5 library from Python. The low-level interface is intended to be a
1776 complete wrapping of the HDF5 API, while the high-level component supports
1777 access to HDF5 files, datasets and groups using established Python and NumPy
1779 (license license:bsd-3)))
1781 (define-public python-hnswlib
1783 (name "python-hnswlib")
1788 (uri (pypi-uri "hnswlib" version))
1790 (base32 "0wf1cwmxmdzfqmfhrkqdxb5spf21ylgl2bidswhzjrqhwf35c9qf"))))
1791 (build-system python-build-system)
1794 (modify-phases %standard-phases
1795 (add-after 'unpack 'disable-native-optimization
1797 (substitute* "setup.py"
1798 ((", '-march=native'") "")))))))
1800 (list python-numpy))
1803 (home-page "https://github.com/nmslib/hnswlib")
1804 (synopsis "Fast approximate nearest neighbor search")
1805 (description "Hnswlib is a header-only C++ implementation of fast
1806 approximate nearest neighbor search with Python bindings.")
1807 (license license:asl2.0)))
1809 (define-public python-pylatexenc
1811 (name "python-pylatexenc")
1815 (uri (pypi-uri "pylatexenc" version))
1816 (file-name (string-append name "-" version ".tar.gz"))
1819 "1ls09z47b5md71gkxcj7fd87ynpvv2walgp2w6z31p26xf2gvn1x"))))
1820 (build-system python-build-system)
1821 (home-page "https://github.com/phfaist/pylatexenc")
1822 (synopsis "LaTeX parser for Unicode/LaTeX conversion")
1824 "@code{python-pylatexenc} is a LaTeX parser providing LaTeX-to-Unicode and
1825 Unicode-to-LaTeX conversion.")
1826 (license license:expat)))
1828 (define-public python-pyls-black
1830 (name "python-pyls-black")
1834 ;; There are no tests in the PyPI tarball.
1837 (url "https://github.com/rupert/pyls-black/")
1838 (commit (string-append "v" version))))
1839 (file-name (git-file-name name version))
1841 (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj"))
1842 ;; Patch to work with python-lsp-server. Taken from
1843 ;; <https://github.com/rupert/pyls-black/pull/37>.
1844 (modules '((guix build utils)))
1847 (substitute* "setup.cfg"
1848 (("python-language-server")
1849 "python-lsp-server"))
1850 (substitute* '("pyls_black/plugin.py" "tests/test_plugin.py")
1851 (("pyls_format_document")
1852 "pylsp_format_document")
1853 (("pyls_format_range")
1854 "pylsp_format_range")
1855 (("from pyls([ \\.])" _ char)
1856 (string-append "from pylsp" char)))))))
1857 (build-system python-build-system)
1859 `(#:test-target "pytest"))
1861 (list python-black python-lsp-server python-tomli))
1863 (list python-flake8 python-isort python-mypy python-pytest
1864 python-pytest-runner))
1865 (home-page "https://github.com/rupert/pyls-black")
1866 (synopsis "Black plugin for the Python Language Server")
1867 (description "Black plugin for the Python Language Server.")
1868 (license license:expat)))
1870 (define-public python-sh
1877 (uri (pypi-uri "sh" version))
1880 "03gyss1rhj4in7pgysg4q0hxp3230whinlpy1532ljs99lrx0ywx"))))
1881 (build-system python-build-system)
1884 (modify-phases %standard-phases
1887 ;; XXX: A Python 2 test fails when HOME=/homeless-shelter.
1888 (setenv "HOME" "/tmp")
1889 (invoke "python" "sh.py" "test"))))))
1891 (list python-coverage))
1892 (home-page "https://github.com/amoffat/sh")
1893 (synopsis "Python subprocess replacement")
1894 (description "This package provides a replacement for Python's
1895 @code{subprocess} feature.")
1896 (license license:expat)))
1898 (define-public python-cftime
1900 (name "python-cftime")
1905 (uri (pypi-uri "cftime" version))
1907 (base32 "0l1a22zlhdpgaisibvvm7dhij4vzfm661rnv00y2snpyqxpdgi3d"))))
1908 (build-system python-build-system)
1910 (list python-numpy))
1912 (list python-check-manifest
1920 (home-page "https://unidata.github.io/cftime/")
1921 (synopsis "Library for time handling")
1923 "This package provides time-handling functionality that used to be part
1924 of the netcdf4 package before.")
1925 (license license:expat)))
1927 (define-public python-netcdf4
1929 (name "python-netcdf4")
1934 (uri (pypi-uri "netCDF4" version))
1937 "0qxs8r1qmsmg760wm5q0wqlcm7hdd3k7cghryw6wvqd3v5rs7vwm"))))
1938 (build-system python-build-system)
1941 (modify-phases %standard-phases
1942 (add-after 'unpack 'configure-locations
1943 (lambda* (#:key inputs #:allow-other-keys)
1944 (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))
1947 (list python-cython))
1949 (list python-numpy python-cftime))
1951 (list netcdf hdf4 hdf5))
1952 (home-page "https://github.com/Unidata/netcdf4-python")
1953 (synopsis "Python/numpy interface to the netCDF library")
1954 (description "Netcdf4-python is a Python interface to the netCDF C
1955 library. netCDF version 4 has many features not found in earlier
1956 versions of the library and is implemented on top of HDF5. This module
1957 can read and write files in both the new netCDF 4 and the old netCDF 3
1958 format, and can create files that are readable by HDF5 clients. The
1959 API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
1960 to users of that module.")
1961 ;; The software is mainly ISC, but includes some files covered
1962 ;; by the Expat license.
1963 (license (list license:isc license:expat))))
1965 (define-public python-ncclient
1967 (name "python-ncclient")
1971 (method git-fetch) ;no tests in PyPI release
1973 (url "https://github.com/ncclient/ncclient")
1974 (commit (string-append "v" version))))
1975 (file-name (git-file-name name version))
1978 "0cb568z5syg6hh0dv813bw7s1mjy7ga5xzxbm9naf4zz2qfdg4js"))))
1979 (build-system python-build-system)
1981 `(#:phases (modify-phases %standard-phases
1983 (lambda* (#:key tests? #:allow-other-keys)
1985 (invoke "pytest")))))))
1987 (list python-pytest))
1989 (list python-lxml python-paramiko))
1990 (home-page "https://github.com/ncclient/ncclient")
1991 (synopsis "Python library for NETCONF clients")
1992 (description "@code{ncclient} is a Python library that facilitates
1993 client-side scripting and application development around the NETCONF
1995 (license license:asl2.0)))
1997 (define-public python-ncls
1999 (name "python-ncls")
2003 (uri (pypi-uri "ncls" version))
2006 "1wx06xqknd2r98w8z93f47g5dpxzn92kamhj8vkq0nj569hf7cg1"))))
2007 (build-system python-build-system)
2008 (propagated-inputs (list python-numpy))
2009 (home-page "https://github.com/endrebak/ncls")
2010 (synopsis "Nested containment list data structure")
2012 "This package provides a wrapper for the nested containment list data
2013 structure. It is a static interval-tree that is fast for both construction
2015 (license license:bsd-3)))
2017 (define-public python-license-expression
2019 (name "python-license-expression")
2024 (uri (pypi-uri "license-expression" version))
2026 (base32 "1g0sgphss8hbi1rpl4avy1nmbixmy9v194xdbvkjgl90vzgy2q3r"))))
2027 (build-system python-build-system)
2029 (list python-boolean.py))
2030 (home-page "https://github.com/nexB/license-expression")
2031 (synopsis "Apply boolean logic to license expressions")
2033 "This Python module defines a tiny language to evaluate and compare
2034 license expressions using boolean logic. Logical combinations of licenses can
2035 be tested for equality, containment, and equivalence. They can be normalised
2036 and simplified. It supports SPDX license expressions as well as other naming
2037 conventions and aliases in the same expression.")
2038 (license license:gpl2+)))
2040 (define-public python-wand
2042 (name "python-wand")
2047 (uri (pypi-uri "Wand" version))
2049 (base32 "0mywzs235skwq670c80achrd34kangwy24793k1nij3651zllgrp"))))
2050 (build-system python-build-system)
2053 (modify-phases %standard-phases
2054 (add-after 'unpack 'find-magickwand
2055 (lambda* (#:key inputs #:allow-other-keys)
2056 (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick"))
2057 (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16"))))))
2059 (list python-pytest))
2062 (home-page "https://docs.wand-py.org/")
2063 (synopsis "MagickWand API binding for Python")
2065 "Wand is a ctypes-based binding for ImageMagick's MagickWand library.")
2066 (license license:expat)))
2068 (define-public python-lockfile
2070 (name "python-lockfile")
2075 (uri (pypi-uri "lockfile" version))
2078 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
2079 (build-system python-build-system)
2080 (arguments '(#:test-target "check"))
2083 (home-page "https://launchpad.net/pylockfile")
2084 (synopsis "Platform-independent file locking module")
2086 "The lockfile package exports a LockFile class which provides a simple
2087 API for locking files.")
2088 (license license:expat)))
2090 (define-public python-fb-re2
2092 (name "python-fb-re2")
2098 (url "https://github.com/facebook/pyre2")
2099 (commit (string-append "v" version))))
2100 (file-name (git-file-name name version))
2103 "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak"))))
2104 (build-system python-build-system)
2107 (home-page "https://github.com/facebook/pyre2")
2108 (synopsis "Python wrapper for RE2")
2109 (description "This package provides a Python extension that wraps Google's
2110 RE2 regular expression library. It implements many of the features of
2111 Python's built-in @code{re} module with compatible interfaces.")
2112 (license license:bsd-3)))
2114 (define-public python-filelock
2116 (name "python-filelock")
2121 (uri (pypi-uri "filelock" version))
2124 "0ngzlvb5j8gqs2nxlp2b0jhzii792h66wsn694qm8kqixr225n0q"))))
2125 (build-system python-build-system)
2127 "https://github.com/benediktschmitt/py-filelock")
2128 (synopsis "Platform independent file lock")
2129 (description "@code{filelock} contains a single module implementing
2130 a platform independent file lock in Python, which provides a simple way of
2131 inter-process communication.")
2132 (license license:unlicense)))
2134 (define-public python-semantic-version
2136 (name "python-semantic-version")
2141 (uri (pypi-uri "semantic_version" version))
2144 "0m4avx8zdkzc7qglv5zlr54g8yna5vl098drg5396ql7aph2vjyj"))))
2145 (build-system python-build-system)
2146 (home-page "https://github.com/rbarrois/python-semanticversion")
2147 (synopsis "Semantic versioning module for Python")
2149 "The @code{semantic_version} class is a small library for handling
2150 @uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python.
2152 It can compare versions, generate a new version that represents a bump in one of
2153 the version levels, and check whether any given string is a proper semantic
2154 version identifier.")
2155 (license license:bsd-3)))
2157 (define-public python-serpent
2159 (name "python-serpent")
2164 (uri (pypi-uri "serpent" version))
2166 (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk"))))
2167 (build-system python-build-system)
2169 (list python-attrs python-pytz))
2170 (home-page "https://github.com/irmen/Serpent")
2171 (synopsis "Serializer for literal Python expressions")
2173 "Serpent provides @code{ast.literal_eval()}-compatible object tree
2174 serialization. It serializes an object tree into bytes (an utf-8 encoded
2175 string) that can be decoded and then passed as-is to @code{ast.literal_eval()}
2176 to rebuild the original object tree.
2178 Because only safe literals are encoded, it is safe to send serpent data to
2179 other machines, such as over the network.")
2180 (license license:expat)))
2182 (define-public python-setuptools-declarative-requirements
2184 (name "python-setuptools-declarative-requirements")
2190 "setuptools-declarative-requirements"
2194 "1l8zmcnp9h8sp8hsw7b81djaa1a9yig0y7i4phh5pihqz1gdn7yi"))))
2195 (build-system python-build-system)
2197 (list python-pytest python-setuptools-scm))
2199 (list python-toml python-wheel))
2201 "https://github.com/s0undt3ch/setuptools-declarative-requirements")
2202 (synopsis "File support for setuptools declarative setup.cfg")
2204 "This package provides file support for setuptools declarative
2206 (license license:asl2.0)))
2208 ;; The setuptools provided by Python 3.9 is too new for Tensorflow.
2209 (define-public python-setuptools-for-tensorflow
2212 (inherit python-setuptools)
2215 (inherit (package-source python-setuptools))
2216 (uri (pypi-uri "setuptools" version ".zip"))
2219 "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65"))))
2221 `(#:tests? #f ; tests require vendored resources
2223 (modify-phases %standard-phases
2224 (add-after 'unpack 'compatibility-fixes
2226 ;; Python 3.9 no longer has HTMLParser
2227 (substitute* "setuptools/py33compat.py"
2228 (("html_parser.HTMLParser\\(\\).unescape")
2230 ;; This needs distutils.msvc9compiler
2231 (delete-file "setuptools/tests/test_msvc.py"))))))
2233 (list python-pytest python-mock python-six)))))
2235 (define-public python-uniseg
2237 (name "python-uniseg")
2242 (uri (pypi-uri "uniseg" version ".zip"))
2245 "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2"))))
2246 (build-system python-build-system)
2248 '(#:tests? #f)) ; The test suite requires network access.
2252 "https://bitbucket.org/emptypage/uniseg-python")
2254 "Python library to determine Unicode text segmentations")
2256 "Uniseg is a Python package used to determine Unicode text segmentations.
2257 Supported segmentations include:
2259 @item @dfn{Code point} (any value in the Unicode codespace)
2260 @item @dfn{Grapheme cluster} (user-perceived character made of a single or
2261 multiple Unicode code points, e.g. \"G\" + acute-accent)
2263 @item Sentence break
2266 (license license:expat)))
2268 (define-public python-humanfriendly
2270 (name "python-humanfriendly")
2275 (uri (pypi-uri "humanfriendly" version))
2278 "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz"))))
2279 (build-system python-build-system)
2281 `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
2283 (home-page "https://humanfriendly.readthedocs.io")
2284 (synopsis "Human-friendly input and output in Python")
2286 "The functions and classes in @code{humanfriendly} can be used to make
2287 text interfaces more user-friendly. It includes tools to parse and format
2288 numbers, file sizes, and timespans, timers for long-running operations, menus
2289 to allow the user to choose from a list of options, and terminal interaction
2291 (license license:expat)))
2293 (define-public python-textparser
2295 (name "python-textparser")
2300 (uri (pypi-uri "textparser" version))
2303 "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh"))))
2304 (build-system python-build-system)
2305 (home-page "https://github.com/eerimoq/textparser")
2306 (synopsis "Fast text parser for Python")
2307 (description "This library provides a text parser written in the Python
2308 language. It aims to be fast.")
2309 (license license:expat)))
2311 (define-public python-aenum
2313 (name "python-aenum")
2318 (uri (pypi-uri "aenum" version))
2320 (base32 "0r1812bjm72x73pl7y4yhffr4zbdjgxa08avsy4b3di0pqgqv0l1"))))
2321 (build-system python-build-system)
2323 `(#:phases (modify-phases %standard-phases
2326 ;; We must run the test suite module directly, as it
2327 ;; fails to define the 'tempdir' variable in scope for
2328 ;; the tests otherwise
2329 ;; (see:https://bitbucket.org/stoneleaf/aenum/\
2330 ;; issues/32/running-tests-with-python-setuppy-test).
2331 (invoke "python3" "aenum/test.py")
2332 ;; This one fails with "NameError: name
2333 ;; 'test_pickle_dump_load' is not defined" (see:
2334 ;; https://bitbucket.org/stoneleaf/aenum/issues/33
2335 ;; /error-running-the-test_v3py-test-suite).
2336 ;; (invoke "python3" "aenum/test_v3.py")
2338 (home-page "https://bitbucket.org/stoneleaf/aenum")
2339 (synopsis "Advanced enumerations, namedtuples and constants for Python")
2340 (description "The aenum library includes an @code{Enum} base class, a
2341 metaclass-based @code{NamedTuple} implementation and a @code{NamedConstant}
2343 (license license:bsd-3)))
2345 (define-public python-can
2352 (uri (pypi-uri "python-can" version))
2355 "0pcbdgdw94lc2sxd56w6wdsshrs9dd5d3wp0x4sfd0drzx32inar"))))
2356 (build-system python-build-system)
2358 `(#:phases (modify-phases %standard-phases
2359 (add-after 'unpack 'relax-version-requirements
2361 (substitute* "setup.py"
2362 (("mock~=2\\.0") "mock")
2363 (("coverage<5") "coverage")
2364 (("pytest~=4\\.6") "pytest")
2365 (("pytest-timeout~=1\\.3") "pytest-timeout")
2366 (("pytest-cov.*") "pytest-cov\n")
2367 (("hypothesis~=4\\.56") "hypothesis"))))
2368 (add-after 'unpack 'fix-broken-tests
2369 ;; The tests try to run two scripts it expects should be
2370 ;; in PATH, but they aren't at this time (see:
2371 ;; https://github.com/hardbyte/python-can/issues/805).
2373 (substitute* "test/test_scripts.py"
2374 (("\"can_logger\\.py --help\"") "")
2375 (("\"can_player\\.py --help\"") ""))))
2377 (lambda* (#:key tests? #:allow-other-keys)
2379 (invoke "pytest" "-vv" "test"
2380 ;; Disable tests which require specific CAN
2381 ;; drivers we have no package for in Guix.
2382 "--ignore" "test/test_interface_canalystii.py"
2383 ;; These tests fail with "OSError: [Errno 19]
2385 "-k" "not BasicTestUdpMulticastBusIPv")))))))
2387 (list python-msgpack python-typing-extensions python-wrapt))
2389 (list python-codecov
2394 python-parameterized
2398 python-pytest-runner
2399 python-pytest-timeout))
2400 (home-page "https://github.com/hardbyte/python-can")
2401 (synopsis "Controller Area Network (CAN) interface module for Python")
2402 (description "This package defines the @code{can} module, which provides
2403 controller area network (CAN) support for Python developers; providing common
2404 abstractions to different hardware devices, and a suite of utilities for
2405 sending and receiving messages on a CAN bus.")
2406 (license license:lgpl3+)))
2408 (define-public python-canopen
2410 (name "python-canopen")
2415 (uri (pypi-uri "canopen" version))
2417 (base32 "1nb543wb37kj95v6bhh272lm5gkpi41q3pnsl1fxlyizm2gamj5w"))))
2418 (build-system python-build-system)
2419 (native-inputs (list python-packaging))
2420 (propagated-inputs (list python-can))
2421 (home-page "https://github.com/christiansandberg/canopen")
2422 (synopsis "CANopen stack implementation")
2424 "This package provides a Python implementation of the
2425 @uref{https://www.can-cia.org/canopen/,CANopen standard} for
2426 @acronym{CANs, controller-area networks}. The aim of the project is to
2427 support the most common parts of the CiA 301 standard in a simple
2428 Pythonic interface. It is mainly targeted for testing and automation
2429 tasks rather than a standard compliant master implementation.")
2430 (license license:expat)))
2432 (define-public python-caniusepython3
2434 (name "python-caniusepython3")
2439 (uri (pypi-uri "caniusepython3" version))
2442 "0a755444ln38j8d7xb3yw0wzpd0mjrzfn6zqvsh06nw1vdaq4l28"))))
2443 (build-system python-build-system)
2445 `(#:phases (modify-phases %standard-phases
2446 (add-after 'unpack 'relax-requirements
2448 (substitute* "setup.py"
2449 ;; These are for compatibility with Python 2.
2450 ((".*'argparse', 'backports.functools_lru_cache',.*")
2452 (substitute* "dev_requirements.txt"
2453 ((".*pylint.*") "")) ;not actually required
2457 (invoke "py.test" "-k" "not NetworkTests"))))))
2459 (list python-distlib python-packaging python-requests))
2461 (list python-mock python-pytest))
2462 (home-page "https://github.com/brettcannon/caniusepython3")
2463 (synopsis "Check for Python 3-incompatible Python libraries")
2464 (description "The @command{caniusepython3} command scans your project and
2465 reports the Python 3-incompatible libraries it found. It can also be used as
2467 (license license:asl2.0)))
2469 (define-public python-diskcache
2471 (name "python-diskcache")
2476 (uri (pypi-uri "diskcache" version))
2479 "1q2wz5sj16zgyy1zpq516qgbnfwsavk1pl2qks0f4r62z5cmmvmw"))))
2480 (build-system python-build-system)
2482 `(#:tests? #f)) ;test suite not included in the release
2483 (home-page "http://www.grantjenks.com/docs/diskcache/")
2484 (synopsis "Disk and file backed cache library")
2485 (description "DiskCache is a disk and file backed persistent cache.")
2486 (license license:asl2.0)))
2488 (define-public python-argparse-addons
2490 (name "python-argparse-addons")
2495 (uri (pypi-uri "argparse_addons" version))
2497 (base32 "1yx54dmnr3xggjcjk6bbdafvzp6cynrakl56wyz3jglmfvk0znpm"))))
2498 (build-system python-build-system)
2499 (home-page "https://github.com/eerimoq/argparse_addons")
2500 (synopsis "Extensions for Python's @code{argparse} library")
2501 (description "This Python library provides additional types and actions
2502 for the standard @code{argparse} library.")
2503 (license license:expat)))
2505 (define-public python-bitstruct
2507 (name "python-bitstruct")
2512 (uri (pypi-uri "bitstruct" version))
2515 "149c73yrqbph71bbyf925r2mbh2jdymqxc6d49lnylpiflf1j313"))))
2516 (build-system python-build-system)
2517 (home-page "https://github.com/eerimoq/bitstruct")
2518 (synopsis "Python values to and C bit field structs converter")
2519 (description "This module performs conversions between Python values and C
2520 bit field structs represented as Python byte strings. It is intended to have
2521 a similar interface as the @code{struct} module from Python, but working on
2522 bits instead of primitive data types like @code{char}, @code{int}, etc.")
2523 (license license:expat)))
2525 (define-public python-cantools
2527 (name "python-cantools")
2531 ;; We take the sources from the Git repository as the documentation is
2532 ;; not included with the PyPI archive.
2535 (url "https://github.com/eerimoq/cantools")
2537 (file-name (git-file-name name version))
2540 "1qcf1fcwif7w70qmhxw2b8kqh420igbinq60p1chzf98xcb0ansx"))))
2541 (build-system python-build-system)
2545 #~(modify-phases %standard-phases
2546 (add-after 'build 'build-doc
2548 ;; See: https://github.com/eerimoq/cantools/issues/190.
2549 (substitute* "README.rst"
2550 (("https://github.com/eerimoq/cantools/raw/master\
2553 (invoke "make" "-C" "docs" "man" "info")))
2554 (add-after 'install 'install-doc
2555 (lambda* (#:key outputs #:allow-other-keys)
2556 (let* ((info (string-append #$output "/share/info"))
2557 (man1 (string-append #$output "/share/man/man1")))
2558 (install-file "docs/_build/texinfo/cantools.info" info)
2559 (install-file "docs/_build/man/cantools.1" man1)))))))
2560 (native-inputs (list python-sphinx texinfo))
2562 (list python-argparse-addons
2568 python-parameterized
2570 (home-page "https://github.com/eerimoq/cantools")
2571 (synopsis "Tools for the Controller Area Network (CAN) bus protocol")
2572 (description "This package includes Controller Area Network (CAN) related
2573 tools that can be used to:
2575 @item parse DBC, KCD, SYM, ARXML 4 and CDD files
2576 @item encode and decode CAN messages
2577 @item multiplex simple and extended signals
2578 @item diagnose DID encoding and decoding
2579 @item dump the CAN decoder output
2580 @item test CAN nodes
2581 @item generate C source code
2582 @item monitor the CAN bus
2584 (license license:expat)))
2586 (define-public python-capturer
2588 (name "python-capturer")
2593 (uri (pypi-uri "capturer" version))
2596 "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089"))))
2597 (build-system python-build-system)
2601 (list python-humanfriendly))
2602 (home-page "https://capturer.readthedocs.io")
2603 (synopsis "Capture stdout and stderr streams of the current process")
2605 "The capturer package makes it easy to capture the stdout and stderr
2606 streams of the current process and subprocesses. Output can be relayed
2607 to the terminal in real time but is also available to the Python program
2608 for additional processing.")
2609 (license license:expat)))
2611 (define-public python-case
2613 (name "python-case")
2618 (uri (pypi-uri "case" version))
2621 "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8"))))
2622 (build-system python-build-system)
2624 (list python-mock python-nose python-six))
2626 (list python-coverage))
2627 (home-page "https://github.com/celery/case")
2628 (synopsis "Unittest utilities and convenience methods")
2630 "The @code{case} package provides utilities on top of unittest, including
2631 some helpful Python 2 compatibility convenience methods.")
2632 (license license:bsd-3)))
2634 (define-public python-verboselogs
2636 (name "python-verboselogs")
2641 (uri (pypi-uri "verboselogs" version))
2644 "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3"))))
2645 (build-system python-build-system)
2648 (modify-phases %standard-phases
2651 ;; Do not run pylint plugin test, as astroid is an old
2652 ;; unsupported version.
2653 (invoke "pytest" "-v" "-k" "not test_pylint_plugin"
2654 "verboselogs/tests.py"))))))
2656 (list python-mock python-pytest))
2657 (home-page "https://verboselogs.readthedocs.io")
2658 (synopsis "Verbose logging level for Python's logging module")
2660 "The @code{verboselogs} package extends Python's @code{logging} module to
2661 add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
2662 (license license:expat)))
2664 (define-public python-coloredlogs
2666 (name "python-coloredlogs")
2671 (uri (pypi-uri "coloredlogs" version))
2674 "0dkw6xp0r1dwgz4s2f58npx5nxfq51wf4l6qkm5ib27slgfs4sdq"))))
2675 (build-system python-build-system)
2677 `(;Tests require some updated modules
2680 (list python-capturer))
2681 (home-page "https://coloredlogs.readthedocs.io")
2682 (synopsis "Colored stream handler for Python's logging module")
2684 "The @code{coloredlogs} package enables colored terminal output for
2685 Python's logging module. The @code{ColoredFormatter} class inherits from
2686 @code{logging.Formatter} and uses ANSI escape sequences to render your logging
2687 messages in color.")
2688 (license license:expat)))
2690 (define-public python-editorconfig
2692 (name "python-editorconfig")
2697 (uri (pypi-uri "EditorConfig" version))
2700 "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv"))))
2701 (build-system python-build-system)
2702 (home-page "https://editorconfig.org/")
2703 (synopsis "EditorConfig bindings for python")
2704 (description "The EditorConfig project consists of a file format for
2705 defining coding styles and a collection of text editor plugins that enable
2706 editors to read the file format and adhere to defined styles. EditorConfig
2707 files are easily readable and they work nicely with version control systems.")
2708 ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2.
2709 (license (list license:bsd-2 license:psfl))))
2711 (define-public dosage
2718 (uri (pypi-uri "dosage" version))
2721 "0vmxgn9wd3j80hp4gr5iq06jrl4gryz5zgfdd2ah30d12sfcfig0"))))
2722 (build-system python-build-system)
2724 (list python-cached-property
2727 python-importlib-metadata
2732 (list python-pytest-cov python-pytest-xdist python-responses
2733 python-setuptools-scm))
2734 (home-page "https://github.com/webcomics/dosage")
2735 (synopsis "Comic strip downloader and archiver")
2736 (description "Dosage is designed to keep a local copy of specific webcomics and other
2737 picture-based content such as Picture of the Day sites. With the @command{dosage}
2738 command-line script you can get the latest strip of a webcomic, catch-up to the last strip
2739 downloaded, or download a strip for a particular date or index, if possible.")
2740 (license license:expat)))
2742 (define-public python-et-xmlfile
2744 (name "python-et-xmlfile")
2748 ;; Use a checkout because the PyPI archive does not contain tests.
2751 (url "https://foss.heptapod.net/openpyxl/et_xmlfile")
2752 (changeset version)))
2753 (file-name (string-append name "-" version "-checkout"))
2755 (base32 "09r8rjc5bhkqrm5c4n9jrlvad8vrvbyswl9g0wrc1qc7nzh9mpw7"))))
2756 (build-system python-build-system)
2759 #~(modify-phases %standard-phases
2761 (lambda* (#:key tests? #:allow-other-keys)
2763 (invoke "pytest" "-vv")))))))
2765 (list python-pytest python-lxml)) ;used for the tests
2766 (home-page "https://bitbucket.org/openpyxl/et_xmlfile")
2767 (synopsis "Low memory implementation of @code{lxml.xmlfile}")
2768 (description "This Python library is based upon the @code{xmlfile} module
2769 from @code{lxml}. It aims to provide a low memory, compatible implementation
2770 of @code{xmlfile}.")
2771 (license license:expat)))
2773 (define-public python-openpyxl
2775 (name "python-openpyxl")
2779 ;; We use the upstream repository, as the tests are not included in the
2783 (url "https://foss.heptapod.net/openpyxl/openpyxl")
2784 (changeset version)))
2785 (file-name (string-append name "-" version "-checkout"))
2787 (base32 "1p8xvc2gjw6zyzbd7qdvc3x178sm00ymrbyh9539l4fpzgxh0j9c"))))
2788 (build-system python-build-system)
2790 `(#:phases (modify-phases %standard-phases
2793 (invoke "pytest"))))))
2794 (native-inputs (list python-lxml python-pillow python-pytest))
2795 (propagated-inputs (list python-et-xmlfile python-jdcal))
2796 (home-page "https://openpyxl.readthedocs.io")
2797 (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files")
2799 "This Python library allows reading and writing to the Excel XLSX, XLSM,
2800 XLTX and XLTM file formats that are defined by the Office Open XML (OOXML)
2802 (license license:expat)))
2804 (define-public python-eventlet
2806 (name "python-eventlet")
2811 (uri (pypi-uri "eventlet" version))
2814 "07qlyhcm0f28sxdizawvdf3d50m3hnbzz5kg3fjp7chvki44y540"))))
2815 (build-system python-build-system)
2817 (list python-dnspython python-greenlet python-monotonic python-six))
2822 (modify-phases %standard-phases
2823 (add-after 'unpack 'avoid-OSError
2825 ;; If eventlet tries to load greendns, an OSError is thrown when
2826 ;; getprotobyname is called. Thankfully there is an environment
2827 ;; variable to disable the greendns import, so use it:
2828 (setenv "EVENTLET_NO_GREENDNS" "yes")))
2829 (add-after 'unpack 'delete-broken-tests
2831 (delete-file "tests/greendns_test.py")
2832 (delete-file "tests/socket_test.py")))
2833 ;; See https://github.com/eventlet/eventlet/issues/562#issuecomment-714183009
2835 (lambda* (#:key tests? #:allow-other-keys)
2837 (invoke "nosetests" "-v" "tests/")))))))
2838 (home-page "https://eventlet.net")
2839 (synopsis "Concurrent networking library for Python")
2841 "Eventlet is a concurrent networking library for Python that
2842 allows you to change how you run your code, not how you write it.
2843 It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
2844 Coroutines ensure that the developer uses a blocking style of programming
2845 that is similar to threading, but provide the benefits of non-blocking I/O.
2846 The event dispatch is implicit, which means you can easily use @code{Eventlet}
2847 from the Python interpreter, or as a small part of a larger application.")
2848 (license license:expat)))
2850 (define-public python-sinfo
2852 (name "python-sinfo")
2856 (uri (pypi-uri "sinfo" version))
2859 "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1"))))
2860 (build-system python-build-system)
2862 (list python-stdlib-list))
2863 (home-page "https://gitlab.com/joelostblom/session_info")
2864 (synopsis "Output module version information loaded in a Python session")
2865 (description "This package outputs version information for modules loaded
2866 in the current session, Python, and the OS.")
2867 (license license:bsd-3)))
2869 (define-public python-six
2870 (package/inherit python-six-bootstrap
2874 (modify-phases %standard-phases
2877 (invoke "pytest" "-v"))))))
2879 `(("python-pytest" ,python-pytest-bootstrap)))))
2881 (define-public python2-six
2882 (let ((base (package-with-python2 python-six)))
2885 ;; Reduce Python 2 closure by disabling tests and removing the native
2887 (arguments (substitute-keyword-arguments (package-arguments base)
2889 `(modify-phases ,phases
2891 (native-inputs '()))))
2893 (define-public python-schedule
2895 (name "python-schedule")
2900 (uri (pypi-uri "schedule" version))
2903 "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i"))))
2904 (build-system python-build-system)
2906 (list python-pytest python-mock))
2907 (home-page "https://github.com/dbader/schedule")
2908 (synopsis "Schedule periodic function calls in Python")
2910 "Schedule is an in-process scheduler for periodic jobs that uses the
2911 builder pattern for configuration. Schedule lets you run Python functions (or
2912 any other callable) periodically at pre-determined intervals using a simple,
2913 human-friendly syntax.")
2914 (license license:expat)))
2916 (define-public python-scour
2918 (name "python-scour")
2925 (url "https://github.com/scour-project/scour")
2927 (string-append "v" version))))
2928 (file-name (git-file-name name version))
2930 (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k"))))
2933 (build-system python-build-system)
2934 (home-page "https://github.com/scour-project/scour")
2935 (synopsis "Scour is an SVG optimizer/cleaner written in Python")
2936 (description "The goal of Scour is to output a file that renders
2937 identically at a fraction of the size by removing a lot of redundant
2938 information created by most SVG editors. Optimization options are typically
2939 lossless but can be tweaked for more aggressive cleaning.")
2940 (license license:asl2.0)))
2942 (define-public python-mechanize
2944 (name "python-mechanize")
2949 (uri (pypi-uri "mechanize" version))
2952 "1z9kqcwb8gfq2l6i42z624kxpd8692a0c8gw2x5bbm7n848w2mb3"))))
2953 (build-system python-build-system)
2955 (list python-html5lib))
2956 (home-page "https://github.com/python-mechanize/mechanize")
2958 "Stateful programmatic web browsing in Python")
2960 "Mechanize implements stateful programmatic web browsing in Python,
2961 after Andy Lester’s Perl module WWW::Mechanize.")
2962 (license license:bsd-3)))
2964 (define-public python-simpleaudio
2966 (name "python-simpleaudio")
2971 (uri (pypi-uri "simpleaudio" version))
2974 "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739"))))
2975 (build-system python-build-system)
2981 "https://github.com/hamiltron/py-simple-audio")
2982 (synopsis "Simple, asynchronous audio playback for Python 3")
2984 "The @code{simplaudio} package provides cross-platform, dependency-free
2985 audio playback capability for Python 3 on OSX, Windows, and Linux.")
2986 (license license:expat))) ; MIT license
2988 (define-public python-simplejson
2990 (name "python-simplejson")
2995 (uri (pypi-uri "simplejson" version))
2998 "19pqqn01y6qmhhv8q6dh4p1acav49kl923kklnns2qxz5a6h766g"))))
2999 (build-system python-build-system)
3002 (home-page "https://simplejson.readthedocs.io/en/latest")
3004 "Json library for Python")
3006 "JSON (JavaScript Object Notation) is a subset of JavaScript
3007 syntax (ECMA-262 3rd edition) used as a lightweight data interchange
3010 Simplejson exposes an API familiar to users of the standard library marshal
3011 and pickle modules. It is the externally maintained version of the json
3012 library contained in Python 2.6, but maintains compatibility with Python 2.5
3013 and (currently) has significant performance advantages, even without using
3014 the optional C extension for speedups. Simplejson is also supported on
3016 (license license:x11)))
3019 (define-public python-pyicu
3021 (name "python-pyicu")
3026 (uri (pypi-uri "PyICU" version))
3029 "0y2qhh443vydi3y7kmhyb6kz3z6d7qq7ld0sg88mfqalcp7dca9w"))))
3030 (build-system python-build-system)
3034 (list python-pytest python-six))
3035 (home-page "https://gitlab.pyicu.org/main/pyicu")
3036 (synopsis "Python extension wrapping the ICU C++ API")
3038 "PyICU is a python extension wrapping the ICU C++ API.")
3039 (license license:x11)))
3041 (define-public python-dogtail
3043 (name "python-dogtail")
3049 "https://gitlab.com/dogtail/dogtail/-/raw/released/"
3050 "dogtail-" version ".tar.gz"))
3053 "0sr38z7b2n12bvfd4xw4b5dnnhkn5zl3h0ymmnnzavcihfqia6l0"))))
3054 (build-system python-build-system)
3056 `(#:tests? #f ; TODO Launching dbus for the tests
3059 (modify-phases %standard-phases
3061 (lambda* (#:key tests? #:allow-other-keys)
3063 (system "Xvfb :1 &")
3064 (setenv "DISPLAY" ":1")
3065 (invoke "dbus-run-session" "--" "nosetests" "-v" "tests/"))
3068 (list python-pygobject python-pycairo python-pyatspi))
3070 `(("python-nose" ,python-nose)
3072 ("xvfb" ,xorg-server)
3074 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
3075 ("gobject-introspection" ,gobject-introspection)))
3076 (home-page "https://gitlab.com/dogtail/dogtail/")
3077 (synopsis "GUI test tool and automation framework written in Python")
3079 "Dogtail is a GUI test tool and automation framework written in Python.
3080 It uses Accessibility (a11y) technologies to communicate with desktop
3081 applications. dogtail scripts are written in Python and executed like any
3082 other Python program.")
3083 (license license:gpl2+)))
3085 (define-public python-empy
3087 (name "python-empy")
3091 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
3095 "1mxfy5mgp473ga1pgz2nvm8ds6z4g3hdky8523z6jzvcs9ny6hcq"))))
3096 (build-system python-build-system)
3098 `(#:tests? #f)) ; python2 only
3099 (home-page "http://www.alcyone.com/software/empy/")
3100 (synopsis "Templating system for Python")
3102 "EmPy is a system for embedding Python expressions and statements in
3103 template text; it takes an EmPy source file, processes it, and produces
3104 output. This is accomplished via expansions, which are special signals to the
3105 EmPy system and are set off by a special prefix (by default the at sign, @@).
3106 EmPy can expand arbitrary Python expressions and statements in this way, as
3107 well as a variety of special forms. Textual data not explicitly delimited in
3108 this way is sent unaffected to the output, allowing Python to be used in
3109 effect as a markup language. Also supported are callbacks via hooks,
3110 recording and playback via diversions, and dynamic, chainable filters. The
3111 system is highly configurable via command line options and embedded
3113 (license license:lgpl2.1+)))
3115 (define-public python-enum34
3117 (name "python-enum34")
3122 (uri (pypi-uri "enum34" version))
3125 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
3126 (build-system python-build-system)
3127 (home-page "https://pypi.org/project/enum34/")
3128 (synopsis "Backported Python 3.4 Enum")
3130 "Enum34 is the new Python stdlib enum module available in Python 3.4
3131 backported for previous versions of Python from 2.4 to 3.3.")
3132 (license license:bsd-3)))
3134 (define-public python-parse-type
3136 (name "python-parse-type")
3141 (uri (pypi-uri "parse_type" version))
3144 "07smqnzc9km7sbvxfyx4gdm9njrx58x8grdw6gs4gva81rk3rd10"))))
3145 (build-system python-build-system)
3148 (modify-phases %standard-phases
3150 (lambda* (#:key tests? #:allow-other-keys)
3152 (invoke "pytest" "-vv" "-c" "/dev/null")))))))
3153 (propagated-inputs (list python-six python-parse))
3154 (native-inputs (list python-pytest))
3155 (home-page "https://github.com/jenisys/parse_type")
3156 (synopsis "Extended parse module")
3157 (description "Parse_type extends the python parse module.")
3158 (license license:bsd-3)))
3160 (define-public python-parse
3162 (name "python-parse")
3167 (uri (pypi-uri "parse" version))
3170 "19063x4xdjpaf7rfxai6jpgm2k4yvkq7wha8aa8cagbjsqr60rli"))))
3171 (build-system python-build-system)
3174 (modify-phases %standard-phases
3176 (lambda _ (invoke "python" "test_parse.py"))))))
3177 (home-page "https://github.com/r1chardj0n3s/parse")
3178 (synopsis "Parse strings")
3180 "Parse strings using a specification based on the Python @code{format()}
3182 (license license:x11)))
3184 (define-public python-polib
3186 (name "python-polib")
3190 (uri (pypi-uri "polib" version))
3193 "0aikb8gcarhifn3sadrbbs5czagih9hjv250gsrgy9v1d49pvn7s"))))
3194 (build-system python-build-system)
3195 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
3196 (synopsis "Manipulate, create and modify gettext files")
3197 (description "Polib can manipulate any gettext format (po, pot and mo)
3198 files. It can be used to create po files from scratch or to modify
3200 (license license:expat)))
3202 (define-public python-polling2
3204 (name "python-polling2")
3209 (uri (pypi-uri "polling2" version))
3211 (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh"))))
3212 (build-system python-build-system)
3213 (arguments '(#:tests? #false)) ; no tests included
3215 (list python-mock python-pytest python-pytest-runner))
3216 (home-page "https://github.com/ddmee/polling2")
3217 (synopsis "Polling utility with many configurable options")
3218 (description "Polling2 is a utility used to wait for a function to return
3219 a certain expected condition.")
3220 (license license:expat)))
3222 (define-public python-poyo
3224 (name "python-poyo")
3229 (uri (pypi-uri "poyo" version))
3232 "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2"))))
3233 (build-system python-build-system)
3234 (home-page "https://github.com/hackebrot/poyo")
3235 (synopsis "Lightweight YAML Parser for Python")
3237 "This package provides a lightweight YAML Parser for Python. It supports
3238 only a chosen subset of the YAML format that is required to parse cookiecutter
3239 user configuration files. It does not have support for serializing into YAML
3240 and is not compatible with JSON.")
3241 (license license:expat)))
3243 (define-public python-exceptiongroup
3245 (name "python-exceptiongroup")
3246 (version "1.0.0rc8")
3250 (url "https://github.com/agronholm/exceptiongroup")
3252 (file-name (git-file-name name version))
3255 "0xsbpv22n51p6yvyvz231mf8zhbi1i88b4zmacaxxx31zrq5ifv4"))))
3256 (build-system python-build-system)
3260 #~(modify-phases %standard-phases
3261 ;; XXX: PEP 517 manual build/install procedures copied from
3265 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
3266 ;; ZIP does not support timestamps before 1980.
3267 (setenv "SOURCE_DATE_EPOCH" "315532800")
3268 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
3270 (lambda* (#:key outputs #:allow-other-keys)
3271 (let ((whl (car (find-files "dist" "\\.whl$"))))
3272 (invoke "pip" "--no-cache-dir" "--no-input"
3273 "install" "--no-deps" "--prefix" #$output whl))))
3275 (lambda* (#:key tests? #:allow-other-keys)
3277 (invoke "pytest" "-vv" "tests")))))))
3278 (native-inputs (list python-flit-scm python-pypa-build python-pytest))
3279 (home-page "https://github.com/agronholm/exceptiongroup")
3280 (synopsis "PEP 654 backport from Python 3.11")
3281 (description "This is a backport of the @code{BaseExceptionGroup} and
3282 @code{ExceptionGroup} classes from Python 3.11.")
3283 (license license:expat)))
3285 (define-public python-extension-helpers
3287 (name "python-extension-helpers")
3292 (uri (pypi-uri "extension-helpers" version))
3294 (base32 "10iqjzmya2h4sk765dlm1pbqypwlqyh8rw59a5m9i63d3klnz2mc"))))
3295 (build-system python-build-system)
3297 (list python-coverage python-pytest-astropy python-pytest-cov
3298 python-setuptools-scm))
3299 (home-page "https://github.com/astropy/astropy-helpers")
3301 "Utilities for building and installing packages in the Astropy ecosystem")
3303 "The extension-helpers package includes many build, installation, and
3304 documentation-related tools used by the Astropy project.")
3305 (license license:bsd-3)))
3307 (define-public python-extras
3309 (name "python-extras")
3314 (uri (pypi-uri "extras" version))
3317 "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk"))))
3318 (build-system python-build-system)
3320 ;; FIXME: Circular dependency on testtools.
3322 (home-page "https://github.com/testing-cabal/extras")
3323 (synopsis "Useful extensions to the Python standard library")
3325 "Extras is a set of extensions to the Python standard library.")
3326 (license license:expat)))
3328 (define-public python-mimeparse
3330 (name "python-mimeparse")
3335 (uri (pypi-uri "python-mimeparse" version))
3338 "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n"))))
3339 (build-system python-build-system)
3342 (modify-phases %standard-phases
3345 (invoke "./mimeparse_test.py"))))))
3347 "https://github.com/dbtsai/python-mimeparse")
3348 (synopsis "Python library for parsing MIME types")
3350 "Mimeparse provides basic functions for parsing MIME type names and
3351 matching them against a list of media-ranges.")
3352 (license license:expat)))
3354 (define-public python-miniboa
3356 (name "python-miniboa")
3361 (uri (pypi-uri "miniboa" version))
3364 "002c1aki9hsrwj5plrwdrf3sk8rn95fqylqyjx2arrjfpsih4dgs"))))
3365 (build-system python-build-system)
3366 (home-page "https://github.com/shmup/miniboa")
3367 (synopsis "Simple, single-threaded Telnet server")
3369 "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet
3371 (license license:asl2.0)))
3373 (define-public python-pafy
3375 (name "python-pafy")
3380 (uri (pypi-uri "pafy" version))
3383 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
3384 (build-system python-build-system)
3386 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
3388 ;; Youtube-dl is a python package which is imported in the file
3389 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
3391 (home-page "https://np1.github.io/pafy/")
3392 (synopsis "Retrieve YouTube content and metadata")
3394 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
3395 (license license:lgpl3+)))
3397 (define-public python-miniupnpc
3399 (name "python-miniupnpc")
3406 (url "https://github.com/miniupnp/miniupnp")
3409 "miniupnpc_" (string-replace-substring version "." "_")))))
3411 (git-file-name name version))
3413 (base32 "03q1rlzvfzm15g1bfw2zqzavlsyaypnaf2k3cz6ha7k5rirkdy0l"))))
3414 (build-system python-build-system)
3418 #~(modify-phases %standard-phases
3419 (add-after 'unpack 'subdir
3420 (lambda* (#:key inputs #:allow-other-keys)
3422 (setenv "CC" #$(cc-for-target))
3423 (substitute* "Makefile"
3424 (("/bin/sh") (search-input-file inputs "/bin/sh")))))
3425 (add-before 'subdir 'remove-kernel-version
3426 ;; Avoid embedding the running kernel version for reproducible builds
3429 "miniupnpc/updateminiupnpcstrings.sh"
3430 (("^OS_VERSION=`uname -r`") "OS_VERSION=Guix")))))))
3431 (inputs (list python)) ;we are building a Python extension
3432 (synopsis "UPnP client for Python")
3433 (description "Miniupnpc is a client library for Python programs to set up
3434 port forwards using @acronym{UPnP, Universal Plug and Play}.")
3435 (home-page "http://miniupnp.free.fr")
3436 (license license:bsd-3)))
3438 (define-public python-py
3445 (uri (pypi-uri "py" version))
3448 "1lqvkqk3b440g9z82gqbzlzas84wrm6ir8kplzhzavmn2pd1pf11"))))
3449 (build-system python-build-system)
3451 ;; FIXME: "ImportError: 'test' module incorrectly imported from
3452 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
3453 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
3454 ;; Is this module globally installed?"
3457 (list python-setuptools-scm))
3458 (home-page "https://github.com/pytest-dev/py")
3459 (synopsis "Python library for parsing, I/O, instrospection, and logging")
3461 "Py is a Python library for file name parsing, .ini file parsing, I/O,
3462 code introspection, and logging.")
3463 (license license:expat)))
3465 ;; Recent versions of python-fixtures and python-testrepository need
3466 ;; python-pbr for packaging, which itself needs these two packages for
3468 ;; To fix this circular dependency, we use a build of python-pbr, based on the
3469 ;; same source, just without any test dependencies and with tests disabled.
3470 ;; python-pbr-minmal is then used to package python-fixtures and
3471 ;; python-testrepository.
3472 ;; Strictly speaking we currently could remove the test-requirements from the
3473 ;; normal python-pbr package (and save this package) since test are disabled
3474 ;; there anyway. But this may change in future.
3475 (define-public python-pbr-minimal
3477 (name "python-pbr-minimal")
3482 (uri (pypi-uri "pbr" version))
3485 "1j8k5d4rdhy5bw5ai1vkjzln2albah94in3vvyvxa0n42fv81baz"))))
3486 (build-system python-build-system)
3489 (home-page "https://docs.openstack.org/pbr/latest/")
3490 (synopsis "Minimal build of python-pbr used for bootstrapping")
3492 "Used only for bootstrapping python2-pbr, you should not need this.")
3493 (license license:asl2.0)))
3495 (define-public python-pbr
3497 (inherit python-pbr-minimal)
3500 `(#:tests? #f)) ;; Most tests seem to use the Internet.
3502 (list git)) ;; pbr actually uses the "git" binary.
3504 `(("python-fixtures" ,python-fixtures-bootstrap)
3505 ;; discover, coverage, hacking, subunit
3506 ("python-mock" ,python-mock)
3507 ("python-six" ,python-six)
3508 ("python-sphinx" ,python-sphinx)
3509 ("python-testrepository" ,python-testrepository-bootstrap)
3510 ("python-testresources" ,python-testresources-bootstrap)
3511 ("python-testscenarios" ,python-testscenarios-bootstrap)
3512 ("python-testtools" ,python-testtools-bootstrap)
3513 ("python-virtualenv" ,python-virtualenv)))
3514 (synopsis "Enhance the default behavior of Python’s setuptools")
3516 "Python Build Reasonableness (PBR) is a library that injects some useful
3517 and sensible default behaviors into your setuptools run. It will set
3518 versions, process requirements files and generate AUTHORS and ChangeLog file
3519 from git information.
3522 (define-public python-pyrsistent
3524 (name "python-pyrsistent")
3526 (home-page "https://github.com/tobgu/pyrsistent")
3529 (uri (pypi-uri "pyrsistent" version))
3532 "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8"))))
3533 (build-system python-build-system)
3535 '(#:phases (modify-phases %standard-phases
3536 ;; The package works fine with newer Pytest and Hypothesis, but
3537 ;; has pinned older versions to stay compatible with Python 2.
3538 (add-before 'check 'loosen-pytest-requirement
3540 (substitute* "setup.py"
3541 (("pytest<5") "pytest")
3542 (("hypothesis<5") "hypothesis"))
3545 (list python-hypothesis python-pytest python-pytest-runner))
3548 (synopsis "Persistent data structures for Python")
3550 "Pyrsistent is a number of persistent collections (by some referred to as
3551 functional data structures). Persistent in the sense that they are immutable.
3553 All methods on a data structure that would normally mutate it instead return a
3554 new copy of the structure containing the requested updates. The original
3555 structure is left untouched.")
3556 (license license:expat)))
3558 (define-public python-exif-read
3560 (name "python-exif-read")
3564 (uri (pypi-uri "ExifRead" version))
3567 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
3568 (build-system python-build-system)
3569 (arguments `(#:tests? #f)) ; no tests
3570 (home-page "https://github.com/ianare/exif-py")
3571 (synopsis "Python library to extract EXIF data from image files")
3573 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
3575 (license license:bsd-3)))
3577 (define-public python-pyld
3579 (name "python-pyld")
3583 (uri (pypi-uri "PyLD" version))
3586 "1ywbdbsrkg533qh8xn9ifjh2mvam6v5msrjyqq73jfpvcp89qvff"))))
3587 (build-system python-build-system)
3588 (home-page "https://github.com/digitalbazaar/pyld")
3589 (synopsis "Python implementation of the JSON-LD specification")
3591 "PyLD is an implementation of the JSON-LD specification.")
3592 (license license:bsd-3)))
3594 (define-public python-cli-helpers
3596 (name "python-cli-helpers")
3600 ;; There's no source tarball on PyPI.
3603 (url "https://github.com/dbcli/cli_helpers")
3604 (commit (string-append "v" version))))
3605 (file-name (git-file-name name version))
3607 (base32 "1hzavh9v9lkd1dn9f0nvg80f7v4banxvcrj10zy72przqz51k1sb"))))
3608 (build-system python-build-system)
3610 (list python-pytest))
3612 (list python-wcwidth python-configobj python-tabulate))
3613 (home-page "https://github.com/dbcli/cli_helpers")
3614 (synopsis "Helpers for building command-line apps")
3616 "CLI Helpers is a Python package that makes it easy to perform common
3617 tasks when building command-line apps. It's a helper library for command-line
3619 (license license:bsd-3)))
3621 (define-public python-click
3623 (name "python-click")
3628 (uri (pypi-uri "click" version))
3631 "13kvp8visj5xh9d43brnda6q0kc1s40flxa5cw0p0a9hzf5dr0kn"))))
3632 (build-system python-build-system)
3635 (modify-phases %standard-phases
3637 (lambda* (#:key tests? #:allow-other-keys)
3639 (invoke "pytest" "-vv")))))))
3640 (native-inputs (list python-pytest))
3641 (home-page "https://palletsprojects.com/p/click/")
3642 (synopsis "Command line library for Python")
3644 "Click is a Python package for creating command line interfaces in a
3645 composable way with as little code as necessary. Its name stands for
3646 \"Command Line Interface Creation Kit\". It's highly configurable but comes
3647 with sensible defaults out of the box.")
3648 (license license:bsd-3)))
3650 (define-public python-click-7
3651 (package (inherit python-click)
3652 (name "python-click")
3657 (uri (pypi-uri "click" version))
3659 (base32 "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
3662 (define-public python-click-5
3663 (package (inherit python-click)
3664 (name "python-click")
3669 (uri (pypi-uri "click" version))
3671 (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
3674 (define-public python-cligj
3676 (name "python-cligj")
3681 (uri (pypi-uri "cligj" version))
3684 "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54"))))
3685 (build-system python-build-system)
3687 (list python-click))
3689 (list python-pytest-cov))
3690 (home-page "https://github.com/mapbox/cligj")
3691 (synopsis "Click params for command line interfaces to GeoJSON")
3693 "cligj is for Python developers who create command line interfaces
3694 for geospatial data. cligj allows you to quickly build consistent,
3695 well-tested and interoperable CLIs for handling GeoJSON.")
3696 (license license:bsd-3)))
3698 (define-public python-vcversioner
3700 (name "python-vcversioner")
3701 (version "2.16.0.0")
3705 (uri (pypi-uri "vcversioner" version))
3708 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
3709 (build-system python-build-system)
3710 (synopsis "Python library for version number discovery")
3711 (description "Vcversioner is a Python library that inspects tagging
3712 information in a variety of version control systems in order to discover
3714 (home-page "https://github.com/habnabit/vcversioner")
3715 (license license:isc)))
3717 (define-public python-jdcal
3719 (name "python-jdcal")
3724 (uri (pypi-uri "jdcal" version))
3727 "1j6g19jf21qprjsr8h0r7nsbss366gy8j9izq8cz53gbjvh74a27"))))
3728 (build-system python-build-system)
3731 #~(modify-phases %standard-phases
3733 (lambda* (#:key tests? #:allow-other-keys)
3735 (invoke "pytest" "-vv")))))))
3737 (list python-pytest))
3738 (home-page "https://github.com/phn/jdcal")
3739 (synopsis "Functions to convert between Julian dates Gregorian dates")
3740 (description "This Python library provides functions for converting
3741 between Julian dates and Gregorian dates.")
3742 (license license:bsd-2)))
3744 (define-public python-jsondiff
3746 (name "python-jsondiff")
3751 (uri (pypi-uri "jsondiff" version))
3754 "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l"))))
3755 (build-system python-build-system)
3757 (list python-nose python-nose-random))
3759 "https://github.com/fzumstein/jsondiff")
3760 (synopsis "Compare JSON and JSON-like structures in Python")
3761 (description "@code{jsondiff} is a Python library which lets you
3762 compare, diff, and patch JSON and JSON-like structures in Python.")
3763 (license license:expat)))
3765 (define-public python-jsonschema
3767 (name "python-jsonschema")
3771 (uri (pypi-uri "jsonschema" version))
3774 "0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68"))))
3775 (build-system python-build-system)
3778 (modify-phases %standard-phases
3780 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3782 (setenv "JSON_SCHEMA_TEST_SUITE" "json")
3783 (invoke "trial" "jsonschema")))))))
3785 `(("python-setuptools_scm" ,python-setuptools-scm)
3786 ("python-twisted" ,python-twisted)))
3788 (list python-attrs python-pyrsistent python-six))
3789 (home-page "https://github.com/Julian/jsonschema")
3790 (synopsis "Implementation of JSON Schema for Python")
3792 "Jsonschema is an implementation of JSON Schema for Python.")
3793 (license license:expat)))
3795 ;;; TODO: Make the default python-jsonschema on core-updates
3796 (define-public python-jsonschema-next
3798 (inherit python-jsonschema)
3803 (uri (pypi-uri "jsonschema" version))
3805 (base32 "1z0x22691jva7lwfcfh377jdmlz68zhiawxzl53k631l34k8hvbw"))))
3807 (substitute-keyword-arguments (package-arguments python-jsonschema)
3809 #~(modify-phases #$phases
3810 ;; XXX: PEP 517 manual build/install procedures copied from
3814 ;; ZIP does not support timestamps before 1980.
3815 (setenv "SOURCE_DATE_EPOCH" "315532800")
3816 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
3818 (lambda* (#:key outputs #:allow-other-keys)
3819 (let ((whl (car (find-files "dist" "\\.whl$"))))
3820 (invoke "pip" "--no-cache-dir" "--no-input"
3821 "install" "--no-deps" "--prefix" #$output whl))))))))
3822 (native-inputs (list python-pypa-build
3823 python-setuptools-scm
3827 python-importlib-metadata
3829 python-typing-extensions))))
3831 (define-public python-schema
3833 (name "python-schema")
3838 (uri (pypi-uri "schema" version))
3841 "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
3842 (build-system python-build-system)
3844 (list python-pytest))
3845 (home-page "https://github.com/keleshev/schema")
3846 (synopsis "Simple data validation library")
3848 "@code{python-schema} is a library for validating Python data
3849 structures, such as those obtained from config-files, forms, external
3850 services or command-line parsing, converted from JSON/YAML (or
3851 something else) to Python data-types.")
3852 (license license:psfl)))
3854 (define-public python-schema-0.5
3855 (package (inherit python-schema)
3860 (uri (pypi-uri "schema" version))
3863 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
3865 (define-public python-kitchen
3867 (name "python-kitchen")
3872 (uri (pypi-uri "kitchen" version))
3875 "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg"))))
3876 (build-system python-build-system)
3878 (list python-chardet))
3879 (home-page "https://github.com/fedora-infra/kitchen")
3880 (synopsis "Python API for snippets")
3881 (description "@code{kitchen} module provides a python API for all sorts of
3882 little useful snippets of code that everybody ends up writing for their projects
3883 but never seem big enough to build an independent release. Use kitchen and stop
3884 cutting and pasting that code over and over.")
3885 (license (list license:lgpl2.1+
3886 ;; subprocess.py, test_subprocess.py,
3887 ;; kitchen/pycompat25/defaultdict.py:
3890 (define-public python-roman
3892 (name "python-roman")
3897 (uri (pypi-uri "roman" version))
3900 "0gyp2bmw47jgpm8j64gydzqq838bgxz5gh6cm57lxlr7p26sqiic"))))
3901 (build-system python-build-system)
3902 (home-page "https://github.com/zopefoundation/roman")
3903 (synopsis "Integer to Roman numerals converter")
3905 "This package provides a small helper library to convert Arabic Numbers
3906 to Roman Numerals.")
3907 (license license:psfl)))
3909 (define-public python-unidecode
3911 (name "python-unidecode")
3915 (uri (pypi-uri "Unidecode" version))
3918 "1s6cp2lv4m0f00hjckjz8p6m7d3n3v16jvg353llf5ia1iqsnsib"))))
3919 (build-system python-build-system)
3920 (home-page "https://pypi.org/project/Unidecode/")
3921 (synopsis "ASCII transliterations of Unicode text")
3923 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
3924 useful when integrating with legacy code that doesn't support Unicode, or for
3925 ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
3926 machine identifiers from human-readable Unicode strings that should still be
3927 somewhat intelligible.")
3928 (license license:gpl2+)))
3930 (define-public python-text-unidecode
3932 (name "python-text-unidecode")
3936 (uri (pypi-uri "text-unidecode" version))
3939 "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms"))))
3940 (build-system python-build-system)
3942 '(#:phases (modify-phases %standard-phases
3945 (invoke "pytest" "-vv"))))))
3947 (list python-pytest))
3948 (home-page "https://github.com/kmike/text-unidecode/")
3949 (synopsis "Decode Unicode data")
3951 "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode}
3952 Perl library. It can create ASCII representations of Unicode data. In general
3953 users should prefer the @code{python-unidecode} package which offers better
3954 memory usage and transliteration quality.")
3955 ;; The user can choose either license.
3956 (license (list license:clarified-artistic license:gpl2+))))
3958 (define-public python-pyjwt
3960 (name "python-pyjwt")
3965 (uri (pypi-uri "PyJWT" version))
3968 "1fmbcwfw1463wjzwbcgg3s16rad6kfb1mc5y7jbkp6v9ihh0hafl"))))
3969 (build-system python-build-system)
3971 '(#:phases (modify-phases %standard-phases
3973 (lambda* (#:key tests? #:allow-other-keys)
3975 (invoke "pytest" "-vv")))))))
3977 (list python-cryptography python-pytest))
3978 (home-page "https://github.com/progrium/pyjwt")
3979 (synopsis "JSON Web Token implementation in Python")
3981 "PyJWT is a JSON Web Token implementation written in Python.")
3982 (license license:expat)))
3984 (define-public python-pymsgbox
3986 (name "python-pymsgbox")
3992 ;; LICENSE.txt is not present on pypi
3993 (url "https://github.com/asweigart/PyMsgBox")
3994 (commit "55926b55f46caa969c5ddb87990ebea2737bd66f")))
3995 (file-name (git-file-name name version))
3998 "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg"))))
4000 ;; Circular dependency to run tests:
4001 ;; Tests need pyautogui, which depends on pymsgbox.
4003 (build-system python-build-system)
4004 (home-page "https://github.com/asweigart/PyMsgBox")
4005 (synopsis "Python module for JavaScript-like message boxes")
4007 "PyMsgBox is a simple, cross-platform, pure Python module for
4008 JavaScript-like message boxes. Types of dialog boxes include:
4016 (license license:bsd-3)))
4018 (define-public python-pympler
4020 (name "python-pympler")
4021 (home-page "https://pythonhosted.org/Pympler/")
4025 (uri (pypi-uri "Pympler" version))
4028 "1ynkqpv2akldmvkll5vh5zhwj433s1d59iv0f76lygyak4silgwr"))))
4029 (build-system python-build-system)
4030 (synopsis "Measure, monitor and analyze memory behavior")
4032 "Pympler is a development tool to measure, monitor and analyze
4033 the memory behavior of Python objects in a running Python application.
4035 By pympling a Python application, detailed insight in the size and the
4036 lifetime of Python objects can be obtained. Undesirable or unexpected
4037 runtime behavior like memory bloat and other @samp{pymples} can easily
4040 A web profiling frontend exposes process statistics, garbage
4041 visualisation and class tracker statistics.")
4042 (license license:asl2.0)))
4044 (define-public python-itsdangerous
4046 (name "python-itsdangerous")
4051 (uri (pypi-uri "itsdangerous" version))
4054 "1w6gfb2zhbcmrfj6digwzw1z68w6zg1q87rm6la2m412zil4swly"))))
4055 (build-system python-build-system)
4056 (home-page "https://palletsprojects.com/p/itsdangerous/")
4057 (synopsis "Python library for passing data to/from untrusted environments")
4059 "Itsdangerous provides various helpers to pass trusted data to untrusted
4060 environments and back.")
4061 (license license:bsd-3)))
4063 (define-public python-pyyaml
4065 (name "python-pyyaml")
4070 (uri (pypi-uri "PyYAML" version))
4073 "18imkjacvpxfgg1lbpraqywx3j7hr5dv99d242byqvrh2jf53yv8"))))
4074 (build-system python-build-system)
4076 (list libyaml python-cython))
4077 (home-page "https://pyyaml.org")
4078 (synopsis "YAML parser and emitter for Python")
4080 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
4081 complete YAML 1.1 parser, Unicode support, pickle support, capable extension
4082 API, and sensible error messages. PyYAML supports standard YAML tags and
4083 provides Python-specific tags that represent an arbitrary Python object.")
4084 (license license:expat)))
4086 (define-public python-pyyaml-5
4088 (inherit python-pyyaml)
4093 (uri (pypi-uri "PyYAML" version))
4096 "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))))
4098 (define-public python-vine
4100 (name "python-vine")
4105 (uri (pypi-uri "vine" version))
4107 (base32 "0zk3pm0g7s4qfn0gk28lfmsyplvisaxi6826cgpq5njkm4j1cfvx"))))
4108 (build-system python-build-system)
4110 (list python-pytest python-case))
4111 (home-page "https://github.com/celery/vine")
4112 (synopsis "Promises for Python")
4114 "@code{vine} provides a special implementation of promises in that it can
4115 be used both for \"promise of a value\" and lazy evaluation. The biggest
4116 upside for this is that everything in a promise can also be a promise,
4117 e.g. filters, callbacks and errbacks can all be promises.")
4118 (license license:bsd-3)))
4120 (define-public python-virtualenv
4122 (name "python-virtualenv")
4127 (uri (pypi-uri "virtualenv" version))
4130 "1nbhnpzswcf3lmzn5xabmfdd7ki8r2w2i37y6wml54di6qi1l48c"))))
4131 (build-system python-build-system)
4133 (list python-mock python-pytest python-setuptools-scm))
4135 (list python-appdirs python-distlib python-filelock python-six))
4136 (home-page "https://virtualenv.pypa.io/")
4137 (synopsis "Virtual Python environment builder")
4139 "Virtualenv is a tool to create isolated Python environments.")
4140 (license license:expat)))
4142 (define-public python-crossenv
4144 (name "python-crossenv")
4149 (uri (pypi-uri "crossenv" version))
4152 "07rv4650n19740ixmnsf4qbxyqlgi7f5m1cy8cq0gl01q3r6hps4"))))
4153 (build-system python-build-system)
4155 (list #:tests? #f)) ; tests not distributed on pypi
4156 (home-page "https://github.com/benfogle/virtualenv")
4157 (synopsis "Cross-compiling virtualenv for Python")
4158 (description "This package is a tool for cross-compiling extension
4159 modules. It creates a special virtual environment such that @command{pip} or
4160 @file{setup.py} will cross compile packages for you, usually with no further
4161 work on your part.")
4162 (license license:expat)))
4164 (define-public python-markdown-it-py
4166 (name "python-markdown-it-py")
4170 (uri (pypi-uri "markdown-it-py" version))
4173 "1nh75i72584r70alhqc479gys04s5m5g3vq601yf2njbs7z5jzng"))))
4174 (build-system python-build-system)
4177 #:tests? #f ;pypi source does not contains tests
4179 #~(modify-phases %standard-phases
4181 (lambda _ (invoke "flit" "build")))
4183 (lambda* (#:key inputs outputs #:allow-other-keys)
4184 (add-installed-pythonpath inputs outputs)
4187 (invoke "python" "-m" "pip" "install"
4188 wheel (string-append "--prefix=" #$output)))
4189 (find-files "dist" "\\.whl$")))))))
4190 (native-inputs (list python-flit))
4193 python-typing-extensions))
4194 (home-page "https://github.com/executablebooks/markdown-it-py")
4195 (synopsis "Python port of markdown-it")
4197 "This is a Python port of @code{markdown-it}, and some of its associated
4198 plugins. The driving design philosophy of the port has been to change as
4199 little of the fundamental code structure (file names, function name, etc) as
4201 (license license:expat)))
4203 (define-public python-markupsafe
4205 (name "python-markupsafe")
4210 (uri (pypi-uri "MarkupSafe" version))
4213 "02k2ynmqvvd0z0gakkf8s4idyb606r7zgga41jrkhqmigy06fk2r"))))
4214 (build-system python-build-system)
4216 `(#:phases (modify-phases %standard-phases
4218 (lambda* (#:key tests? #:allow-other-keys)
4220 (invoke "pytest" "-vv")))))))
4222 (list python-pytest))
4223 (home-page "https://github.com/mitsuhiko/markupsafe")
4224 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
4226 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
4228 (license license:bsd-3)))
4231 (define-public python-jinja2
4233 (name "python-jinja2")
4238 (uri (pypi-uri "Jinja2" version))
4241 "1saawzys14l1p4kafs7hkihmnvqjq8fwxjmkjiqx3jq1nm5ys2v4"))))
4242 (build-system python-build-system)
4244 '(#:phases (modify-phases %standard-phases
4246 (lambda* (#:key tests? #:allow-other-keys)
4248 (invoke "pytest" "-vv")
4249 (format #t "test suite not run~%")))))))
4250 (native-inputs (list python-pytest))
4251 (propagated-inputs (list python-markupsafe))
4252 (home-page "https://jinja.palletsprojects.com/")
4253 (synopsis "Python template engine")
4255 "Jinja2 is a small but fast and easy to use stand-alone template engine
4256 written in pure Python.")
4257 (license license:bsd-3)))
4260 (define-public python-jinja2-time
4262 (name "python-jinja2-time")
4267 (uri (pypi-uri "jinja2-time" version))
4270 "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni"))))
4271 (build-system python-build-system)
4273 (list python-arrow python-jinja2))
4275 "https://github.com/hackebrot/jinja2-time")
4276 (synopsis "Jinja2 Extension for Dates and Times")
4278 "This package provides an extension for the template engine Jinja2. It
4279 adds a 'now' tag providing a convenient access to the arrow.now() API from
4280 templates. A format string can be provided to control the output.")
4281 (license license:expat)))
4283 (define-public python-pysdl2
4285 (name "python-pysdl2")
4289 (uri (pypi-uri "PySDL2" version))
4292 "19id1qswgcj4v4j5kn49shq1xxx3slhjpm0102w87mczsdbi1rck"))))
4293 (build-system python-build-system)
4295 (list #:tests? #f ;; Requires /dev/dri, OpenGL module, etc.
4297 #~(modify-phases %standard-phases
4298 (add-after 'unpack 'patch-paths
4299 (lambda* (#:key inputs #:allow-other-keys)
4300 (substitute* "sdl2/dll.py"
4301 ;; Disable pysdl2-dll. It can't be packaged on GNU Guix
4302 ;; as it duplicates an existing package (sdl2).
4303 (("prepath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)")
4304 "prepath = \"system\"")
4305 (("^import sdl2dll$") "")
4306 (("postpath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)")
4307 "postpath = \"system\"")
4308 (("DLL\\(.*, os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)\\)")
4310 "DLL(\"SDL2\", [\"SDL2\", \"SDL2-2.0\", \"SDL2-2.0.0\"], \""
4311 (dirname (search-input-file inputs "/lib/libSDL2.so"))
4313 (substitute* "sdl2/sdlimage.py"
4314 (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
4317 (dirname (search-input-file inputs "/lib/libSDL2_image.so"))
4319 (substitute* "sdl2/sdlgfx.py"
4320 (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
4323 (dirname (search-input-file inputs "/lib/libSDL2_gfx.so"))
4325 (substitute* "sdl2/sdlmixer.py"
4326 (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
4329 (dirname (search-input-file inputs "/lib/libSDL2_mixer.so"))
4331 (substitute* "sdl2/sdlttf.py"
4332 (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
4335 (dirname (search-input-file inputs "/lib/libSDL2_ttf.so"))
4338 (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf))
4339 (home-page "https://github.com/py-sdl/py-sdl2")
4340 (synopsis "Python bindings around the SDL2 game development library")
4341 (description "PySDL2 is a pure Python wrapper around the @code{SDL2},
4342 @code{SDL2_mixer}, @code{SDL2_image}, @code{SDL2_ttf}, and @code{SDL2_gfx}
4343 libraries. Instead of relying on C code, it uses the built-in ctypes module
4344 to interface with SDL2, and provides simple Python classes and wrappers for
4345 common SDL2 functionality.")
4346 (license license:cc0)))
4348 (define-public python-pystache
4350 (name "python-pystache")
4354 (uri (pypi-uri "pystache" version))
4357 "03a73ppf5vxnsk6az5ackvc0hp6xqv2f4hi1s5c4nk4s2jr95gwk"))))
4358 (build-system python-build-system)
4360 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
4361 (home-page "http://defunkt.io/pystache/")
4362 (synopsis "Python logic-less template engine")
4364 "Pystache is a Python implementation of the framework agnostic,
4365 logic-free templating system Mustache.")
4366 (license license:expat)))
4368 (define-public python-pystitcher
4370 (name "python-pystitcher")
4377 (url "https://github.com/captn3m0/pystitcher")
4379 (string-append "v" version))))
4381 (git-file-name name version))
4383 (base32 "03yrzqhcsjdj5zprrk3bh5bbyqfy3vfhxra9974vmkir3m121394"))))
4384 (build-system python-build-system)
4386 (list python-html5lib python-importlib-metadata python-markdown
4387 python-pypdf3 python-validators))
4388 (home-page "https://github.com/captn3m0/pystitcher")
4389 (synopsis "Declaratively stitch together a PDF file from multiple sources")
4391 "This package stitches your PDF files together, generating customizable
4392 bookmarks using a declarative input in the form of a markdown file.")
4393 (license license:expat)))
4395 (define-public python-joblib
4397 (name "python-joblib")
4401 (uri (pypi-uri "joblib" version))
4404 "0d8ypyhsw1bjr96zan9ms8wbvnzbjqxniq4vcszghcrps7ngqn21"))))
4405 (build-system python-build-system)
4408 (modify-phases %standard-phases
4410 (lambda* (#:key tests? #:allow-other-keys)
4412 (setenv "JOBLIB_MULTIPROCESSING" "0")
4413 (invoke "pytest" "-v" "joblib"
4414 ;; We disable this test to avoid having to depend on ipython/jupyter
4415 "-k" "not test_parallel_call_cached_function_defined_in_jupyter")))))))
4417 (list python-pytest))
4418 (home-page "https://joblib.readthedocs.io/")
4419 (synopsis "Using Python functions as pipeline jobs")
4421 "Joblib is a set of tools to provide lightweight pipelining in Python.
4422 In particular, joblib offers: transparent disk-caching of the output values
4423 and lazy re-evaluation (memoize pattern), easy simple parallel computing
4424 logging and tracing of the execution.")
4425 (license license:bsd-3)))
4428 (define-public python-daemon
4430 (name "python-daemon")
4435 (uri (pypi-uri "python-daemon" version))
4438 "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx"))))
4439 (build-system python-build-system)
4442 (modify-phases %standard-phases
4443 (add-before 'check 'adjust-tests
4445 ;; Drop use of testtools.helpers.safe_hasattr which has
4446 ;; been removed in favor of hasattr.
4447 (substitute* "test/test_metadata.py"
4448 (("testtools\\.helpers\\.safe_hasattr")
4450 ;; FIXME: Determine why test fails
4451 (substitute* "test/test_daemon.py"
4452 (("test_detaches_process_context")
4453 "skip_test_detaches_process_context")))))))
4455 (list python-lockfile))
4457 (list python-coverage
4459 python-testscenarios
4463 (home-page "https://pagure.io/python-daemon/")
4464 (synopsis "Python library for making a Unix daemon process")
4465 (description "Python-daemon is a library that assists a Python program to
4466 turn itself into a well-behaved Unix daemon process, as specified in PEP 3143.
4468 This library provides a @code{DaemonContext} class that manages the following
4469 important tasks for becoming a daemon process:
4471 @item Detach the process into its own process group.
4472 @item Set process environment appropriate for running inside a chroot.
4473 @item Renounce suid and sgid privileges.
4474 @item Close all open file descriptors.
4475 @item Change the working directory, uid, gid, and umask.
4476 @item Set appropriate signal handlers.
4477 @item Open new file descriptors for stdin, stdout, and stderr.
4478 @item Manage a specified PID lock file.
4479 @item Register cleanup functions for at-exit processing.
4481 ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed.
4482 (license (list license:asl2.0 license:gpl3+))))
4484 (define-public python-anytree
4486 (name "python-anytree")
4490 (uri (pypi-uri "anytree" version))
4493 "1aycpc387wqz7h9w2p53qxn43qsh3m6by6ak4kkc66x9aprr63rz"))))
4494 (build-system python-build-system)
4501 (home-page "https://github.com/c0fec0de/anytree")
4502 (synopsis "Lightweight tree data library")
4504 "@code{anytree} is a simple, lightweight, and extensible tree data
4505 structure for Python.")
4506 (license license:asl2.0)))
4508 (define-public autokey
4515 (url "https://github.com/autokey/autokey")
4516 (commit (string-append "v" version))))
4517 (file-name (git-file-name name version))
4520 "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr"))))
4521 (build-system python-build-system)
4524 ;; Tests are deprecated and broken until next version, see
4525 ;; https://github.com/autokey/autokey/issues/327
4528 #~(modify-phases %standard-phases
4529 (add-after 'unpack 'fix-paths
4530 (lambda* (#:key inputs #:allow-other-keys)
4531 (substitute* "lib/autokey/scripting.py"
4533 (string-append "\"" (search-input-file inputs "bin/wmctrl") "\""))
4535 (string-append "\"" (search-input-file inputs "bin/zenity") "\"")))
4536 (substitute* "autokey-shell"
4538 (string-append "'" (search-input-file inputs "bin/ipython3") "'"))
4540 (string-append "'" (search-input-file inputs "bin/python3") "'")))))
4541 ;; Use 'prefix' instead of '=' to allow the user to use additional
4542 ;; GI paths from their autokey scripts. GUIX_PYTHONPATH is already
4543 ;; wrapped with prefix in python-build-system's wrap.
4544 (add-before 'wrap 'wrap-autokey-gi
4546 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
4549 (wrap-program program
4550 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
4552 (string-append #$output "/bin/" name))
4554 "autokey-shell")))))))))
4556 (list bash-minimal ; for wrap-program
4564 python-pyqt+qscintilla
4568 (home-page "https://github.com/autokey/autokey")
4570 "Keyboard and GUI automation utility")
4572 "AutoKey is a desktop automation utility for X11. It allows the automation of
4573 virtually any task by responding to typed abbreviations and hotkeys. It
4574 offers a full-featured GUI (GTK and QT versions) that makes it highly
4575 accessible for novices, as well as a scripting interface offering the full
4576 flexibility and power of the Python language.")
4577 (license license:gpl3+)))
4579 (define-public python-docutils
4581 (name "python-docutils")
4586 (uri (pypi-uri "docutils" version))
4589 "09gii36lp1bs26cpxqyfd20xahnpbrbjzcnba2xq08y3wk97frb8"))))
4590 (build-system python-build-system)
4592 '(#:phases (modify-phases %standard-phases
4594 (lambda* (#:key tests? #:allow-other-keys)
4596 (invoke "python" "test/alltests.py")
4597 (format #t "test suite not run~%"))
4599 (home-page "http://docutils.sourceforge.net/")
4600 (synopsis "Python Documentation Utilities")
4602 "Docutils is a modular system for processing documentation into useful
4603 formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an
4604 easy to use markup language, for input.
4606 This package provides tools for converting @file{.rst} files to other formats
4607 via commands such as @command{rst2man}, as well as supporting Python code.")
4608 ;; Most of the source code is public domain, but some source files are
4609 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
4610 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
4612 ;; TODO: Make this the default in the next rebuild cycle.
4613 (define-public python-docutils-0.19
4615 (inherit python-docutils)
4619 (uri (pypi-uri "docutils" version))
4622 "1rprvir116g5rz2bgzkzgyn6mv0z8582rz7bgxbpy2y3adkmm69k"))))))
4624 ;; awscli refuses to be built with docutils < 0.16.
4625 (define-public python-docutils-0.15
4627 (inherit python-docutils)
4631 (uri (pypi-uri "docutils" version))
4634 "0ja8q6mdj6xv62jjw3phv8j5nfqi5x8hnfy4pqfcjcgz4b34k8sl"))))
4635 ;; tests contain Python 2 syntax.
4636 (arguments '(#:tests? #false))))
4638 (define-public python-restructuredtext-lint
4640 (name "python-restructuredtext-lint")
4645 (uri (pypi-uri "restructuredtext-lint" version))
4648 "026rdy5h82ng4vqxk8fnprii9d6qxf7hkygiv0a8afjvdlsxmcwp"))))
4649 (build-system python-build-system)
4652 (modify-phases %standard-phases
4654 (add-after 'install 'check
4655 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
4657 (add-installed-pythonpath inputs outputs)
4658 (invoke "nosetests" "-v"))
4661 (list python-docutils))
4664 (home-page "https://github.com/twolfson/restructuredtext-lint")
4665 (synopsis "reStructuredText linter")
4666 (description "This package provides a linter for the reStructuredText
4668 (license license:unlicense)))
4670 (define-public python-click-repl
4672 (name "python-click-repl")
4676 (method git-fetch) ; no tests in PyPI release
4678 (url "https://github.com/click-contrib/click-repl")
4680 (file-name (git-file-name name version))
4682 (base32 "16ybsnwlj2jlqcfxflky8jz7i3nhrd3f6mvkpgs95618l8lx994i"))))
4683 (build-system python-build-system)
4686 (modify-phases %standard-phases
4688 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
4690 (add-installed-pythonpath inputs outputs)
4691 (invoke "python" "-m" "pytest")))))))
4693 (list python-pytest))
4695 (list python-click python-prompt-toolkit python-six))
4696 (home-page "https://github.com/untitaker/click-repl")
4697 (synopsis "REPL plugin for Click")
4698 (description "This package provides a REPL plugin for Click.")
4699 (license license:expat)))
4701 (define-public python-doc8
4703 (name "python-doc8")
4708 (uri (pypi-uri "doc8" version))
4711 "0hw5w8mpgsp51qg8nnq28p7y1jiksvz7a0axnn5bkgss3af9zy1d"))))
4712 (build-system python-build-system)
4715 (modify-phases %standard-phases
4717 (add-after 'install 'check
4718 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
4720 (add-installed-pythonpath inputs outputs)
4721 (invoke "pytest" "-v"))
4724 (list python-chardet python-docutils python-restructuredtext-lint
4725 python-six python-stevedore))
4727 (list python-testtools python-pytest))
4728 (home-page "https://launchpad.net/doc8")
4730 "Style checker for Sphinx (or other) RST documentation")
4732 "Doc8 is an opinionated style checker for reStructured Text and plain
4733 text styles of documentation.")
4734 (license license:asl2.0)))
4736 (define-public python-pygments
4738 (name "python-pygments")
4743 (uri (pypi-uri "Pygments" version))
4746 "1sr6iqh21xi6p8aba4wa9pqfhjbbpcvn9jcsx0ggy4lniw8idcay"))))
4747 (build-system python-build-system)
4749 ;; FIXME: Tests require sphinx, which depends on this.
4751 (home-page "https://pygments.org/")
4752 (synopsis "Syntax highlighting")
4754 "Pygments is a syntax highlighting package written in Python.")
4755 (license license:bsd-2)))
4757 (define-public python-pygments-github-lexers
4759 (name "python-pygments-github-lexers")
4764 (uri (pypi-uri "pygments-github-lexers" version))
4767 "0cz14clcc9z4pn79ll8hp3xzgsrfjscak5zfsvlgrz6ngkkmgjma"))))
4768 (build-system python-build-system)
4770 (list python-pygments))
4771 (home-page "https://github.com/liluo/pygments-github-lexers")
4772 (synopsis "Pygments Github custom lexers")
4773 (description "This package installs Github custom lexers to Pygments.")
4774 (license license:bsd-3)))
4776 (define-public python-bump2version
4778 (name "python-bump2version")
4783 (uri (pypi-uri "bump2version" version))
4785 (base32 "1rinm4gv1fyh7xjv3v6r1p3zh5kl4ry2qifz5f7frx31mnzv4b3n"))))
4786 (build-system python-build-system)
4788 ;; XXX: Tests fail with "bumpversion: error: the following arguments are
4789 ;; required: --new-version".
4791 (home-page "https://github.com/c4urself/bump2version")
4792 (synopsis "Version-bump your software with a single command!")
4794 "This package provides a small command line tool to simplify releasing
4795 software by updating all version strings in your source code by the correct
4796 increment. It also creates commits and tags.")
4797 (license license:expat)))
4799 (define-public python-bumpversion
4801 (name "python-bumpversion")
4806 (uri (pypi-uri "bumpversion" version))
4809 "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37"))))
4810 (build-system python-build-system)
4811 (home-page "https://github.com/peritus/bumpversion")
4812 (synopsis "Tool to bump software version")
4813 (description "This tool provides a command-line interface (CLI) to bump a
4814 software version simply.")
4815 (license license:expat)))
4817 (define-public python-deprecated
4819 (name "python-deprecated")
4825 (url "https://github.com/tantale/deprecated")
4826 (commit (string-append "v" version))))
4827 (file-name (git-file-name name version))
4830 "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c"))))
4831 (build-system python-build-system)
4833 `(#:phases (modify-phases %standard-phases
4835 (lambda* (#:key tests? #:allow-other-keys)
4837 (invoke "pytest")))))))
4839 (list python-wrapt))
4841 (list python-bumpversion python-pytest python-pytest-cov
4842 python-sphinx python-tox))
4843 (home-page "https://github.com/tantale/deprecated")
4844 (synopsis "Python decorator to deprecate classes, functions or methods")
4845 (description "The @code{deprecated} decorator provides a convenient way to deprecate
4846 to deprecate classes, functions or methods.")
4847 (license license:expat)))
4849 (define-public python-pygithub
4851 (name "python-pygithub")
4854 ;; We fetch from the Git repo because there are no tests in the PyPI
4859 (url "https://github.com/PyGithub/PyGithub")
4860 (commit (string-append "v" version))))
4861 (file-name (git-file-name name version))
4863 (base32 "082bxffpy4h97dsay3l75cpgfjj10kywkvicnm6xscwvah285q9y"))))
4864 (build-system python-build-system)
4867 (modify-phases %standard-phases
4869 (lambda* (#:key tests? #:allow-other-keys)
4874 (list python-cryptography python-deprecated python-pyjwt
4875 python-pynacl python-requests))
4877 (list python-httpretty python-pytest))
4878 (home-page "https://pygithub.readthedocs.io/en/latest/")
4879 (synopsis "Python library for the GitHub API")
4880 (description "This library allows managing GitHub resources such as
4881 repositories, user profiles, and organizations in your Python applications,
4882 using version 3 of the GitHub application programming interface (API).")
4883 (license license:lgpl3+)))
4885 (define-public python-rellu
4887 (name "python-rellu")
4892 (uri (pypi-uri "rellu" version))
4895 "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x"))))
4896 (build-system python-build-system)
4898 (list python-invoke python-pygithub))
4899 (home-page "https://github.com/robotframework/rellu")
4900 (synopsis "Utilities to create PyPI releases")
4901 (description "This collection of utilities contains tooling and templates
4902 to assist in creating releases on GitHub and publishing them on PyPI. It is
4903 designed to be used by Robot Framework and tools and libraries in its
4904 ecosystem, but can naturally be used also by other projects.")
4905 (license license:asl2.0)))
4907 (define-public python-robotframework
4909 (name "python-robotframework")
4911 ;; There are no tests in the PyPI archive.
4916 (url "https://github.com/robotframework/robotframework")
4917 (commit (string-append "v" version))))
4918 (file-name (git-file-name name version))
4920 (base32 "0jjr71npzrm5mv16pya3m2dqaqgf6sc45yca5kfmc5lfislig5b8"))
4921 (patches (search-patches
4922 "python-robotframework-atest.patch"
4923 "python-robotframework-source-date-epoch.patch"))))
4924 (build-system python-build-system)
4927 #:modules '((guix build python-build-system)
4933 #~(modify-phases %standard-phases
4934 (add-after 'unpack 'delete-problematic-tests
4936 ;; Tests such as 'Tilde and username in path' rely on HOME and
4937 ;; USER being set, on top of the user's /etc/passwd home
4938 ;; directory not being '/', as is the case in the Guix build
4940 (delete-file "atest/robot/standard_libraries/\
4941 operating_system/path_expansion.robot")))
4942 (add-before 'build 'build-and-install-doc
4943 (lambda* (#:key outputs #:allow-other-keys)
4944 (let ((doc (string-append (assoc-ref outputs "doc")
4945 "/share/doc/robotframework")))
4946 (invoke "invoke" "library-docs" "all")
4947 (invoke "doc/userguide/ug2html.py" "dist") ;user guide
4949 (with-directory-excursion "dist"
4950 (define user-guide-dir
4951 (match (scandir "." (cut string-prefix?
4952 "robotframework-userguide-" <>))
4954 (_ (error "could not find the user guide directory"))))
4955 (copy-recursively user-guide-dir doc)))))
4957 (lambda* (#:key native-inputs inputs tests?
4960 ;; Some tests require timezone data. Otherwise, they
4961 ;; look up /etc/localtime, which doesn't exist, and
4964 ;; OverflowError: mktime argument out of range
4966 (search-input-directory
4967 (or native-inputs inputs) "share/zoneinfo"))
4968 (setenv "TZ" "Europe/Paris")
4970 (format #t "Running unit tests...~%")
4971 (invoke "utest/run.py")
4973 (format #t "Running acceptance tests...~%")
4974 (invoke "xvfb-run" "atest/run.py")))))))
4976 (list python-docutils
4977 python-jsonschema-next
4983 `(,python "tk") ;used when building the HTML doc
4985 scrot ;for taking screenshots
4988 (outputs '("out" "doc"))
4989 (home-page "https://robotframework.org")
4990 (synopsis "Generic automation framework")
4991 (description "Robot Framework is a generic automation framework for
4992 acceptance testing, acceptance test driven development (ATDD), and robotic
4993 process automation (RPA).")
4994 (license license:asl2.0)))
4996 (define-public python-robotframework-datadriver
4998 (name "python-robotframework-datadriver")
5003 (uri (pypi-uri "robotframework-datadriver" version))
5005 (base32 "0mcyr3v98nvfnvffy096qp3jqslas7l8hh0j00lpi0mp12cd0qk9"))))
5006 (build-system python-build-system)
5009 (modify-phases %standard-phases
5010 (add-before 'check 'skip-problematic-tests
5012 ;; The test file 'tab-csv-file-name.tsv' contains special
5013 ;; characters for which there is no locale in the build
5014 ;; environment, causing one test to fail.
5015 (delete-file-recursively "atest/TestCases/csv_reader_config")))
5017 (lambda* (#:key tests? #:allow-other-keys)
5019 (with-directory-excursion "atest"
5020 (invoke "sh" "run_atest.sh"))))))))
5021 (native-inputs (list python-docutils
5022 python-robotframework-stacktrace))
5023 (propagated-inputs (list python-openpyxl
5026 python-robotframework))
5027 (home-page "https://github.com/Snooz82/robotframework-datadriver")
5028 (synopsis "Data-driven test extension for Robot Framework")
5029 (description "DataDriver is a data-driven extension for Robot Framework.
5030 DataDriver uses the Listener Interface of Robot Framework to create new test
5031 cases based on a data file that contains the test data. DataDriver supports
5032 data files in the CSV, XLS or XLSX formats.")
5033 (license license:asl2.0)))
5035 (define-public python-robotframework-lint
5036 ;; There is no properly tagged release; the commit below seems to correspond
5037 ;; to the 0.9 stable release available from PyPI. The tests are not
5038 ;; included in the PyPI archive, so we fetch the sources from the upstream
5040 (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f")
5043 (name "python-robotframework-lint")
5044 (version (git-version "1.1" ;version taken from 'rflint/version.py'
5050 (url "https://github.com/boakley/robotframework-lint")
5052 (file-name (git-file-name name version))
5055 "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b"))))
5056 (build-system python-build-system)
5059 (modify-phases %standard-phases
5062 (invoke "python" "-m" "robot" "-A"
5063 "tests/conf/default.args" "tests"))))))
5065 (list python-robotframework))
5066 (home-page "https://github.com/boakley/robotframework-lint/")
5067 (synopsis "Static analysis tool (linter) for Robot Framework")
5068 (description "This package provides the @code{rflint} command-line
5069 utility, a static analysis tool (linter) for Robot Framework source files.")
5070 (license license:asl2.0))))
5072 (define-public python-robotframework-pabot
5074 (name "python-robotframework-pabot")
5078 ;; There are no tests in the PyPI archive.
5081 (url "https://github.com/mkorpela/pabot")
5083 (file-name (git-file-name name version))
5086 "0246vvyaxax0nzlrffvp9vg6mh5jmvbbm87azignf0gakjidr7nn"))))
5087 (build-system python-build-system)
5090 #:phases #~(modify-phases %standard-phases
5092 (lambda* (#:key tests? #:allow-other-keys)
5094 (invoke "pytest" "-vv" "tests")))))))
5096 (list python-robotframework python-robotframework-stacktrace))
5098 (list python-pytest))
5099 (home-page "https://pabot.org")
5100 (synopsis "Parallel test runner for Robot Framework")
5101 (description "Pabot is a parallel executor for Robot Framework tests.")
5102 (license license:asl2.0)))
5104 (define-public python-sshtunnel
5106 (name "python-sshtunnel")
5110 (uri (pypi-uri "sshtunnel" version))
5113 "1z7rdgpp9m36ysh9pfzrn3vyiaj05bkjvcjdhj8vz0fvfjkhxjz7"))))
5114 (build-system python-build-system)
5117 (modify-phases %standard-phases
5119 (lambda* (#:key tests? #:allow-other-keys)
5120 (when tests? (invoke "pytest" "-vv" "tests")))))))
5121 (propagated-inputs (list python-paramiko))
5122 (native-inputs (list openssh python-pytest))
5123 (home-page "https://github.com/pahaz/sshtunnel")
5124 (synopsis "Python SSH tunnels library")
5125 (description "@code{sshtunnel} is a Python module for easily creating SSH
5126 tunnels in the background, using Python.")
5127 (license license:expat)))
5129 (define-public python-robotframework-sshtunnellibrary
5131 (name "python-robotframework-sshtunnellibrary")
5136 (url "https://github.com/C-Squad/robotframework-sshtunnellibrary")
5137 (commit (string-append "v" version))))
5138 (file-name (git-file-name name version))
5141 "1vkkmkb8iql13xpbyj4hvnnmfgzqlr8rffgryp2082cadb3w7xrd"))))
5142 (build-system python-build-system)
5144 (list #:phases #~(modify-phases %standard-phases
5146 (lambda* (#:key tests? #:allow-other-keys)
5148 (invoke "python" "-m" "unittest"
5149 "discover" "-s" "test")))))))
5150 (propagated-inputs (list python-robotframework python-sshtunnel))
5151 (home-page "https://github.com/C-Squad/robotframework-sshtunnellibrary")
5152 (synopsis "Alternative RobotFramework library for SSH tunnels")
5153 (description "SSHTunnelLibrary is an alternative RobotFramework
5154 library (to the more official one that comes from the
5155 @code{robotframework-sshlibrary} package) to support SSH tunnels.")
5156 (license license:asl2.0)))
5158 (define-public python-robotframework-stacktrace
5160 (name "python-robotframework-stacktrace")
5165 (uri (pypi-uri "robotframework-stacktrace" version))
5167 (base32 "19gnwr7da1zz9clhwsmvqfjf02d195i61lzpq4253dcsgrpb6v79"))))
5168 (build-system python-build-system)
5170 ;; The test suite fails (see:
5171 ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4).
5174 (modify-phases %standard-phases
5176 (lambda* (#:key tests? #:allow-other-keys)
5178 (with-directory-excursion "tests"
5179 (invoke "python" "-m" "robot" "."))))))))
5180 (propagated-inputs (list python-robotframework))
5181 (home-page "https://github.com/MarketSquare/robotframework-stacktrace")
5182 (synopsis "Robot Framework listener to print a stack trace on error")
5183 (description "StackTrace is a Robot Framework listener that prints a stack
5184 trace directly to the terminal to ease debugging.")
5185 (license license:asl2.0)))
5187 (define-public python-robotframework-sshlibrary
5189 (name "python-robotframework-sshlibrary")
5191 ;; There are no tests in the PyPI archive.
5196 (url "https://github.com/robotframework/SSHLibrary")
5197 (commit (string-append "v" version))))
5198 (file-name (git-file-name name version))
5201 "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw"))
5202 (patches (search-patches
5203 "python-robotframework-sshlibrary-rf5-compat.patch"))))
5204 (build-system python-build-system)
5207 (modify-phases %standard-phases
5208 (add-before 'build 'build-and-install-doc
5209 (lambda* (#:key outputs #:allow-other-keys)
5210 (let ((doc (string-append
5211 (assoc-ref outputs "doc")
5212 "/share/doc/robotframework-sshlibrary")))
5213 (invoke "chmod" "-R" "+w" "docs")
5214 (invoke "invoke" "kw-docs" "project-docs")
5216 (for-each delete-file (find-files "docs" "\\.rst"))
5217 (copy-recursively "docs" doc))))
5219 (lambda* (#:key tests? #:allow-other-keys)
5221 ;; Some tests require an SSH server; we remove them.
5222 (delete-file "utest/test_client_api.py")
5223 (delete-file "utest/test_scp.py")
5224 (invoke "python" "utest/run.py")))))))
5226 (list python-robotframework python-paramiko python-scp))
5230 ;; To generate the documentation
5235 (outputs '("out" "doc"))
5236 (home-page "https://github.com/robotframework/SSHLibrary")
5237 (synopsis "Robot Framework library for SSH and SFTP")
5238 (description "SSHLibrary is a Robot Framework library providing support
5239 for SSH and SFTP. It has the following main usages:
5241 @item Executing commands on the remote machine, either blocking or non-blocking.
5242 @item Writing and reading in an interactive shell.
5243 @item Transferring files and directories over SFTP.
5244 @item Ensuring that files and directories exist on the remote machine.
5246 (license license:asl2.0)))
5248 (define-public python-robotframework-pythonlibcore
5250 (name "python-robotframework-pythonlibcore")
5254 (method git-fetch) ;no tests in pypi archive
5256 (url "https://github.com/robotframework/PythonLibCore")
5257 (commit (string-append "v" version))))
5258 (file-name (git-file-name name version))
5261 "0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4"))))
5262 (build-system python-build-system)
5264 `(#:phases (modify-phases %standard-phases
5266 (lambda* (#:key tests? #:allow-other-keys)
5268 (invoke "utest/run.py")))))))
5270 (list python-pytest python-pytest-cov python-pytest-mockito
5271 python-robotframework))
5272 (home-page "https://github.com/robotframework/PythonLibCore")
5273 (synopsis "Robot Framework Python library tools")
5274 (description "PythonLibCore provides tools for creating larger test
5275 libraries for Robot Framework using Python. The Robot Framework hybrid and
5276 dynamic library APIs give more flexibility for library than the static library
5277 API, but they also set requirements for libraries which need to be implemented
5278 in the library side. PythonLibCore eases the problem by providing a simpler
5279 interface and by handling all the requirements towards the Robot Framework
5281 (license license:asl2.0)))
5283 (define-public python-robotframework-seleniumlibrary
5285 (name "python-robotframework-seleniumlibrary")
5290 (uri (pypi-uri "robotframework-seleniumlibrary" version))
5292 (base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm"))))
5293 (build-system python-build-system)
5294 ;; XXX: Tests require ungoogled-chromium, but the chromium module would
5295 ;; introduce a cycle if imported here.
5297 (list python-robotframework python-robotframework-pythonlibcore
5299 (home-page "https://github.com/robotframework/SeleniumLibrary")
5300 (synopsis "Web testing library for Robot Framework")
5301 (description "SeleniumLibrary is a web testing library for Robot Framework
5302 that utilizes the Selenium tool internally.")
5303 (license license:asl2.0)))
5305 (define-public python-robotframework-seleniumscreenshots
5307 (name "python-robotframework-seleniumscreenshots")
5312 (uri (pypi-uri "robotframework-seleniumscreenshots" version))
5314 (base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0"))))
5315 (build-system python-build-system)
5317 ;; XXX: The tests require a relatively complicated setup configured in
5318 ;; their CI with Nix (!).
5321 (list python-robotframework python-robotframework-seleniumlibrary))
5322 (home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots")
5323 (synopsis "Robot Framework library for annotating and cropping screenshots")
5324 (description "The SeleniumScreenshots library for Robot Framework provides
5325 keywords for annotating and cropping screenshots taken with SeleniumLibrary.
5326 It is useful for scripting automatically updated screenshots for documentation
5327 or for visual regression testing purposes.")
5328 (license license:bsd-3)))
5330 (define-public python-rstr
5332 (name "python-rstr")
5337 (uri (pypi-uri "rstr" version))
5340 "197dw8mbq0pjjz1l6h1ksi62vgn7x55d373ch74y06744qiq5sjx"))))
5341 (build-system python-build-system)
5342 (home-page "https://github.com/leapfrogonline/rstr")
5343 (synopsis "Generate random strings in Python")
5344 (description "This package provides a python module for generating
5345 random strings of various types. It could be useful for fuzz testing,
5346 generating dummy data, or other applications. It has no dependencies
5347 outside the standard library.")
5348 (license license:bsd-3)))
5350 (define-public python-scp
5357 (uri (pypi-uri "scp" version))
5359 (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb"))))
5360 (build-system python-build-system)
5362 '(#:tests? #f)) ;tests require an SSH server
5364 (list python-paramiko))
5365 (home-page "https://github.com/jbardin/scp.py")
5366 (synopsis "SCP protocol module for Python and Paramiko")
5367 (description "The scp module extends the Paramiko library to send and
5368 receive files via the SCP1 protocol, as implemented by the OpenSSH
5369 @command{scp} program.")
5370 (license license:gpl2+)))
5372 (define-public python-rst.linker
5374 (name "python-rst.linker")
5379 (uri (pypi-uri "rst.linker" version))
5381 (base32 "0pqsfqqx8h0pq21k8l3k62kznrgaj2ala93c64s4d9rpbr4mgkd2"))))
5382 (build-system python-build-system)
5384 (list python-dateutil python-six))
5386 (list python-setuptools-scm))
5387 ;; Test would require path.py, which would introduce a cyclic dependence.
5388 (arguments `(#:tests? #f))
5389 ;; Note: As of version 1.7 the documentation is not worth building.
5390 (home-page "https://github.com/jaraco/rst.linker")
5391 (synopsis "Sphinx plugin to add links and timestamps")
5392 (description "rst.linker automatically replaces text by a
5393 reStructuredText external reference or timestamps. It's primary purpose is to
5394 augment the changelog, but it can be used for other documents, too.")
5395 (license license:expat)))
5397 (define-public python-sshpubkeys
5399 (name "python-sshpubkeys")
5401 (home-page "https://github.com/ojarva/python-sshpubkeys")
5406 (commit (string-append "v" version))))
5407 (file-name (git-file-name name version))
5410 "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq"))))
5411 (build-system python-build-system)
5413 (list python-cryptography python-ecdsa))
5414 (synopsis "OpenSSH public key parser")
5416 "This package provides a library for parsing and validating OpenSSH
5418 (license license:bsd-3)))
5420 (define-public python-feedgenerator
5422 (name "python-feedgenerator")
5427 (uri (pypi-uri "feedgenerator" version))
5430 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
5431 (modules '((guix build utils)))
5434 ;; Remove pre-compiled .pyc files from source.
5435 (for-each delete-file-recursively
5436 (find-files "." "__pycache__" #:directories? #t))
5437 (for-each delete-file (find-files "." "\\.pyc$"))
5439 (build-system python-build-system)
5441 (list python-pytz python-six))
5442 (home-page "https://github.com/getpelican/feedgenerator")
5444 "Standalone version of Django's Atom/RSS feed generator")
5446 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
5447 which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
5448 (license license:bsd-3)))
5450 (define-public python-lsp-jsonrpc
5452 (name "python-lsp-jsonrpc")
5457 (uri (pypi-uri "python-lsp-jsonrpc" version))
5460 "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v"))))
5461 (build-system python-build-system)
5463 (list python-mock python-pytest))
5465 (list python-ujson))
5466 (home-page "https://github.com/python-lsp/python-lsp-jsonrpc")
5467 (synopsis "JSON RPC 2.0 server library")
5469 "This package provides a JSON RPC 2.0 server library for Python.")
5470 (license license:expat)))
5472 (define-public python-jsonrpc-server
5473 (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc))
5475 (define-public python-pydantic
5477 (name "python-pydantic")
5483 (url "https://github.com/samuelcolvin/pydantic")
5484 (commit (string-append "v" version))))
5485 (file-name (git-file-name name version))
5487 (base32 "1406kgppqa7524mxllsipj7gb8fn7pwf51l11lqik59xjhsfv94f"))))
5488 (build-system python-build-system)
5491 (modify-phases %standard-phases
5493 (lambda _ (invoke "pytest" "-vv"))))))
5495 (list python-pytest python-pytest-mock))
5497 (list python-typing-extensions))
5498 (home-page "https://github.com/samuelcolvin/pydantic")
5499 (synopsis "Python data validation and settings management")
5501 "Pydantic enforces type hints at runtime, and provides user friendly
5502 errors when data is invalid.")
5503 (license license:expat)))
5505 (define-public python-pydantic-cli
5507 (name "python-pydantic-cli")
5511 (method git-fetch) ;for tests
5513 (url "https://github.com/mpkocher/pydantic-cli")
5514 (commit (string-append "v" version))))
5515 (file-name (git-file-name name version))
5518 "1v4dx6n60rbsan5zpw2rgdih7lb3h0xclagn1p6zfwl0r9l9cvym"))))
5519 (build-system python-build-system)
5521 (list python-pydantic))
5526 (home-page "https://github.com/mpkocher/pydantic-cli")
5527 (synopsis "Turn Pydantic defined data models into CLI tools")
5529 "@code{python-pydantic} enables specifying @acronym{CLI, Command Line
5530 Interfaces} via data models provided in the JSON format.")
5531 (license license:expat)))
5533 (define-public python-pydocstyle
5535 (name "python-pydocstyle")
5540 (uri (pypi-uri "pydocstyle" version))
5543 "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap"))))
5544 (build-system python-build-system)
5546 (list python-six python-snowballstemmer))
5548 "https://github.com/PyCQA/pydocstyle/")
5549 (synopsis "Python docstring style checker")
5551 "This package provides a style checker for the Python Language
5553 (license license:expat)))
5555 (define-public python-lsp-server
5557 (name "python-lsp-server")
5562 (uri (pypi-uri "python-lsp-server" version))
5565 "0h6wxzmm6qjfwkkn3mnzn1fpmcp23fpbk74bi8p540q1nzccqj0v"))))
5566 (build-system python-build-system)
5569 (modify-phases %standard-phases
5570 (add-before 'check 'set-HOME
5571 (lambda _ (setenv "HOME" "/tmp")))
5574 ;; Disable failing test.
5575 (invoke "python" "-m" "pytest" "-k"
5576 "not test_pyqt_completion"))))))
5578 (list python-autopep8
5591 (list python-coverage
5601 (home-page "https://github.com/python-lsp/python-lsp-server")
5602 (synopsis "Python implementation of the Language Server Protocol")
5604 "The Python Language Server @command{pylsp} is an implementation of the
5605 Python 3 language specification for the Language Server Protocol (LSP).
5606 This tool is used in text editing environments to provide a complete
5607 and integrated feature-set for programming Python effectively.")
5608 (license license:expat)))
5610 (define-public python-language-server
5611 (deprecated-package "python-language-server" python-lsp-server))
5613 (define-public python-pathspec
5615 (name "python-pathspec")
5620 (uri (pypi-uri "pathspec" version))
5623 "1cdbdb3s6ldnjpwbi0bgl0xlmw4mbfxk08bbdxc3srx26na4jr75"))))
5624 (build-system python-build-system)
5625 (home-page "https://github.com/cpburnz/python-path-specification")
5626 (synopsis "Utility library for gitignore style pattern matching of file paths")
5628 "This package provides a utility library for gitignore style pattern
5629 matching of file paths.")
5630 (license license:mpl2.0)))
5632 (define-public python-black
5634 (name "python-black")
5639 (uri (pypi-uri "black" version))
5642 "0yfahlqc7dsdp1js0cbv706apldnfnlbal9b53cww8n0hs40n0im"))))
5643 (build-system python-build-system)
5646 (modify-phases %standard-phases
5647 (add-after 'patch-source-shebangs 'use-absolute-file-names
5648 (lambda* (#:key native-inputs inputs #:allow-other-keys)
5649 (let* ((inpts (or native-inputs inputs))
5650 (python3 (search-input-file inpts "/bin/python3")))
5651 (substitute* (find-files "tests" "\\.py$")
5652 (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version)
5653 (string-append "#!" python3 (if (string? minor-version)
5657 (lambda* (#:key tests? #:allow-other-keys)
5658 (when tests? (invoke "pytest" "-vv")))))))
5664 python-mypy-extensions
5669 python-typing-extensions))
5671 (list python-pytest python-pytest-aiohttp python-setuptools-scm))
5672 (home-page "https://github.com/psf/black")
5673 (synopsis "The uncompromising code formatter")
5674 (description "Black is the uncompromising Python code formatter.")
5675 (license license:expat)))
5677 (define-public python-black-macchiato
5679 (name "python-black-macchiato")
5684 (uri (pypi-uri "black-macchiato" version))
5687 "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i"))))
5688 (build-system python-build-system)
5690 (list python-black))
5691 (home-page "https://github.com/wbolster/black-macchiato")
5692 (synopsis "Partial @code{python-black} formatting")
5694 "This package is built on top the @{python-black} code formatter to
5695 enable formatting of partial files.")
5696 (license license:bsd-3)))
5698 (define-public python-blinker
5700 (name "python-blinker")
5705 (uri (pypi-uri "blinker" version))
5708 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
5709 (build-system python-build-system)
5710 (home-page "https://pythonhosted.org/blinker/")
5711 (synopsis "Fast, simple object-to-object and broadcast signaling")
5713 "Blinker provides a fast dispatching system that allows any number of
5714 interested parties to subscribe to events, or \"signals\".")
5715 (license license:expat)))
5717 (define-public pelican
5724 (uri (pypi-uri "pelican" version))
5726 (base32 "0m1kndc98hhnlq0yl05f4lzccw555pkxnrajj6lks18yh491kw8w"))))
5727 (build-system python-build-system)
5729 (list python-blinker
5731 ;; Ignoring `guix lint` warning as python-docutils is used to support
5732 ;; reStructuredText processing at runtime.
5734 python-feedgenerator
5741 (home-page "https://blog.getpelican.com/")
5743 `(;; XXX Requires a lot more packages to do unit tests :P
5745 (synopsis "Python-based static site publishing system")
5747 "Pelican is a tool to generate a static blog from reStructuredText,
5748 Markdown input files, and more. Pelican uses Jinja2 for templating
5749 and is very extensible.")
5750 (license license:agpl3+)))
5752 (define-public mallard-ducktype
5754 (name "mallard-ducktype")
5759 ;; git-reference because tests are not included in pypi source tarball
5760 ;; https://issues.guix.gnu.org/issue/36755#2
5762 (url "https://github.com/projectmallard/mallard-ducktype")
5764 (file-name (git-file-name name version))
5767 "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c"))))
5768 (build-system python-build-system)
5771 (modify-phases %standard-phases
5774 (with-directory-excursion "tests"
5775 (invoke "sh" "runtests")))))))
5776 (home-page "http://projectmallard.org")
5777 (synopsis "Convert Ducktype to Mallard documentation markup")
5779 "Ducktype is a lightweight syntax that can represent all the semantics
5780 of the Mallard XML documentation system. Ducktype files can be converted to
5781 Mallard using the @command{ducktype} tool. The yelp-tools package
5782 provides additional functionality on the produced Mallard documents.")
5783 (license license:expat)))
5785 (define-public python-cython
5787 (name "python-cython")
5792 (uri (pypi-uri "Cython" version))
5794 (base32 "1xqsihpqnfal29nb5kmw8z71nd4jbsnbz7p3lkr094xpb13wycw7"))))
5795 (build-system python-build-system)
5796 ;; we need the full python package and not just the python-wrapper
5797 ;; because we need libpython3.3m.so
5802 (modify-phases %standard-phases
5803 (add-before 'check 'set-HOME
5804 ;; some tests require access to "$HOME/.cython"
5805 (lambda _ (setenv "HOME" "/tmp")))
5807 (lambda* (#:key tests? #:allow-other-keys)
5808 ;; Disable compiler optimizations to greatly reduce the running
5809 ;; time of the test suite.
5810 (setenv "CFLAGS" "-O0")
5813 (invoke "python" "runtests.py" "-vv"
5814 "-j" (number->string (parallel-job-count))
5815 ;; XXX: On 32-bit architectures, running the parallel tests
5816 ;; fails on many-core systems, see
5817 ;; <https://github.com/cython/cython/issues/2807>.
5818 ,@(if (not (target-64bit?))
5819 '("-x" "run.parallel")
5821 ;; This test fails when running on 24 cores.
5822 "-x" "cpp_stl_conversion")))))))
5823 (home-page "https://cython.org/")
5824 (synopsis "C extensions for Python")
5825 (description "Cython is an optimising static compiler for both the Python
5826 programming language and the extended Cython programming language. It makes
5827 writing C extensions for Python as easy as Python itself.")
5828 (license license:asl2.0)))
5830 (define-public python-cython-3
5832 (inherit python-cython)
5833 ;; Cython 3 is not officially released yet, so distinguish the name
5835 (name "python-cython-next")
5836 (version "3.0.0a10")
5839 (uri (pypi-uri "Cython" version))
5842 "17fqacrpis05w1rpi7d7sbimrk20xf8h6d3vrz5nf6ix3899abil"))))
5845 ;; NOTE: when upgrading numpy please make sure that python-numba,
5846 ;; python-pandas and python-scipy still build, as these three packages are
5847 ;; often used together.
5848 (define-public python-numpy
5850 (name "python-numpy")
5856 "https://github.com/numpy/numpy/releases/download/v"
5857 version "/numpy-" version ".tar.gz"))
5860 "0b0c5y35rd3mvwfk5is1d5ppfw9nl4d2rgx9xkwh1p0w394wdvyl"))))
5861 (build-system python-build-system)
5864 #:modules '((guix build utils)
5865 (guix build python-build-system)
5868 #~(modify-phases %standard-phases
5869 (add-before 'build 'parallelize-build
5871 (setenv "NPY_NUM_BUILD_JOBS"
5872 (number->string (parallel-job-count)))))
5873 (add-before 'build 'configure-blas
5874 (lambda* (#:key inputs #:allow-other-keys)
5875 (call-with-output-file "site.cfg"
5880 libraries = openblas
5881 library_dirs = ~a/lib
5882 include_dirs = ~:*~a/include~%" #$(this-package-input "openblas"))))))
5883 (add-before 'build 'fix-executable-paths
5884 (lambda* (#:key inputs #:allow-other-keys)
5885 ;; Make /gnu/store/...-bash-.../bin/sh the default shell,
5886 ;; instead of /bin/sh.
5887 (substitute* "numpy/distutils/exec_command.py"
5889 (format #f "~s" (search-input-file inputs "bin/bash"))))
5890 ;; Don't try to call '/bin/true' specifically.
5891 (substitute* "numpy/core/tests/test_cpu_features.py"
5892 (("/bin/true") (search-input-file inputs "bin/true")))))
5894 (lambda* (#:key tests? outputs inputs #:allow-other-keys)
5896 (invoke "./runtests.py" "-vv" "--no-build" "--mode=fast"
5897 "-j" (number->string (parallel-job-count))
5898 ;; Contrary to scipy, the runtests.py script of numpy
5899 ;; does *not* automatically provide -n when -j is used
5900 ;; (see: https://github.com/numpy/numpy/issues/21359).
5901 "--" "-n" (number->string (parallel-job-count))
5903 ;; These tests may fail on 32-bit systems (see:
5904 ;; https://github.com/numpy/numpy/issues/18387).
5905 "not test_float_remainder_overflow "
5906 "and not test_pareto"
5907 ;; These tests seem to fail on machines without
5908 ;; an FPU is still under investigation upstream.
5909 ;; https://github.com/numpy/numpy/issues/20635
5910 #$@(if (target-riscv64?)
5911 `(" and not test_float"
5912 " and not test_fpclass")
5916 python-hypothesis-next
5920 (inputs (list bash openblas))
5921 (home-page "https://numpy.org")
5922 (synopsis "Fundamental package for scientific computing with Python")
5923 (description "NumPy is the fundamental package for scientific computing
5924 with Python. It contains among other things: a powerful N-dimensional array
5925 object, sophisticated (broadcasting) functions, tools for integrating C/C++
5926 and Fortran code, useful linear algebra, Fourier transform, and random number
5929 '((upstream-name . "numpy")))
5930 (license license:bsd-3)))
5932 (define-public python-numpy-next
5934 (inherit python-numpy)
5935 (name "python-numpy-next")
5939 (inherit (package-source python-numpy))
5942 "https://github.com/numpy/numpy/releases/download/v"
5943 version "/numpy-" version ".tar.gz"))
5946 "19dw91pqbqcniw2z57kiyqs1qp56g7kqy1bdyv664g8s62sc01m9"))))))
5948 (define-public python-numpy-documentation
5950 (inherit python-numpy)
5951 (name "python-numpy-documentation")
5954 #:tests? #f ;we're only generating the documentation
5956 #~(modify-phases %standard-phases
5957 (add-before 'build 'add-gnu-freefont-to-texmf
5959 ;; XXX: The Sphinx-generated tex output specifies the GNU
5960 ;; FreeFont font to be searched via its extension, which uses
5961 ;; kpathsea instead of fontconfig and fail (see:
5962 ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a
5963 ;; symlink to GNU FreeFont and add it to the TEXMF tree via
5965 (mkdir-p "texmf-dist/fonts/opentype/public")
5966 (symlink (string-append
5967 #$(this-package-native-input "font-gnu-freefont")
5968 "/share/fonts/opentype")
5971 "texmf-dist/fonts/opentype/public/gnu-freefont"))
5972 (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":"
5973 (getcwd) "/texmf-dist"))))
5977 (let* ((data (string-append #$output "/share"))
5978 (doc (string-append data "/doc/numpy"))
5979 (html (string-append doc "/html"))
5980 (info (string-append data "/info"))
5981 (sphinxopts (string-append
5983 (number->string (parallel-job-count)))))
5984 (with-directory-excursion "doc"
5985 ;; Do not treat warnings as errors.
5986 (substitute* "Makefile"
5988 (setenv "HOME" "/tmp")
5989 ;; Build the PDF documentation.
5990 (invoke "make" "latex-build" sphinxopts)
5991 (invoke "make" "-C" "build/latex" "all-pdf" sphinxopts)
5992 ;; Build the HTML documentation
5993 (invoke "make" "html" sphinxopts)
5994 ;; Build the Info documentation. The issues worked around
5995 ;; below can be tracked at
5996 ;; https://github.com/numpy/numpy/issues/12278.
5997 (substitute* "source/conf.py"
5998 ;; The root document should be "index", not "contents".
5999 (("\"contents\"") "'index'")
6000 ;; Disable Sphinx extensions that produce broken Texinfo.
6001 ((".*'numpydoc'.*") "")
6002 ((".*'sphinx.ext.autosummary'.*") ""))
6003 (invoke "make" "info" sphinxopts)
6004 ;; Install the HTML documentation.
6006 (copy-recursively "build/html" html)
6007 ;; Install the PDF reference and user manuals.
6008 (install-file "build/latex/numpy-ref.pdf" doc)
6009 (install-file "build/latex/numpy-user.pdf" doc)
6010 ;; Install the info manual.
6011 (install-file "build/texinfo/numpy.info" info)
6012 (symlink (string-append html "/_images")
6013 (string-append info "/numpy-figures")))))))))
6015 (list font-gnu-freefont
6023 python-pydata-sphinx-theme
6024 python-scipy ;used by matplotlib
6026 python-sphinx-panels
6031 texlive-greek-fontenc
6032 texlive-latex-expdlist
6036 (propagated-inputs '())
6037 (synopsis "Documentation for the @code{python-numpy} package")
6038 (description "This package provides the complete NumPy documentation in
6039 the Texinfo, HTML, and PDF formats.")))
6041 (define-public python-munch
6043 (name "python-munch")
6048 (uri (pypi-uri "munch" version))
6051 "1lnvlic9g68hcmgdnv5bzp0nx2bf1kjclj54gx0s7nyl4ipmywrd"))))
6052 (build-system python-build-system)
6053 (native-inputs (list python-pbr python-pytest))
6054 (propagated-inputs (list python-six))
6055 (home-page "https://github.com/Infinidat/munch")
6056 (synopsis "Dot-accessible dictionary")
6057 (description "Munch is a dot-accessible dictionary similar to JavaScript
6059 (license license:expat)))
6061 (define-public python-colormath
6063 (name "python-colormath")
6068 (uri (pypi-uri "colormath" version))
6071 "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix"))))
6072 (build-system python-build-system)
6074 (list python-networkx python-numpy))
6075 (home-page "https://github.com/gtaylor/python-colormath")
6076 (synopsis "Color math and conversion library")
6078 "This is a Python library for color math and conversions.")
6079 (license license:bsd-3)))
6081 (define-public python-sparse
6083 (name "python-sparse")
6088 (uri (pypi-uri "sparse" version))
6091 "05ar1lhq1yy4nb78s7vpb1wz4ac4kj0r4lrd7yrf23kpmaacjpb8"))))
6092 (build-system python-build-system)
6095 (modify-phases %standard-phases
6097 (lambda* (#:key tests? #:allow-other-keys)
6099 (invoke "python" "-m" "pytest" "-v")))))))
6101 (list python-numba python-numpy python-scipy))
6103 (list python-dask python-pytest python-pytest-black
6105 (home-page "https://github.com/pydata/sparse/")
6106 (synopsis "Library for multi-dimensional sparse arrays")
6108 "This package implements sparse arrays of arbitrary dimension on top of
6109 @code{numpy} and @code{scipy.sparse}. Sparse array is a matrix in which most
6110 of the elements are zero. @code{python-sparse} generalizes the
6111 @code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but
6112 extends beyond just rows and columns to an arbitrary number of dimensions.
6113 Additionally, this project maintains compatibility with the
6114 @code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface
6115 used in @code{scipy.sparse}. These differences make this project useful in
6116 certain situations where @code{scipy.sparse} matrices are not well suited, but
6117 it should not be considered a full replacement. It lacks layouts that are not
6118 easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and
6119 depends on @code{scipy.sparse} for some computations.")
6120 (license license:bsd-3)))
6122 (define-public python-spectra
6124 (name "python-spectra")
6129 (uri (pypi-uri "spectra" version))
6132 "1f322x914bhkg6r5gv1vmnir3iy0k5kih0fd2gp3rdkw32jn5cwf"))))
6133 (build-system python-build-system)
6136 (modify-phases %standard-phases
6138 (lambda _ (invoke "nosetests" "-v"))))))
6140 (list python-colormath))
6143 (home-page "https://github.com/jsvine/spectra")
6144 (synopsis "Color scales and color conversion")
6146 "This package provides a Python library intended to make color math,
6147 color scales, and color space conversion easy. It has support for:
6152 @item Color blending
6153 @item Brightening/darkening colors
6154 @item Saturating/desaturating colors
6155 @item Conversion to/from multiple color spaces.
6157 (license license:expat)))
6159 (define-public python-pyspnego
6161 (name "python-pyspnego")
6165 (method git-fetch) ;no tests in PyPI release
6167 (url "https://github.com/jborean93/pyspnego")
6168 (commit (string-append "v" version))))
6169 (file-name (git-file-name name version))
6172 "0pfh2x0539f0k2qi2pbjm64b2fqp64c63xxpinvg1yfaw915kgpb"))))
6173 (build-system python-build-system)
6175 `(#:phases (modify-phases %standard-phases
6177 (lambda* (#:key tests? #:allow-other-keys)
6179 (invoke "pytest")))))))
6181 (list python-pytest python-pytest-mock))
6183 (list python-cryptography python-gssapi python-ruamel.yaml))
6184 (home-page "https://github.com/jborean93/pyspnego")
6185 (synopsis "Python SPNEGO library")
6186 (description "The @code{pyspnego} Python library handles Negotiate, NTLM,
6187 Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet
6188 parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human
6190 (license license:expat)))
6192 (define-public python-pygit2
6194 (name "python-pygit2")
6199 (uri (pypi-uri "pygit2" version))
6201 (base32 "068bwhirigbh2435abyv4shdxgxvyfqf4dxfmhd4hihivwrl9290"))))
6202 (build-system python-build-system)
6204 `(#:phases (modify-phases %standard-phases
6206 (lambda* (#:key tests? #:allow-other-keys)
6208 (invoke "pytest" "-v")))))))
6210 (list python-cached-property python-cffi libgit2))
6212 (list python-pytest))
6213 (home-page "https://github.com/libgit2/pygit2")
6214 (synopsis "Python bindings for libgit2")
6215 (description "Pygit2 is a set of Python bindings to the libgit2 shared library.")
6216 ;; GPL2.0 only, with linking exception.
6217 (license license:gpl2)))
6219 (define-public python-patiencediff
6221 (name "python-patiencediff")
6226 (uri (pypi-uri "patiencediff" version))
6229 "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q"))))
6230 (build-system python-build-system)
6231 (home-page "https://www.breezy-vcs.org/")
6232 (synopsis "Python implementation of the patiencediff algorithm")
6234 "This package contains a Python implementation of the @code{patiencediff}
6235 algorithm. Patiencediff provides a good balance of performance, nice output for
6236 humans, and implementation simplicity.")
6237 (license license:gpl2)))
6239 (define-public python-wmctrl
6241 (name "python-wmctrl")
6246 (uri (pypi-uri "wmctrl" version))
6249 "1q0l1sqnj5wma87k3dsgmsyph464syjc6fl8qcpa41nan1rgzjv6"))))
6250 (build-system python-build-system)
6252 `(#:phases (modify-phases %standard-phases
6253 (add-after 'unpack 'patch-paths
6254 (lambda* (#:key inputs #:allow-other-keys)
6255 (let ((wmctrl (assoc-ref inputs "wmctrl")))
6256 (substitute* "wmctrl.py"
6258 (string-append "'" wmctrl "/bin/wmctrl")))))))))
6259 (inputs (list wmctrl))
6260 (propagated-inputs (list python-attrs))
6261 (home-page "https://github.com/antocuni/wmctrl")
6262 (synopsis "Tool to programmatically control Xorg windows")
6263 (description "This package provides a library for programmatically
6264 controlling Xorg windows using Python. The library relies on the
6265 @command{wmctrl} to do so.")
6266 (license license:expat)))
6268 (define-public python-fancycompleter
6270 (name "python-fancycompleter")
6275 (uri (pypi-uri "fancycompleter" version))
6277 (base32 "0wkj4h01pxa8prv59zl09a0i3w26k835bfpjgvyvsai4mswgxq09"))))
6278 (build-system python-build-system)
6280 `(#:phases (modify-phases %standard-phases
6281 (add-after 'unpack 'fix-setup.py
6283 (substitute* "setup.py"
6287 (string-append "version='" ,version "',"))
6288 ((".*pyrepl.*") ;broken on Python 3
6290 (home-page "https://github.com/pdbpp/fancycompleter")
6291 (synopsis "TAB completion library for Python")
6292 (description "@code{fancycompleter} is a module that adds TAB completion
6293 to the interactive prompt. It is an extension of the @code{rlcompleter}
6294 module from the standard Python library.")
6295 (license license:bsd-3)))
6297 (define-public python-ipdb
6299 (name "python-ipdb")
6304 (uri (pypi-uri "ipdb" version))
6306 (base32 "1ibql99agjf2gj7y0svzd5m0h81hailf4p3sj3yl9i1i8ykdj6wm"))))
6307 (build-system python-build-system)
6309 (list #:phases #~(modify-phases %standard-phases
6311 (lambda* (#:key tests? #:allow-other-keys)
6313 (invoke "python" "-m" "unittest" "discover")))))))
6314 (propagated-inputs (list python-ipython python-toml python-decorator))
6315 (home-page "https://github.com/gotcha/ipdb")
6316 (synopsis "IPython-enhanced Python debugger (pdb)")
6317 (description "@code{ipdb} exports functions to access the IPython
6318 debugger, which features tab completion, syntax highlighting, better
6319 tracebacks and better introspection than Python's standard @command{pdb}
6320 debugger, with which it shares the same interface.")
6321 (license license:bsd-3)))
6323 (define-public python-pdbpp
6325 (name "python-pdbpp")
6330 (uri (pypi-uri "pdbpp" version))
6333 "1xb9yvi30rb1cdpvfdk2kg79vh3anvkz91r8bwvfp3iqv97kzr6r"))))
6334 (build-system python-build-system)
6337 (modify-phases %standard-phases
6339 (lambda* (#:key tests? #:allow-other-keys)
6344 ;; These tests seem to require a real TTY.
6345 "not interaction_restores_previous_sigint_handler "
6346 "and not python_m_pdb_uses_pdbpp"))))))))
6348 (list python-fancycompleter python-pygments python-wmctrl))
6350 (list python-pytest python-setuptools-scm))
6351 (home-page "https://github.com/pdbpp/pdbpp")
6352 (synopsis "Drop-in replacement for pdb")
6353 (description "Pdb++ is a drop-in replacement for @code{pdb}. It
6354 includes the following improvements compared to @code{pdb}:
6356 @item auto-completion
6357 @item syntax highlighting of code listings
6359 @item new commands to be used from the interactive (Pdb++) prompt
6360 @item smart command parsing
6361 @item additional convenience functions in the @code{pdb} module.
6363 (license license:bsd-3)))
6365 (define-public python-pdftotext
6367 (name "python-pdftotext")
6372 (uri (pypi-uri "pdftotext" version))
6374 (base32 "1555wbgr5spj8xflrs4mwsrdmba2f9s72nk50xzqk9ghxaxdvy6a"))))
6375 (build-system python-build-system)
6378 (home-page "https://github.com/jalan/pdftotext")
6379 (synopsis "Simple PDF text extraction")
6380 (description "Pdftotext is a Python library of PDF text extraction.")
6381 (license license:expat)))
6383 (define-public python-pluginbase
6385 (name "python-pluginbase")
6390 (uri (pypi-uri "pluginbase" version))
6393 "11z2vvbp13828y0x3w39f29p9r9xcix7h7c4fff2w8yfiylk6v7z"))))
6394 (build-system python-build-system)
6396 `(#:phases (modify-phases %standard-phases
6398 (lambda* (#:key tests? #:allow-other-keys)
6400 (invoke "make" "test")))))))
6401 (native-inputs (list python-pytest))
6402 (home-page "https://github.com/mitsuhiko/pluginbase")
6403 (synopsis "Simple but flexible plugin system for Python")
6404 (description "PluginBase is a library useful in the development of
6405 flexible plugin systems in Python.")
6406 (license license:bsd-3)))
6408 (define-public python-node-semver
6410 (name "python-node-semver")
6415 (uri (pypi-uri "node-semver" version))
6418 "000ypfns5x72b41w5f9pk6k3jnr35scliqfbvmilyvv0178005i8"))))
6419 (build-system python-build-system)
6421 (list python-pytest))
6422 (home-page "https://github.com/podhmo/python-node-semver")
6423 (synopsis "Python port of node-semver")
6424 (description "This module provides a Python version of node-semver, a
6425 semantic version parser for Node.js.")
6426 (license license:expat)))
6428 (define-public python-patch-ng
6430 (name "python-patch-ng")
6434 (method git-fetch) ;no tests in PyPI archive
6436 (url "https://github.com/conan-io/python-patch-ng")
6438 (file-name (git-file-name name version))
6441 "0qxn4ss2s54qy87xrpcybz26kp2fwlaq41x4k9jcmp6d7p0w569m"))))
6442 (build-system python-build-system)
6444 `(#:phases (modify-phases %standard-phases
6446 (lambda* (#:key tests? #:allow-other-keys)
6448 (invoke "tests/run_tests.py" "-v")))))))
6449 (home-page "https://github.com/conan-io/python-patch-ng")
6450 (synopsis "Python library to parse and apply unified diffs")
6451 (description "Patch NG (New Generation) is a command and Python library to
6452 parse and apply unified diffs. It has features such as:
6454 @item automatic correction of common patch formatting corruption
6455 @item patch format detection (SVN, Hg, Git)
6456 @item nice diffstat histogram.
6458 (license license:expat)))
6460 (define-public python-numpydoc
6462 (name "python-numpydoc")
6467 (uri (pypi-uri "numpydoc" version))
6470 "1xjsli2fqks4iv3524v1d329siad7bbsi4kr174zvhsl1pnjds3w"))))
6471 (build-system python-build-system)
6474 (modify-phases %standard-phases
6475 (add-after 'unpack 'relax-requirements
6477 (substitute* "setup.py"
6478 (("'Jinja2>=2.10,<3.1'")
6479 "'Jinja2>=2.10'"))))
6481 (lambda* (#:key tests? #:allow-other-keys)
6483 (invoke "pytest" "-v" "numpydoc/tests"
6484 ;; TODO: unclear why these fail.
6485 "-k" "not test_MyClass and not test_my_function")))))))
6486 (propagated-inputs (list python-jinja2 python-sphinx))
6487 (native-inputs (list python-matplotlib python-pytest python-pytest-cov))
6488 (home-page "https://pypi.org/project/numpydoc/")
6489 (synopsis "Numpy's Sphinx extensions")
6490 (description "Sphinx extension to support docstrings in Numpy format.")
6491 (license license:bsd-2)))
6493 (define-public python-numexpr
6495 (name "python-numexpr")
6500 (uri (pypi-uri "numexpr" version))
6503 "09d8yfsx33ddwfkpn8805w2mxnn4cvf47yc66g4azldpz4lnaqa3"))))
6504 (build-system python-build-system)
6505 (arguments `(#:tests? #f)) ; no tests included
6507 (list python-numpy))
6508 (home-page "https://github.com/pydata/numexpr")
6509 (synopsis "Fast numerical expression evaluator for NumPy")
6511 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
6512 expressions that operate on arrays are accelerated and use less memory than
6513 doing the same calculation in Python. In addition, its multi-threaded
6514 capabilities can make use of all your cores, which may accelerate
6515 computations, most specially if they are not memory-bounded (e.g. those using
6516 transcendental functions).")
6517 (license license:expat)))
6519 (define-public python-cycler
6521 (name "python-cycler")
6525 (uri (pypi-uri "cycler" version))
6528 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
6529 (build-system python-build-system)
6531 ;; XXX: The current version requires 'coveralls' which we don't have.
6532 ;; Enable this for the next release which uses 'python-pytest'.
6536 (home-page "https://matplotlib.org/cycler/")
6537 (synopsis "Composable keyword argument iterator")
6539 "When using @code{matplotlib} and plotting more than one line, it is
6540 common to want to be able to want to be able to cycle over one or more artist
6541 styles; but the plotting logic can quickly become involved.
6542 To address this and enable easy cycling over arbitrary @code{kwargs}, the
6543 @code{Cycler} class was developed.")
6544 (license license:bsd-3)))
6546 (define-public python-colorspacious
6548 (name "python-colorspacious")
6554 (url "https://github.com/njsmith/colorspacious")
6555 (commit (string-append "v" version))))
6556 (file-name (git-file-name name version))
6558 (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w"))))
6559 (build-system python-build-system)
6561 (list python-numpy))
6566 (modify-phases %standard-phases
6569 (invoke "nosetests" "--all-modules" "-v" "colorspacious"))))))
6570 (home-page "https://github.com/njsmith/colorspacious")
6571 (synopsis "Python library for colorspace conversions")
6572 (description "@code{colorspacious} is a Python library that lets you
6573 convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
6574 (license license:expat)))
6576 (define-public python-proto-matcher
6578 (name "python-proto-matcher")
6583 (uri (pypi-uri "proto_matcher" version))
6585 (base32 "1644x0hrl398ji3281n44ymfgc3cspzfagjckhqjn4nja5nlikxg"))))
6586 (build-system python-build-system)
6588 `(#:tests? #f)) ;no test suite
6590 (list python-protobuf python-pyhamcrest))
6591 (home-page "https://github.com/dayfine/proto-matcher")
6592 (synopsis "PyHamcrest test matchers for protocol buffers")
6593 (description "This package provides the following PyHamcrest test
6594 matchers, that enable matching a protocol buffer message:
6597 Test the argument equals the given protobuf message.
6599 Test the argument equals the given protobuf message, while comparing any float
6600 field using approximation.
6601 @item ignoring_field_paths
6602 Test the argument equals the given protobuf message, while ignoring those
6603 fields specified in the field paths.
6604 @item ignoring_repeated_field_ordering
6605 Test the argument equals the given protobuf message, ignoring the ordering of
6608 Test the argument partially equals the given protobuf message, i.e. if a field
6609 is in the argument but not in the expected message, it's ignored in the
6612 (license license:asl2.0)))
6614 (define-public python-matplotlib
6616 (name "python-matplotlib")
6621 (uri (pypi-uri "matplotlib" version))
6623 (base32 "18h78s5ld1i6mz00w258hy29909nfr3ddq6ry9kq18agw468bks8"))))
6624 (build-system python-build-system)
6628 #~(modify-phases %standard-phases
6629 (add-before 'build 'pretend-version
6630 ;; The version string is usually derived via setuptools-scm, but
6631 ;; without the git metadata available, the version string is set to
6634 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
6635 (add-after 'unpack 'fix-and-disable-failing-tests
6636 ;; XXX: Disable all image comparison tests because we're using a
6637 ;; newer version of FreeType than matplotlib expects. This leads
6638 ;; to minor differences throughout the tests.
6640 (substitute* (append (find-files "lib/matplotlib/tests/"
6642 (find-files "lib/mpl_toolkits/tests"
6644 (("^from matplotlib" match)
6645 (string-append "import pytest\n" match))
6646 (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match
6648 (string-append indent "@pytest.mark.skip(\
6649 reason=\"unknown minor image differences\")\n" match)))
6650 (substitute* "lib/matplotlib/tests/test_animation.py"
6651 (("/bin/sh") (which "sh")))
6652 (for-each delete-file
6653 ;; test_normal_axes, test_get_tightbbox_polar
6654 '("lib/matplotlib/tests/test_axes.py"
6655 "lib/matplotlib/tests/test_polar.py"
6656 ;; We don't use the webagg backend and this test
6658 "lib/matplotlib/tests/test_backend_webagg.py"
6659 ;; test_outward_ticks
6660 "lib/matplotlib/tests/test_tightlayout.py"
6661 ;; test_hidden_axes fails with minor extent
6662 ;; differences, possibly due to the use of a
6663 ;; different version of FreeType.
6664 "lib/matplotlib/tests/test_constrainedlayout.py"
6665 ;; Fontconfig returns no fonts.
6666 "lib/matplotlib/tests/test_font_manager.py"
6667 ;; The images comparison test fails
6668 ;; non-deterministically when run in parallel (see:
6669 ;; https://github.com/matplotlib/matplotlib/issues/22992).
6670 "lib/matplotlib/tests/test_compare_images.py"))))
6671 (add-before 'build 'configure-environment
6672 (lambda* (#:key inputs #:allow-other-keys)
6673 ;; Fix rounding errors when using the x87 FPU.
6674 (when (string-prefix? "i686" #$(%current-system))
6675 (setenv "CFLAGS" "-ffloat-store"))
6676 (call-with-output-file "mplsetup.cfg"
6680 system_freetype = true
6690 tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk"))))))
6692 (lambda* (#:key tests? #:allow-other-keys)
6694 ;; Step out of the source directory to avoid interference.
6695 (with-directory-excursion "/tmp"
6696 ;; Run the installed tests, which is what we want since not
6697 ;; everything gets built in the source directory.
6699 "-n" (number->string (parallel-job-count))
6700 "-m" "not network" "--pyargs" "matplotlib"
6701 ;; The 'test_lazy_auto_backend_selection' fails
6702 ;; because it would require an X server; skip it.
6703 "-k" "not test_lazy_auto_backend_selection"))))))))
6705 (list gobject-introspection
6715 ;; ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
6716 ;; ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
6717 ;; ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
6718 ;; ;; object. For this reason we need to import both libraries.
6737 python-pytest-timeout
6739 python-setuptools-scm
6740 python-setuptools-scm-git-archive))
6741 (home-page "https://matplotlib.org/")
6742 (synopsis "2D plotting library for Python")
6744 "Matplotlib is a Python 2D plotting library which produces publication
6745 quality figures in a variety of hardcopy formats and interactive environments
6746 across platforms. Matplotlib can be used in Python scripts, the python and
6747 ipython shell, web application servers, and six graphical user interface
6749 (license license:psfl)))
6751 (define-public python-matplotlib-documentation
6753 (inherit python-matplotlib)
6754 (name "python-matplotlib-documentation")
6757 #:tests? #f ;we're only generating documentation
6759 #~(modify-phases %standard-phases
6762 (setenv "HOME" "/tmp")
6764 (substitute* "conf.py"
6765 ;; The sphinx_panels extension causes a "TypeError: first
6766 ;; argument must be callable" to be raised when generating the
6767 ;; info target; remove it (see:
6768 ;; https://github.com/executablebooks/sphinx-panels/issues/74).
6769 ((".*'sphinx_panels',.*") ""))
6770 (invoke "make" "html" "info"
6771 ;; Don't abort on warnings; build in parallel.
6772 (format #f "SPHINXOPTS=-j~a" (parallel-job-count)))))
6775 (let* ((data (string-append #$output "/share"))
6776 (doc (string-append data "/doc/matplotlib"))
6777 (info (string-append data "/info"))
6778 (html (string-append doc "/html")))
6780 (copy-recursively "build/html" html)
6781 (install-file "build/texinfo/matplotlib.info" info)
6782 ;; The "matplotlib-figures" directory contains are a subset of
6783 ;; the images produced for the html target; simply create a
6784 ;; symlink to it, saving about 11 MiB.
6785 (symlink (string-append html "/_images")
6786 (string-append info "/matplotlib-figures"))))))))
6790 python-colorspacious
6791 python-mpl-sphinx-theme
6794 python-sphinx-copybutton
6795 python-sphinx-gallery
6796 python-sphinxcontrib-svg2pdfconverter
6804 texlive-unicode-math
6806 texlive-latex-expdlist
6808 texlive-latex-type1cm
6811 (synopsis "Documentation for the @code{python-matplotlib} package")))
6813 (define-public python-matplotlib-inline
6815 (name "python-matplotlib-inline")
6820 (uri (pypi-uri "matplotlib-inline" version))
6822 (base32 "1vilzwj3xp00mxprmmn1hlafm3p23vn56s46kx3ra4qd5signjx0"))))
6823 (build-system python-build-system)
6825 (list python-matplotlib python-traitlets))
6827 ;; Tests disabled because of a circular dependency with ipython.
6829 (home-page "https://github.com/ipython/matplotlib-inline")
6830 (synopsis "Inline Matplotlib backend for Jupyter")
6832 "This package provides a Matplotlib inline back-end for IPython and
6834 (license license:bsd-3)))
6836 (define-public python-matplotlib-venn
6838 (name "python-matplotlib-venn")
6843 (uri (pypi-uri "matplotlib-venn" version ".zip"))
6846 "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy"))))
6847 (build-system python-build-system)
6848 (arguments '(#:tests? #f)) ; tests are not included
6850 (list python-matplotlib python-numpy python-scipy))
6853 (home-page "https://github.com/konstantint/matplotlib-venn")
6854 (synopsis "Plot area-proportional Venn diagrams")
6856 "This package provides tools for plotting area-proportional two- and
6857 three-way Venn diagrams in @code{matplotlib}.")
6858 (license license:expat)))
6860 (define-public python-pysnptools
6862 (name "python-pysnptools")
6867 (uri (pypi-uri "pysnptools" version))
6870 "0gxr0bjix307wvk0qh7vkafbxbzfpdmq0wlswpxyyaymy0fwcypv"))))
6871 (build-system python-build-system)
6873 `(#:tests? #f ; no test data are included
6875 (modify-phases %standard-phases
6877 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
6880 (add-installed-pythonpath inputs outputs)
6881 (invoke "python3" "pysnptools/test.py"))
6891 (list python-cython))
6892 (home-page "http://microsoftgenomics.github.io/PySnpTools/")
6893 (synopsis "Library for reading and manipulating genetic data")
6895 "PySnpTools is a library for reading and manipulating genetic data. It
6896 can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
6897 those files. It can also efficiently manipulate ranges of integers using set
6898 operators such as union, intersection, and difference.")
6899 (license license:asl2.0)))
6901 (define-public python-pykdtree
6903 (name "python-pykdtree")
6908 (uri (pypi-uri "pykdtree" version))
6910 (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy"))))
6911 (build-system python-build-system)
6915 (list python-numpy))
6916 (home-page "https://github.com/storpipfugl/pykdtree")
6917 (synopsis "Fast kd-tree implementation with OpenMP-enabled queries")
6919 "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour
6921 (license license:lgpl3+)))
6923 (define-public python-wurlitzer
6925 (name "python-wurlitzer")
6930 (uri (pypi-uri "wurlitzer" version))
6932 (base32 "0hvmbc41kdwrjns8z1s4a59a4azdvzb8q3vs7nn1li4qm4l0g3yh"))))
6933 (build-system python-build-system)
6936 (modify-phases %standard-phases
6939 (invoke "pytest" "-vv" "test.py"))))))
6941 (list python-mock python-pytest))
6942 (home-page "https://github.com/minrk/wurlitzer")
6943 (synopsis "Capture C-level output in context managers")
6945 "This library helps to redirect @code{sys.stdout} to a stream or a file
6946 while executing some piece of code, including C code running within a Python
6948 (license license:expat)))
6950 (define-public python-socksipy-branch
6952 (name "python-socksipy-branch")
6957 (uri (pypi-uri "SocksiPy-branch" version))
6960 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
6961 (build-system python-build-system)
6963 `(#:tests? #f)) ; There are no tests
6964 (home-page "https://code.google.com/archive/p/socksipy-branch/")
6965 (synopsis "Python SOCKS module")
6967 "SocksiPy - A Python SOCKS client module. It provides a
6968 socket-like interface that supports connections to any TCP
6969 service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
6970 The original version was developed by Dan Haim, this is a
6971 branch created by Mario Vilas to address some open issues,
6972 as the original project seems to have been abandoned circa 2007.")
6973 (license license:bsd-3)))
6975 (define-public python-socksipychain
6977 (name "python-socksipychain")
6983 (url "https://github.com/pagekite/PySocksipyChain")
6984 (commit (string-append "v" version))))
6985 (file-name (git-file-name name version))
6988 "02pp994qmiivkdx4y6az5q80l6rzy8g6d2ipvp7kns7lsxvmc2y7"))))
6989 (build-system python-build-system)
6991 `(#:tests? #f)) ; Tests try to access the network.
6992 (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/")
6993 (synopsis "Python SOCKS module with chained proxies support")
6995 "SocksiPyChain is a modified version of the SocksiPy SOCKS module, which
6996 adds support for arbitrary chaining of proxy servers and various modes of
6997 TLS/SSL encryption. It was developed for use in PageKite, and also includes
6998 a simple netcat replacement with chaining support.")
6999 (license license:bsd-3)))
7001 (define-public python-pycodestyle
7003 (name "python-pycodestyle")
7008 (uri (pypi-uri "pycodestyle" version))
7011 "0zxyrg8029lzjhima6l5nk6y0z6lm5wfp9qchz3s33j3xx3mipgd"))))
7012 (build-system python-build-system)
7015 (modify-phases %standard-phases
7017 (lambda* (#:key tests? #:allow-other-keys)
7019 (invoke "pytest" "-vv")))))))
7021 (list python-pytest))
7022 (home-page "https://pycodestyle.readthedocs.io/")
7023 (synopsis "Python style guide checker")
7024 (description "@code{pycodestyle} (formerly pep8) is a tool to check
7025 Python code against some of the style conventions in
7026 @url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
7027 (license license:expat)))
7029 (define-public python-pycodestyle-2.6
7031 (inherit python-pycodestyle)
7035 (uri (pypi-uri "pycodestyle" version))
7038 "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5"))))))
7040 (define-public python-multidict
7042 (name "python-multidict")
7047 (uri (pypi-uri "multidict" version))
7050 "1kjrxav572j45xvr1iy60zb2g8zqvrinzdkl4ax36js4vczckl8d"))))
7051 (build-system python-build-system)
7053 '(#:phases (modify-phases %standard-phases
7055 (lambda* (#:key tests? #:allow-other-keys)
7057 (invoke "pytest" "-vv")
7058 (format #t "test suite not run~%")))))))
7060 (list python-pytest python-pytest-cov))
7061 (home-page "https://github.com/aio-libs/multidict/")
7062 (synopsis "Multidict implementation")
7063 (description "Multidict is dict-like collection of key-value pairs
7064 where key might be occurred more than once in the container.")
7065 (license license:asl2.0)))
7067 (define-public python-orderedmultidict
7069 (name "python-orderedmultidict")
7074 (uri (pypi-uri "orderedmultidict" version))
7077 "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4"))))
7078 (build-system python-build-system)
7082 (list python-flake8 python-pycodestyle))
7083 (home-page "https://github.com/gruns/orderedmultidict")
7084 (synopsis "Python Ordered Multivalue Dictionary - omdict")
7085 (description "This package contains a library for ordered multivalue
7086 dictionaries. A multivalue dictionary is a dictionary that can store
7087 multiple values for the same key. An ordered multivalue dictionary is a
7088 multivalue dictionary that retains the order of insertions and deletions.")
7089 (license license:unlicense)))
7091 (define-public python-autocommand
7093 (name "python-autocommand")
7098 (uri (pypi-uri "autocommand" version))
7100 (base32 "03qp9xx4dq81ljhf56r21gp5j0lpqs1vaw99g0d84i97s3lj1m7y"))))
7101 (build-system python-build-system)
7105 #~(modify-phases %standard-phases
7107 (lambda* (#:key tests? #:allow-other-keys)
7109 ;; This test fails with an invalid syntax error on 'task1 =
7110 ;; asyncio.async(coro_1())' (see:
7111 ;; https://github.com/Lucretiel/autocommand/issues/20).
7112 (delete-file "test/test_autoasync.py")
7113 (invoke "pytest" "-vv")))))))
7114 (native-inputs (list python-pytest python-pytest-asyncio))
7115 (home-page "https://github.com/Lucretiel/autocommand")
7116 (synopsis "Python library to build a command-line from a function")
7117 (description "@code{autocommand} is library to automatically generate and
7118 run simple @code{argparse} parsers from function signatures.")
7119 (license license:lgpl3+)))
7121 (define-public python-autopage
7123 (name "python-autopage")
7127 (uri (pypi-uri "autopage" version))
7130 "169ixll1ncm2a2pcc86665ikjv2lrzs10p6c1w4yj55p3gk3xgh1"))))
7131 (build-system pyproject-build-system)
7135 #~(modify-phases %standard-phases
7136 (add-before 'check 'disable-e2e-tests
7138 ;; These tests rely on KeyboardInterrupts which do not
7139 ;; work in the build container.
7140 (delete-file "autopage/tests/test_end_to_end.py"))))))
7142 (list python-pypa-build
7149 (home-page "https://github.com/zaneb/autopage")
7150 (synopsis "Automatic paging for console output")
7152 "Autopage is a Python library to automatically display terminal output
7153 from a program in a @dfn{pager} such as @command{less}.")
7154 (license license:asl2.0)))
7156 (define-public python-autopep8
7158 (name "python-autopep8")
7163 (uri (pypi-uri "autopep8" version))
7166 "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0"))))
7167 (build-system python-build-system)
7169 (list python-pycodestyle python-toml))
7170 (home-page "https://github.com/hhatto/autopep8")
7171 (synopsis "Format Python code according to the PEP 8 style guide")
7173 "@code{autopep8} automatically formats Python code to conform to
7174 the PEP 8 style guide. It uses the pycodestyle utility to determine
7175 what parts of the code needs to be formatted. @code{autopep8} is
7176 capable of fixing most of the formatting issues that can be reported
7178 (license (license:non-copyleft
7179 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
7181 (define-public python-distlib
7183 (name "python-distlib")
7188 (uri (pypi-uri "distlib" version ".zip"))
7191 "1wdzv7fsjhrkhh1wfkarlhcwa8m00mgcpdsvknmf2qy8f9l13xpd"))))
7192 (build-system python-build-system)
7195 (modify-phases %standard-phases
7196 (add-before 'build 'no-/bin/sh
7198 (substitute* '("distlib/scripts.py" "tests/test_scripts.py")
7199 (("/bin/sh") (which "sh")))
7201 (add-before 'check 'prepare-test-env
7203 (setenv "HOME" "/tmp")
7204 ;; NOTE: Any value works, the variable just has to be present.
7205 (setenv "SKIP_ONLINE" "1")
7207 (native-inputs (list unzip))
7208 (home-page "https://bitbucket.org/pypa/distlib")
7209 (synopsis "Distribution utilities")
7210 (description "Distlib is a library which implements low-level functions that
7211 relate to packaging and distribution of Python software. It is intended to be
7212 used as the basis for third-party packaging tools.")
7213 (license license:psfl)))
7215 (define-public python-distutils-extra
7217 (name "python-distutils-extra")
7222 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
7223 version "/+download/python-distutils-extra-"
7227 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
7228 (build-system python-build-system)
7229 (home-page "https://launchpad.net/python-distutils-extra/")
7230 (synopsis "Enhancements to Python's distutils")
7232 "The python-distutils-extra module enables you to easily integrate
7233 gettext support, themed icons, and scrollkeeper-based documentation into
7234 Python's distutils.")
7235 (license license:gpl2)))
7237 (define-public python-olefile
7239 (name "python-olefile")
7244 (uri (string-append "https://github.com/decalage2/olefile/releases/"
7245 "download/v" version "/olefile-" version ".tar.gz"))
7246 (file-name (string-append name "-" version ".tar.gz"))
7249 "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m"))))
7250 (build-system python-build-system)
7251 (home-page "https://www.decalage.info/python/olefileio")
7252 (synopsis "Read and write Microsoft OLE2 files")
7254 "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured
7255 Storage or Compound Document, Microsoft Office). It is an improved version of
7256 the OleFileIO module from PIL, the Python Image Library.")
7257 (license license:bsd-3)))
7259 (define-public python-pypdf3
7261 (name "python-pypdf3")
7266 (uri (pypi-uri "PyPDF3" version))
7268 (base32 "018hlq9q2qa96vw4j7ppq352znykldwy98h2w9qcpkvpi93sjqhc"))))
7269 (build-system python-build-system)
7272 (home-page "https://github.com/sfneal/PyPDF3")
7273 (synopsis "Utility to read and write PDFs with Python")
7274 (description "PyPDF3 is a pure-python PDF library capable of splitting,
7275 merging together, cropping, and transforming the pages of PDF files. It can
7276 also add custom data, viewing options, and passwords to PDF files. It can
7277 retrieve text and metadata from PDFs as well as merge entire files together.")
7278 (license license:bsd-3)))
7280 (define-public python-pikepdf
7282 (name "python-pikepdf")
7287 (uri (pypi-uri "pikepdf" version))
7289 (base32 "1phdpi9cm2pbvgcxqvwr8ck327sxhdw4dnxmzhrbf7hzydmgykg2"))))
7290 (build-system python-build-system)
7292 `(#:tests? #false)) ;require python-xmp-toolkit
7296 python-setuptools-scm
7297 python-setuptools-scm-git-archive
7303 (list python-lxml python-pillow))
7304 (home-page "https://github.com/pikepdf/pikepdf")
7305 (synopsis "Read and write PDFs with Python")
7307 "pikepdf is a Python library for reading and writing PDF files.")
7308 (license license:mpl2.0)))
7310 (define-public python-pillow
7312 (name "python-pillow")
7316 (uri (pypi-uri "Pillow" version))
7319 "011wgm1mssjchpva9wsi2a07im9czyjvik137xlp5f0g7vykdrkm"))
7320 (modules '((guix build utils)))
7322 (delete-file-recursively "src/thirdparty")))))
7323 (build-system python-build-system)
7324 (native-inputs (list python-pytest))
7325 (inputs (list freetype
7332 (propagated-inputs (list python-olefile))
7334 `(#:phases (modify-phases %standard-phases
7335 (add-after 'unpack 'patch-ldconfig
7337 (substitute* "setup.py"
7338 (("\\['/sbin/ldconfig', '-p'\\]") "['true']"))))
7340 (lambda* (#:key outputs inputs tests? #:allow-other-keys)
7344 (add-installed-pythonpath inputs outputs)
7345 (invoke "python" "selftest.py" "--installed")
7346 (invoke "python" "-m" "pytest" "-vv")))))))
7347 (home-page "https://python-pillow.org")
7348 (synopsis "Fork of the Python Imaging Library")
7350 "The Python Imaging Library adds image processing capabilities to your
7351 Python interpreter. This library provides extensive file format support, an
7352 efficient internal representation, and fairly powerful image processing
7353 capabilities. The core image library is designed for fast access to data
7354 stored in a few basic pixel formats. It should provide a solid foundation for
7355 a general image processing tool.")
7356 (properties `((cpe-name . "pillow")))
7357 (license (license:x11-style
7358 "http://www.pythonware.com/products/pil/license.htm"
7359 "The PIL Software License"))))
7361 (define-public python-pillow-2.9
7363 (inherit python-pillow)
7368 (uri (pypi-uri "Pillow" version))
7371 "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg"))))
7373 (substitute-keyword-arguments (package-arguments python-pillow)
7374 ((#:tests? _ #f) #f)))
7375 (properties '((hidden? #t)))))
7377 (define-public python-pillow-simd
7379 (inherit python-pillow)
7380 (name "python-pillow-simd")
7381 (version "9.0.0.post1")
7382 ;; The PyPI tarball does not include test files.
7387 (url "https://github.com/uploadcare/pillow-simd")
7388 (commit (string-append "v" version))))
7389 (file-name (git-file-name name version))
7391 (base32 "1dnvsln451aw3qy2cxg2ndd5mcanf5nrhxw9l7mcam730635hdm9"))))
7393 (modify-inputs (package-inputs python-pillow)
7394 (prepend libraqm libimagequant)))
7395 (home-page "https://github.com/uploadcare/pillow-simd")
7396 (synopsis "Fork of the Python Imaging Library (Pillow)")
7397 (description "This package is a fork of Pillow which adds support for SIMD
7400 (define-public python-imagecodecs
7402 (name "python-imagecodecs")
7403 (version "2021.3.31")
7407 (uri (pypi-uri "imagecodecs" version))
7410 "0q7pslb6wd56vbcq2mdxwsiha32mxjr7mgqqfbq5w42q601p9pi0"))
7411 (modules '((guix build utils)))
7414 ;; Unbundle 3rd party modules.
7415 (delete-file-recursively "3rdparty")
7416 ;; Delete pre-generated Cython files.
7417 (for-each delete-file (find-files "imagecodecs" "_.*\\.c$"))
7419 (build-system python-build-system)
7421 `(#:tests? #f ; Tests are disabled, because dependencies are missing.
7423 (modify-phases %standard-phases
7424 (add-after 'unpack 'create-configuration
7425 (lambda* (#:key inputs #:allow-other-keys)
7426 ;; By default everything is enabled. We can selectively disable
7427 ;; extensions (and thus dependencies) by deleting them from the
7428 ;; EXTENSIONS dictionary. This is upstream’s preferred way.
7429 (call-with-output-file "imagecodecs_distributor_setup.py"
7432 def customize_build(EXTENSIONS, OPTIONS):
7433 del EXTENSIONS['aec']
7434 del EXTENSIONS['avif']
7435 del EXTENSIONS['bitshuffle']
7436 del EXTENSIONS['deflate']
7437 del EXTENSIONS['jpeg2k']
7438 del EXTENSIONS['jpeg12']
7439 del EXTENSIONS['jpegls']
7440 del EXTENSIONS['jpegxl']
7441 del EXTENSIONS['jpegxr']
7442 del EXTENSIONS['lerc']
7443 del EXTENSIONS['ljpeg']
7444 del EXTENSIONS['lzf']
7445 del EXTENSIONS['zfp']
7446 del EXTENSIONS['zopfli']
7447 OPTIONS['cythonize']
7449 ;; XXX: The installed scripts import packages that depend on
7450 ;; this package; disable import check to avoid the cycle.
7451 (delete 'sanity-check))))
7466 ;; For the Python library.
7467 (list python-numpy))
7471 ;; For testing. Incomplete.
7472 ;("python-numcodecs" ,python-numcodecs)
7473 ;("python-zarr" ,python-zarr)
7474 ;("python-pytest" ,python-pytest)
7476 (home-page "https://www.lfd.uci.edu/~gohlke/")
7478 "Image transformation, compression, and decompression codecs")
7480 "Imagecodecs is a Python library that provides block-oriented, in-memory
7481 buffer transformation, compression, and decompression functions for use in the
7482 tifffile, czifile, and other scientific image input/output modules.")
7483 (license license:bsd-3)))
7485 (define-public python-property-manager
7487 (name "python-property-manager")
7492 (uri (pypi-uri "property-manager" version))
7494 (base32 "0m3w4spr8f39xnm65naw29ncal4r453kn7ndqb63rwbsmslnvrwk"))))
7495 (build-system python-build-system)
7497 (list python-pytest-cov))
7499 (list python-verboselogs
7500 python-humanfriendly
7501 python-coloredlogs))
7502 (home-page "https://github.com/xolox/python-property-manager")
7503 (synopsis "Useful property variants for Python programming")
7504 (description "The @code{property-manager} package defines several custom
7505 property variants for Python programming including required properties,
7506 writable properties, cached properties, etc.")
7507 (license license:expat))) ; MIT license
7509 (define-public python-executing
7511 (name "python-executing")
7516 (uri (pypi-uri "executing" version))
7518 (base32 "08q0xh9fd8k41sqpp23q6fb9bf7yj4y2q6sv30pj36vvk8pg8fy2"))))
7519 (build-system python-build-system)
7521 `(#:tests? #f)) ; TODO: tests require python-asttokens
7523 (list python-setuptools-scm python-toml))
7524 (home-page "https://github.com/alexmojaki/executing")
7525 (synopsis "Get information about what a Python frame is currently doing")
7526 (description "This package lets you get information about what a frame is
7527 currently doing, particularly the AST node being executed.")
7528 (license license:expat)))
7530 (define-public python-executor
7532 (name "python-executor")
7537 (uri (pypi-uri "executor" version))
7539 (base32 "0g83yr54j0vcwhy6h7n0jsd7q0q630kwa6v9kqzlzrm9xj6c3ip1"))))
7540 (build-system python-build-system)
7542 `(#:tests? #f)) ; TODO: tests require root/sudo
7545 python-property-manager
7548 (home-page "https://github.com/xolox/python-executor")
7549 (synopsis "Programmer friendly subprocess wrapper")
7550 (description "The @code{executor} package is a simple wrapper for Python’s
7551 subprocess module that makes it very easy to handle subprocesses on UNIX
7552 systems with proper escaping of arguments and error checking currently doing,
7553 particularly the AST node being executed.")
7554 (license license:expat))) ; MIT license
7556 (define-public python-roifile
7558 (name "python-roifile")
7559 (version "2020.11.28")
7563 (uri (pypi-uri "roifile" version))
7566 "04argnc7qccybkrj9ww18bf81ghsghhh93hnqy3p111rcdlyn66p"))))
7567 (build-system python-build-system)
7568 (arguments `(#:tests? #f)) ; there are none
7570 (list python-numpy))
7571 (home-page "https://www.lfd.uci.edu/~gohlke/")
7572 (synopsis "Read and write ImageJ ROI format")
7573 (description "Roifile is a Python library to read, write, create, and plot
7574 ImageJ ROIs, an undocumented and ImageJ application specific format to store
7575 regions of interest, geometric shapes, paths, text, etc for image overlays.")
7576 (license license:bsd-3)))
7578 (define-public python-tifffile
7580 (name "python-tifffile")
7581 (version "2021.4.8")
7585 (uri (pypi-uri "tifffile" version))
7588 "16r0hw7shka1bqf28bv198lj2jhf2r9gy3s5zv4nf5cfsfm8pajm"))))
7589 (build-system python-build-system)
7590 ;; Tests require lfdfiles, which depends on tifffile
7591 (arguments `(#:tests? #f))
7593 (list python-numpy python-imagecodecs))
7594 (home-page "https://www.lfd.uci.edu/~gohlke/")
7595 (synopsis "Read and write TIFF(r) files")
7596 (description "This package lets you read image and metadata from many
7597 bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,
7598 NIH, ImageJ, MicroManager, MD GEL, and FluoView files. It also lets you write
7599 numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
7600 (license license:bsd-3)))
7602 (define-public python-lfdfiles
7604 (name "python-lfdfiles")
7605 (version "2021.2.22")
7609 (uri (pypi-uri "lfdfiles" version))
7612 "12fxm4v805dgjrih7x6jnl1wd7y7jw1rkhjs3d4am8s6qk1cbar2"))
7613 (modules '((guix build utils)))
7616 ;; Delete pre-generated Cython files.
7617 (for-each delete-file (find-files "lfdfiles" "_.*\\.c$"))
7619 (build-system python-build-system)
7621 `(#:tests? #f)) ; No tests exist, despite a test dependency on pytest.
7623 (list python-click python-numpy python-tifffile))
7624 (native-inputs (list python-cython))
7625 (home-page "https://www.lfd.uci.edu/~gohlke/")
7626 (synopsis "Work with LFD data files")
7628 "Lfdfiles is a Python library and console script for reading, writing,
7629 converting, and viewing many of the proprietary file formats used to store
7630 experimental data and metadata at the Laboratory for Fluorescence Dynamics.")
7631 (license license:bsd-3)))
7633 (define-public python-imageio
7635 (name "python-imageio")
7640 (uri (pypi-uri "imageio" version))
7643 "1ksjl523fm0fikrd85llxfba35rc1qsgwadgr6mbn9kis79xcpzv"))))
7644 (build-system python-build-system)
7646 `(#:tests? #f ; many tests require online data
7648 (modify-phases %standard-phases
7650 (lambda* (#:key outputs inputs tests? #:allow-other-keys)
7653 ;; Make installed package available for running the tests.
7654 (add-installed-pythonpath inputs outputs)
7655 (invoke "pytest" "-vv"))
7658 (list python-numpy python-pillow python-psutil))
7660 (list python-pytest))
7661 (home-page "https://imageio.github.io/")
7662 (synopsis "Library for reading and writing a wide range of image data")
7664 "Imageio is a Python library that provides an easy interface to read and
7665 write a wide range of image data, including animated images, video, volumetric
7666 data, and scientific formats.")
7667 (license license:bsd-2)))
7669 (define-public python-pyvips
7671 (name "python-pyvips")
7676 (uri (pypi-uri "pyvips" version))
7678 (base32 "1dfbwwvnnsk4g2kj1pw654z9jq3mb72l1m8ma29858jpn12vn7dm"))))
7679 (build-system python-build-system)
7682 #~(modify-phases %standard-phases
7683 ;; Maybe switch to API mode (i.e., build the C extension)?
7684 ;; It is advertised as faster to start up and run.
7685 ;; However, even with ‘pkg-config’ and ‘python-pkgconfig’ in
7686 ;; ‘native-inputs’, the API mode build fails with:
7688 ;; Falling back to ABI mode. Details: unable to find pkg-config package "vips"
7690 ;; The build doesn't actually fail without the below
7691 ;; substitution, it's just slower because ‘setup.py’ tries
7692 ;; (unsuccessfully) to download the Python ‘pkgconfig’ module.
7693 (add-after 'unpack 'fix-build
7695 (substitute* "setup.py"
7696 (("^( +setup_)API\\(\\)\n" _ prefix)
7697 (string-append prefix "ABI()\n")))))
7698 (add-after 'unpack 'fix-paths
7700 (substitute* "pyvips/__init__.py"
7701 (("^( +_vips_libname) = '(libvips.so.42)'"
7703 (format #f "~a = '~a/lib/~a'"
7704 var #$(this-package-input "vips") libname))
7705 (("^( +_gobject_libname) = '(libgobject-2.0.so.0)'"
7707 (format #f "~a = '~a/lib/~a'"
7708 var #$(this-package-input "glib") libname)))))
7710 (lambda* (#:key tests? #:allow-other-keys)
7712 (invoke "python" "setup.py" "test")))))))
7716 python-pytest-flake8
7717 python-pytest-runner))
7722 (home-page "https://github.com/libvips/pyvips")
7723 (synopsis "Python bindings for VIPS")
7724 (description "The @code{pyvips} package provides Python bindings for VIPS,
7725 a multithreaded image-processing system with low memory needs.")
7726 (license license:expat)))
7728 (define-public python-pycparser
7730 (name "python-pycparser")
7735 (uri (pypi-uri "pycparser" version))
7738 "01kjlyn5w2nn2saj8w1rhq7v26328pd91xwgqn32z1zp2bngsi76"))))
7739 (outputs '("out" "doc"))
7740 (build-system python-build-system)
7743 (modify-phases %standard-phases
7746 (invoke "python" "-m" "unittest" "discover")))
7747 (add-after 'install 'install-doc
7748 (lambda* (#:key outputs #:allow-other-keys)
7749 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
7750 (doc (string-append data "/doc/" ,name "-" ,version))
7751 (examples (string-append doc "/examples")))
7753 (for-each (lambda (file)
7754 (copy-file (string-append "." file)
7755 (string-append doc file)))
7756 '("/README.rst" "/CHANGES" "/LICENSE"))
7757 (copy-recursively "examples" examples)))))))
7758 (home-page "https://github.com/eliben/pycparser")
7759 (synopsis "C parser in Python")
7761 "Pycparser is a complete parser of the C language, written in pure Python
7762 using the PLY parsing library. It parses C code into an AST and can serve as
7763 a front-end for C compilers or analysis tools.")
7764 (license license:bsd-3)))
7766 (define-public python2-pycparser
7767 (package-with-python2 python-pycparser))
7769 (define-public python-xlsxwriter
7771 (name "python-xlsxwriter")
7775 ;; There are no tests in the PyPI tarball.
7778 (url "https://github.com/jmcnamara/XlsxWriter")
7779 (commit (string-append "RELEASE_" version))))
7780 (file-name (git-file-name name version))
7782 (base32 "1lr7mmik6r4zns069i4zfx1cnwhz6snmlh2zsiry0cwx8cv33wpm"))))
7783 (build-system python-build-system)
7784 (home-page "https://github.com/jmcnamara/XlsxWriter")
7785 (synopsis "Python module for creating Excel XLSX files")
7787 "XlsxWriter is a Python module that can be used to write text, numbers,
7788 formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
7789 (license license:bsd-2)))
7791 (define-public python-pywavelets
7793 (name "python-pywavelets")
7795 (home-page "https://github.com/PyWavelets/pywt")
7798 (uri (pypi-uri "PyWavelets" version))
7801 "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc"))
7804 (use-modules ((guix build utils)))
7805 (for-each delete-file
7807 "pywt/_extensions/_cwt.c"
7808 "pywt/_extensions/_dwt.c"
7809 "pywt/_extensions/_pywt.c"
7810 "pywt/_extensions/_pywt.h"
7811 "pywt/_extensions/_swt.c"))))))
7812 (build-system python-build-system)
7814 '(#:modules ((ice-9 ftw)
7818 (guix build python-build-system))
7820 (modify-phases %standard-phases
7823 (let ((cwd (getcwd))
7824 (libdir (find (cut string-prefix? "lib." <>)
7825 (scandir "build"))))
7826 (with-directory-excursion (string-append cwd "/build/" libdir)
7827 (invoke "pytest" "-vv"))))))))
7830 python-matplotlib ;for tests
7833 (list python-numpy))
7834 (synopsis "Wavelet transforms in Python")
7836 "PyWavelets is a library for wavelet transforms in Python. Wavelets are
7837 mathematical basis functions that are localized in both time and frequency.
7838 Wavelet transforms are time-frequency transforms employing wavelets. They are
7839 similar to Fourier transforms, the difference being that Fourier transforms are
7840 localized only in frequency instead of in time and frequency.")
7841 (license license:expat)))
7843 (define-public python-pywal
7845 (name "python-pywal")
7851 (url "https://github.com/dylanaraps/pywal")
7853 (file-name (git-file-name name version))
7855 (base32 "039m7dch479hlwddynacdrr0klz6a5bdly5swqbs94hfimficiyf"))))
7856 (build-system python-build-system)
7859 (modify-phases %standard-phases
7860 (add-before 'check 'fix-home-directory
7862 ;; Tests fail with "Permission denied: '/homeless-shelter'".
7863 (setenv "HOME" "/tmp")
7867 (home-page "https://github.com/dylanaraps/pywal")
7868 (synopsis "Color palette generator and applicator")
7870 "Pywal is a tool that generates a color palette from the dominant colors
7871 in an image. It then applies the colors system-wide and on-the-fly in all of
7872 your favourite programs.")
7873 (license license:expat)))
7875 (define-public python-click-didyoumean
7877 (name "python-click-didyoumean")
7882 (uri (pypi-uri "click-didyoumean" version))
7884 (base32 "0dc0xrmqbw0idpx843ahzzvivmvx3fcfsm3k54lnssyra7cg117i"))))
7885 (build-system python-build-system)
7887 `(#:tests? #f)) ; no tests in PyPI and no setup.py in github
7889 (list python-click))
7890 (home-page "https://github.com/timofurrer/click-didyoumean")
7891 (synopsis "Git-like did-you-mean feature in Click")
7893 "This plugin enables git-like did-you-mean feature in Click.")
7894 (license license:expat)))
7896 (define-public python-pywinrm
7898 (name "python-pywinrm")
7903 (uri (pypi-uri "pywinrm" version))
7906 "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf"))))
7907 (build-system python-build-system)
7909 (list python-six python-requests_ntlm python-xmltodict
7912 (list python-mock python-pytest))
7913 (home-page "https://github.com/diyan/pywinrm/")
7915 "Python library for Windows Remote Management (WinRM)")
7917 "pywinrm is a Python client for the Windows Remote Management (WinRM)
7918 service. It allows you to invoke commands on target Windows machines from
7919 any machine that can run Python.")
7920 (license license:expat)))
7922 (define-public python-xcffib
7924 (name "python-xcffib")
7929 (uri (pypi-uri "xcffib" version))
7932 "0nkglsm9nbhv238iagmmsjcz6lf1yfdvp5kmspphdj385vz9r50j"))))
7933 (build-system python-build-system)
7937 (list python-cffi ; used at run time
7940 `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
7943 (modify-phases %standard-phases
7944 (add-after 'unpack 'fix-libxcb-path
7945 (lambda* (#:key inputs #:allow-other-keys)
7946 (let ((libxcb (assoc-ref inputs "libxcb")))
7947 (substitute* '("xcffib/__init__.py")
7948 (("soname = ctypes.util.find_library.*xcb.*")
7949 (string-append "soname = \"" libxcb "/lib/libxcb.so\"\n")))
7951 (add-after 'install 'install-doc
7952 (lambda* (#:key outputs #:allow-other-keys)
7953 (let ((doc (string-append (assoc-ref outputs "out") "/share"
7954 "/doc/" ,name "-" ,version)))
7956 (copy-file "README.md"
7957 (string-append doc "/README.md"))
7959 (home-page "https://github.com/tych0/xcffib")
7960 (synopsis "XCB Python bindings")
7962 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
7963 support for Python 3 and PyPy. It is based on cffi.")
7964 (license license:expat)))
7966 (define-public python-cairocffi
7968 (name "python-cairocffi")
7972 ;; The PyPI archive does not include the documentation, so use Git.
7975 (url "https://github.com/Kozea/cairocffi")
7976 (commit (string-append "v" version))))
7977 (file-name (git-file-name name version))
7980 "0lylyxyyd8csjhn5kxwzrcr6ick6pvvm1wclpmb5ni28jznxn7lb"))))
7981 (build-system python-build-system)
7982 (outputs '("out" "doc"))
7984 (list glib gtk+ gdk-pixbuf cairo))
7989 python-pytest-runner
7991 python-sphinx-rtd-theme))
7993 (list python-xcffib)) ; used at run time
7996 (modify-phases %standard-phases
7997 (add-after 'unpack 'patch-paths
7998 (lambda* (#:key inputs #:allow-other-keys)
7999 (substitute* "cairocffi/__init__.py"
8000 ;; Hack the dynamic library loading mechanism.
8001 (("find_library\\(library_name\\)")
8003 (("filenames = \\(library_filename,\\) \\+ filenames")
8006 (search-input-file inputs "/lib/libcairo.so.2")))
8007 (substitute* "cairocffi/pixbuf.py"
8008 (("libgdk_pixbuf-2.0.so.0")
8009 (search-input-file inputs "/lib/libgdk_pixbuf-2.0.so.0"))
8010 (("libgobject-2.0.so.0")
8011 (search-input-file inputs "/lib/libgobject-2.0.so.0"))
8012 (("libglib-2.0.so.0")
8013 (search-input-file inputs "/lib/libglib-2.0.so.0"))
8015 (search-input-file inputs "/lib/libgdk-3.so.0")))))
8016 (add-after 'unpack 'disable-linters
8017 ;; Their check fails; none of our business.
8019 (substitute* "setup.cfg"
8020 ((".*pytest-flake8.*") "")
8021 ((".*pytest-isort.*") "")
8025 (add-after 'install 'install-doc
8026 (lambda* (#:key inputs outputs #:allow-other-keys)
8027 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
8028 (doc (string-append data "/doc/" ,name "-" ,version))
8029 (html (string-append doc "/html")))
8030 (setenv "LD_LIBRARY_PATH"
8031 (string-append (assoc-ref inputs "cairo") "/lib" ":"
8032 (assoc-ref inputs "gdk-pixbuf") "/lib"))
8033 (setenv "LANG" "en_US.UTF-8")
8035 (for-each (lambda (file)
8036 (copy-file (string-append "." file)
8037 (string-append doc file)))
8038 '("/README.rst" "/NEWS.rst"))
8039 (system* "python" "setup.py" "build_sphinx")
8040 (copy-recursively "docs/_build/html" html)
8042 (home-page "https://github.com/Kozea/cairocffi")
8043 (synopsis "Python bindings and object-oriented API for Cairo")
8045 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
8046 Python bindings and object-oriented API for cairo. Cairo is a 2D vector
8047 graphics library with support for multiple backends including image buffers,
8048 PNG, PostScript, PDF, and SVG file output.")
8049 (license license:bsd-3)))
8051 (define-public python-decorator
8053 (name "python-decorator")
8058 (uri (pypi-uri "decorator" version))
8060 (base32 "1mcy64hllgm938v8k1x2a4g0q9swsnrfnsvhz59kr28a6ajgpv3j"))))
8061 (build-system python-build-system)
8062 (home-page "https://pypi.org/project/decorator/")
8063 (synopsis "Python module to simplify usage of decorators")
8065 "The aim of the decorator module is to simplify the usage of decorators
8066 for the average programmer, and to popularize decorators usage giving examples
8067 of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
8068 etc. The core of this module is a decorator factory.")
8069 (license license:expat)))
8072 (define-public python-drmaa
8074 (name "python-drmaa")
8079 (uri (pypi-uri "drmaa" version))
8081 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
8082 (build-system python-build-system)
8083 ;; The test suite requires libdrmaa which is provided by the cluster
8084 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
8085 ;; should be set to the path of the libdrmaa library.
8088 #:phases (modify-phases %standard-phases
8089 ;; Loading the library fails because DRMAA_LIBRARY_PATH
8090 ;; is not configured.
8091 (delete 'sanity-check))))
8092 (home-page "https://pypi.org/project/drmaa/")
8093 (synopsis "Python bindings for the DRMAA library")
8095 "A Python package for Distributed Resource Management (DRM) job
8096 submission and control. This package is an implementation of the DRMAA 1.0
8097 Python language binding specification.")
8098 (license license:bsd-3)))
8100 (define-public python-grako
8102 (name "python-grako")
8108 (pypi-uri "grako" version ".zip"))
8111 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
8112 (build-system python-build-system)
8113 (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
8115 (list unzip python-pytest python-pytest-runner))
8116 (home-page "https://bitbucket.org/neogeny/grako")
8117 (synopsis "EBNF parser generator")
8119 "Grako takes a grammar in a variation of EBNF as input, and outputs a
8120 memoizing PEG/Packrat parser in Python.")
8121 (license license:bsd-3)))
8123 (define-public python-grandalf
8125 (name "python-grandalf")
8129 ;; There's no source tarball on PyPI.
8132 (url "https://github.com/bdcht/grandalf")
8133 (commit (string-append "v" version))))
8134 (file-name (git-file-name name version))
8137 "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g"))))
8138 (build-system python-build-system)
8141 (modify-phases %standard-phases
8144 (invoke "python" "setup.py" "pytest"))))))
8146 (list python-pytest python-pytest-runner))
8148 (list python-numpy python-ply))
8149 (home-page "https://github.com/bdcht/grandalf")
8150 (synopsis "Graph and drawing algorithms framework")
8152 "Grandalf is a Python package made for experimentations with graphs
8153 drawing algorithms. It is written in pure Python, and currently implements
8154 two layouts: the Sugiyama hierarchical layout and the force-driven or energy
8155 minimization approach. While not as fast or featured as graphviz or other
8156 libraries like OGDF (C++), it provides a way to walk and draw graphs no larger
8157 than thousands of nodes, while keeping the source code simple enough to tweak
8158 and hack any part of it for experimental purpose. With a total of about 1500
8159 lines of Python, the code involved in drawing the Sugiyama (dot) layout fits
8160 in less than 600 lines. The energy minimization approach is comprised of only
8163 Grandalf does only 2 not-so-simple things:
8165 @item computing the nodes (x,y) coordinates (based on provided nodes
8166 dimensions, and a chosen layout)
8167 @item routing the edges with lines or nurbs
8170 It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it
8171 will help you find where to draw things like nodes and edges, but it’s up to
8172 you to actually draw things with your favorite toolkit.")
8173 ;; The user can choose either license.
8174 (license (list license:gpl2 license:epl1.0))))
8176 (define-public python-gridmap
8178 (name "python-gridmap")
8184 (url "https://github.com/pygridtools/gridmap")
8185 (commit (string-append "v" version))))
8186 (file-name (git-file-name name version))
8188 (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l"))))
8189 (build-system python-build-system)
8191 '(#:tests? #f ;FIXME: Requires python-cherrypy.
8192 #:phases (modify-phases %standard-phases
8193 ;; Importing the web server module requires cherrypy, too.
8194 (delete 'sanity-check))))
8196 (list python-psutil python-drmaa python-pyzmq))
8197 (home-page "https://github.com/pygridtools/gridmap")
8198 (synopsis "Create jobs on a cluster directly from Python")
8200 "Gridmap is a Python package to allow you to easily create jobs on the
8201 cluster directly from Python. You can directly map Python functions onto the
8202 cluster without needing to write any wrapper code yourself.")
8203 (license license:gpl3+)))
8205 (define-public python-honcho
8207 (name "python-honcho")
8213 (url "https://github.com/nickstenning/honcho")
8214 (commit (string-append "v" version))))
8215 (file-name (git-file-name name version))
8217 (base32 "1y0r8dw4pqcq7r4n58ixjdg1iy60lp0gxsd7d2jmhals16ij71rj"))))
8218 (build-system python-build-system)
8220 (list python-pytest python-mock python-tox which)) ;for tests
8222 (list python-jinja2))
8225 (modify-phases %standard-phases
8227 (add-after 'install 'check
8228 (lambda* (#:key outputs inputs #:allow-other-keys)
8229 ;; fix honcho path in testsuite
8230 (substitute* "tests/conftest.py"
8231 (("'honcho'") (string-append "'" (assoc-ref outputs "out")
8232 "/bin/honcho" "'")))
8233 ;; It's easier to run tests after install.
8234 ;; Make installed package available for running the tests
8235 (add-installed-pythonpath inputs outputs)
8236 ;; Skip failing test_export
8237 (invoke "py.test" "-v" "-k" "not test_export"))))))
8238 (home-page "https://github.com/nickstenning/honcho")
8239 (synopsis "Manage Procfile-based applications")
8241 "A Procfile is a file which describes how to run an application
8242 consisting of several processes. honcho starts all listed processes.
8243 The output of all running processes is collected by honcho and
8245 (license license:expat)))
8247 (define-public python-pebble
8249 (name "python-pebble")
8254 (uri (pypi-uri "Pebble" version))
8256 (base32 "16siqc3brbk7dp4d9sg48bjl6a8wyy24aib3il1hf4y2624draxh"))))
8257 (build-system python-build-system)
8259 (list python-pytest))
8262 (modify-phases %standard-phases
8264 (lambda _ (invoke "python" "-m" "pytest" "-sv"))))))
8265 (home-page "https://github.com/noxdafox/pebble")
8266 (synopsis "Threading and multiprocessing for Python")
8268 "Pebble aims to help manage threads and processes in an easier way. It
8269 wraps Python's standard library threading and multiprocessing objects.")
8270 (license license:lgpl3+)))
8272 (define-public python-pexpect
8274 (name "python-pexpect")
8279 (uri (pypi-uri "pexpect" version))
8281 (base32 "032cg337h8awydgypz6f4wx848lw8dyrj4zy988x0lyib4ws8rgw"))))
8282 (build-system python-build-system)
8285 (modify-phases %standard-phases
8286 (add-before 'check 'prepare-tests
8288 (substitute* (find-files "tests")
8289 (("/bin/ls") (which "ls"))
8290 (("/bin/echo") (which "echo"))
8291 (("/bin/which") (which "which"))
8292 ;; Many tests try to use the /bin directory which
8293 ;; is not present in the build environment.
8294 ;; Use one that's non-empty and unlikely to change.
8296 ;; Disable failing test. See upstream bug report
8297 ;; https://github.com/pexpect/pexpect/issues/568
8298 (("def test_bash") "def _test_bash"))
8299 ;; XXX: Socket connection test gets "Connection reset by peer".
8300 ;; Why does it not work? Delete for now.
8301 (delete-file "tests/test_socket.py")
8303 (replace 'check (lambda _ (invoke "nosetests" "-v"))))))
8305 `(("python-nose" ,python-nose)
8306 ("python-pytest" ,python-pytest)
8309 ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
8311 (list python-ptyprocess))
8312 (home-page "http://pexpect.readthedocs.org/")
8313 (synopsis "Controlling interactive console applications")
8315 "Pexpect is a pure Python module for spawning child applications;
8316 controlling them; and responding to expected patterns in their output.
8317 Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
8318 child application and control it as if a human were typing commands.")
8319 (license license:isc)))
8321 (define-public python-sexpdata
8323 (name "python-sexpdata")
8328 (uri (pypi-uri "sexpdata" version))
8331 "1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s"))))
8332 (build-system python-build-system)
8333 (home-page "https://github.com/jd-boyd/sexpdata")
8334 (synopsis "S-expression parser for Python")
8336 "Sexpdata is an S-expression parser/serializer. It has load and dump
8337 functions like pickle, json or PyYAML module.")
8338 (license license:bsd-3)))
8340 (define-public python-pathlib2
8342 (name "python-pathlib2")
8343 (version "2.3.7.post1")
8347 (uri (pypi-uri "pathlib2" version))
8350 "0hf62d0lsf37vnr5fxqp5rfn85njgsr45j4rw71w10wbi6nyvq4z"))))
8351 (build-system python-build-system)
8353 (list python-scandir python-six))
8354 (home-page "https://pypi.org/project/pathlib2/")
8355 (synopsis "Object-oriented file system paths")
8356 (description "The goal of pathlib2 is to provide a backport of the
8357 standard @code{pathlib} module which tracks the standard library module, so
8358 all the newest features of the standard @code{pathlib} can be used also on
8359 older Python versions.")
8360 (license license:expat)))
8362 (define-public python-importlib-resources
8364 (name "python-importlib-resources")
8368 (uri (pypi-uri "importlib_resources" version))
8371 "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr"))))
8372 (build-system python-build-system)
8373 (native-inputs (list python-setuptools-scm python-toml))
8374 (home-page "http://importlib-resources.readthedocs.io/")
8375 (synopsis "Read resources from Python packages")
8377 "@code{importlib_resources} is a backport of Python 3's standard library
8378 @code{importlib.resources} module for Python 2.7, and Python 3.")
8379 (license license:asl2.0)))
8381 (define-public python-importlib-metadata
8383 (name "python-importlib-metadata")
8388 (uri (pypi-uri "importlib_metadata" version))
8391 "0f951zynlh39yicqnhrs3p1qa5p3g6ajjfcggf12y51ppxz5jk7a"))))
8392 (build-system python-build-system)
8396 #~(modify-phases %standard-phases
8397 ;; XXX: PEP 517 manual build/install procedures copied from
8401 ;; ZIP does not support timestamps before 1980.
8402 (setenv "SOURCE_DATE_EPOCH" "315532800")
8403 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
8405 (lambda* (#:key outputs #:allow-other-keys)
8406 (let ((whl (car (find-files "dist" "\\.whl$"))))
8407 (invoke "pip" "--no-cache-dir" "--no-input"
8408 "install" "--no-deps" "--prefix" #$output whl))))
8410 (lambda* (#:key tests? #:allow-other-keys)
8412 (invoke "pytest" "-vv" "tests")))))))
8413 (propagated-inputs (list python-zipp))
8415 (list python-pypa-build
8418 python-setuptools-scm))
8419 (home-page "https://importlib-metadata.readthedocs.io/")
8420 (synopsis "Read metadata from Python packages")
8422 "@code{importlib_metadata} is a library which provides an API for
8423 accessing an installed Python package's metadata, such as its entry points or
8424 its top-level name. This functionality intends to replace most uses of
8425 @code{pkg_resources} entry point API and metadata API. Along with
8426 @code{importlib.resources} in Python 3.7 and newer, this can eliminate the
8427 need to use the older and less efficient @code{pkg_resources} package.")
8428 (license license:asl2.0)))
8430 (define-public python-importmagic
8432 (name "python-importmagic")
8437 (uri (pypi-uri "importmagic" version))
8440 "1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz"))))
8441 (build-system python-build-system)
8444 #~(modify-phases %standard-phases
8446 (lambda* (#:key tests? #:allow-other-keys)
8448 (invoke "pytest" "-v")))))))
8450 (list python-pytest))
8451 (home-page "https://github.com/alecthomas/importmagic")
8452 (synopsis "Library for adding, removing and managing Python imports")
8454 "Importmagic is a Python library for automatically managing imports by
8455 finding unresolved symbols in Python code and their corresponding imports.")
8456 (license license:bsd-3)))
8458 (define-public python-inotify-simple
8460 (name "python-inotify-simple")
8466 (url "https://github.com/chrisjbillington/inotify_simple")
8468 (file-name (git-file-name name version))
8470 (base32 "1dv9svrcz31acyq9smjlnw75xv3x5wpn5h6s8j8h0vrqyl3d7l05"))))
8471 (build-system python-build-system)
8473 "https://github.com/chrisjbillington/inotify_simple")
8474 (synopsis "Simple wrapper around inotify library")
8476 "@code{inotify-simple} is a simple wrapper around inotify library.")
8477 (license license:bsd-3)))
8479 (define-public python-jaraco-classes
8481 (name "python-jaraco-classes")
8486 (uri (pypi-uri "jaraco.classes" version))
8488 (base32 "0d6g7qvfv1jlzbzh6asprqdblqd59grvlvr3nwbdqdqrmwlbfm7d"))))
8489 (build-system python-build-system)
8493 #~(modify-phases %standard-phases
8495 (lambda* (#:key tests? #:allow-other-keys)
8497 ;; Do not test the myproject.toml build as it tries to pull
8498 ;; dependencies from the Internet.
8499 (invoke "pytest" "-vv" "-k" "not project")))))))
8503 python-pytest-checkdocs
8505 python-pytest-enabler-bootstrap ;OK since not propagated
8506 python-pytest-flake8
8508 python-setuptools-scm
8510 (propagated-inputs (list python-more-itertools))
8511 (home-page "https://github.com/jaraco/jaraco.classes")
8512 (synopsis "Utility functions for Python class constructs")
8513 (description "This Python library contains utility functions for Python
8515 (license license:expat)))
8517 ;;; Variant used to break a cycle with python-pytest-enabler.
8518 (define-public python-jaraco-context-bootstrap
8521 (name "python-jaraco-context-bootstrap")
8526 (uri (pypi-uri "jaraco.context" version))
8528 (base32 "0hbjm1rpxf4pzmbdp9rh3ali4zqnlcr8m97bhh1nizxvzcpxim7h"))))
8529 (build-system python-build-system)
8530 (arguments (list #:tests? #f))
8531 (native-inputs (list python-setuptools-scm))
8532 (home-page "https://github.com/jaraco/jaraco.context")
8533 (synopsis "Context managers Python library")
8534 (description "This Python library provides context managers-related
8536 (license license:expat))))
8538 (define-public python-jaraco-context
8539 (package/inherit python-jaraco-context-bootstrap
8540 (name "python-jaraco-context")
8542 (substitute-keyword-arguments
8543 (package-arguments python-jaraco-context-bootstrap)
8545 (not (%current-target-system)))
8546 ((#:phases phases #~%standard-phases)
8547 #~(modify-phases #$phases
8549 (lambda* (#:key tests? #:allow-other-keys)
8551 ;; Do not test the myproject.toml build as it tries to pull
8552 ;; dependencies from the Internet.
8553 (invoke "pytest" "-vv" "-k" "not project"))))))))
8556 (package-native-inputs python-jaraco-context-bootstrap)
8557 (append python-pytest
8559 python-pytest-checkdocs
8561 python-pytest-enabler-bootstrap ;OK since not propagated
8562 python-pytest-flake8
8563 python-pytest-mypy)))
8564 (properties (alist-delete 'hidden? (package-properties
8565 python-jaraco-context-bootstrap)))))
8567 ;;; Variant used to break a cycle with python-pytest-enabler.
8568 (define-public python-jaraco-functools-bootstrap
8571 (name "python-jaraco-functools-bootstrap")
8576 (uri (pypi-uri "jaraco.functools" version))
8578 (base32 "186xqzs3bqhjwajnprxy3sc3h0w5vdld8spc1dxjnn9720yykq1i"))))
8579 (build-system python-build-system)
8580 (arguments (list #:tests? #f))
8581 (native-inputs (list python-setuptools-scm))
8582 (propagated-inputs (list python-more-itertools))
8583 (home-page "https://github.com/jaraco/jaraco.functools")
8584 (synopsis "Python library extending Python's @code{functools}")
8585 (description "This library extends the standard @code{functools} Python
8586 module with a few extra procedures.")
8587 (license license:expat))))
8589 (define-public python-jaraco-functools
8590 (package/inherit python-jaraco-functools-bootstrap
8591 (name "python-jaraco-functools")
8593 (substitute-keyword-arguments
8594 (package-arguments python-jaraco-functools-bootstrap)
8596 (not (%current-target-system)))
8597 ((#:phases phases #~%standard-phases)
8598 #~(modify-phases #$phases
8600 (lambda* (#:key tests? #:allow-other-keys)
8602 ;; Do not test the myproject.toml build as it tries to pull
8603 ;; dependencies from the Internet. Do not run a test that
8604 ;; tries to emulate a broken proprietary CI set-up, fails
8605 ;; to do so correctly, and then throws an error about it.
8606 (invoke "pytest" "-vv" "-k"
8607 "not project and not test_function_throttled"))))))))
8610 (package-native-inputs python-jaraco-functools-bootstrap)
8611 (append python-jaraco-classes
8614 python-pytest-checkdocs
8616 python-pytest-enabler-bootstrap ;OK since not propagated
8617 python-pytest-flake8
8618 python-pytest-mypy)))
8619 (properties (alist-delete 'hidden? (package-properties
8620 python-jaraco-functools-bootstrap)))))
8622 (define-public python-jaraco-packaging
8624 (name "python-jaraco-packaging")
8629 (uri (pypi-uri "jaraco.packaging" version))
8632 "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm"))))
8633 (build-system python-build-system)
8636 python-pytest-checkdocs
8637 python-pytest-flake8
8640 python-setuptools-scm
8643 (home-page "https://github.com/jaraco/jaraco.packaging")
8644 (synopsis "Tools to supplement packaging Python releases")
8646 "This package provides various tools to supplement packaging Python
8648 (license license:expat)))
8650 (define-public python-simplegeneric
8652 (name "python-simplegeneric")
8657 (uri (pypi-uri "simplegeneric" version ".zip"))
8659 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
8660 (build-system python-build-system)
8663 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
8664 (synopsis "Python module for simple generic functions")
8666 "The simplegeneric module lets you define simple single-dispatch generic
8667 functions, akin to Python’s built-in generic functions like @code{len()},
8668 @code{iter()} and so on. However, instead of using specially-named methods,
8669 these generic functions use simple lookup tables, akin to those used by
8670 e.g. @code{pickle.dump()} and other generic functions found in the Python
8672 (license license:zpl2.1)))
8674 (define-public python-ipython-genutils
8675 ;; TODO: This package is retired, check if can be removed, see description.
8677 (name "python-ipython-genutils")
8682 (uri (pypi-uri "ipython_genutils" version))
8684 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
8685 (build-system python-build-system)
8686 (arguments `(#:tests? #f)) ; no tests
8687 (home-page "https://ipython.org")
8688 (synopsis "Vestigial utilities from IPython")
8690 "This package provides retired utilities from IPython. No packages
8691 outside IPython/Jupyter should depend on it.
8693 This package shouldn't exist. It contains some common utilities shared by
8694 Jupyter and IPython projects during The Big Split. As soon as possible, those
8695 packages will remove their dependency on this, and this package will go
8697 (license license:bsd-3)))
8699 ;;; Variant used to break a cycle with python-ipykernel.
8700 (define-public python-ipyparallel-bootstrap
8703 (name "python-ipyparallel-bootstrap")
8708 (uri (pypi-uri "ipyparallel" version))
8711 "0wiwfd7870zbmczzn96jqxxjf2zcbcaxnsl1ddn8hspwa8y4frzj"))))
8712 (build-system python-build-system)
8716 #:phases #~(modify-phases %standard-phases
8717 ;; The python-ipykernel is normally propagated but is
8718 ;; removed from this package to break the cycle.
8719 (delete 'sanity-check))))
8721 (list python-dateutil
8725 ;; python-ipykernel is omitted here to break a cycle.
8726 python-jupyter-client-bootstrap
8732 (home-page "https://ipython.org/")
8733 (synopsis "Interactive Parallel Computing with IPython")
8735 "@code{ipyparallel} is a Python package and collection of CLI scripts for
8736 controlling clusters for Jupyter. @code{ipyparallel} contains the following
8739 @item ipcluster - start/stop a cluster
8740 @item ipcontroller - start a scheduler
8741 @item ipengine - start an engine
8743 (license license:bsd-3))))
8745 (define-public python-ipyparallel
8747 (inherit python-ipyparallel-bootstrap)
8748 (name "python-ipyparallel")
8752 #~(modify-phases %standard-phases
8755 (invoke "pytest" "-vv"))))))
8757 (list python-ipython
8759 python-pytest-asyncio
8761 python-pytest-tornado
8764 (modify-inputs (package-propagated-inputs python-ipyparallel-bootstrap)
8765 (replace "python-jupyter-client-bootstrap" python-jupyter-client)
8766 (append python-ipykernel)))
8767 (properties (alist-delete 'hidden? (package-properties
8768 python-ipyparallel-bootstrap)))))
8770 (define-public python-ipython-cluster-helper
8772 (name "python-ipython-cluster-helper")
8777 (uri (pypi-uri "ipython-cluster-helper" version))
8780 "1l6mlwxlkxpbvawfwk6qffich7ahg9hq2bxfissgz6144p3k4arj"))
8781 (modules '((guix build utils)))
8783 '(begin (substitute* "requirements.txt"
8784 (("ipython.*") "ipython\n"))
8786 (build-system python-build-system)
8788 `(#:tests? #f ; Test suite can't find IPython.
8790 (modify-phases %standard-phases
8792 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
8795 (setenv "HOME" (getcwd))
8796 (add-installed-pythonpath inputs outputs)
8797 (invoke "python" "example/example.py" "--local"))
8800 (list python-ipyparallel
8806 (home-page "https://github.com/roryk/ipython-cluster-helper")
8808 "Simplify IPython cluster start up and use for multiple schedulers")
8810 "@code{ipython-cluster-helper} creates a throwaway parallel IPython
8811 profile, launches a cluster and returns a view. On program exit it shuts the
8812 cluster down and deletes the throwaway profile.")
8813 (license license:expat)))
8815 (define-public python-ipython-sql
8817 (name "python-ipython-sql")
8822 (uri (pypi-uri "ipython-sql" version))
8824 (base32 "1r6rz8jgrqzhkf2flwjw75d96g8l7kykmx5wli3q1988w96391ip"))))
8825 (build-system python-build-system)
8827 (list #:tests? #f ;must run under IPython
8829 #~(modify-phases %standard-phases
8830 (add-after 'unpack 'permit-newer-prettytable
8831 ;; See https://github.com/catherinedevlin/ipython-sql/issues/202
8833 (substitute* "setup.py"
8835 "prettytable")))))))
8837 (list python-ipython
8838 python-ipython-genutils
8843 (home-page "https://github.com/catherinedevlin/ipython-sql")
8844 (synopsis "RDBMS access via IPython")
8845 (description "This library connects to a database, using SQLAlchemy URL
8846 connect strings, then issue SQL commands within IPython or IPython Notebook.")
8847 (license license:expat)))
8849 (define-public python-traitlets
8851 (name "python-traitlets")
8856 (uri (pypi-uri "traitlets" version))
8859 "1ivhxglsrnhqw4g98ihddn7i5f6976gpk31fijwq473wb9n4b7q5"))))
8860 (build-system python-build-system)
8863 (modify-phases %standard-phases
8864 (replace 'check (lambda* (#:key tests? #:allow-other-keys)
8866 (invoke "pytest" "-vv" "traitlets")))))))
8868 (list python-pytest))
8869 (home-page "https://ipython.org")
8870 (synopsis "Configuration system for Python applications")
8872 "Traitlets is a framework that lets Python classes have attributes with
8873 type checking, dynamically calculated default values, and ‘on change’
8874 callbacks. The package also includes a mechanism to use traitlets for
8875 configuration, loading values from files or from command line arguments. This
8876 is a distinct layer on top of traitlets, so you can use traitlets in your code
8877 without using the configuration machinery.")
8878 (license license:bsd-3)))
8880 (define-public python-jupyter-core
8882 (name "python-jupyter-core")
8887 (uri (string-append (pypi-uri "jupyter_core" version)))
8890 "1v0s31rmwppdmww135hif03hy164j9kimirh24kxfcbvdfql9pm6"))))
8891 (build-system python-build-system)
8894 (modify-phases %standard-phases
8896 (lambda* (#:key tests? #:allow-other-keys)
8898 ;; Some tests write to $HOME.
8899 (setenv "HOME" "/tmp")
8900 (invoke "pytest" "-vv"
8903 ;; XXX: These tests fail with "ModuleNotFoundError: No
8904 ;; module named 'jupyter_core'".
8905 "not test_argv0 and not test_path_priority "
8906 "and not test_not_on_path")))))
8907 (add-after 'unpack 'patch-testsuite
8909 ;; test_not_on_path() and test_path_priority() try to run a test
8910 ;; that loads jupyter_core, so we need GUIX_PYTHONPATH
8911 (substitute* "jupyter_core/tests/test_command.py"
8912 (("env = \\{'PATH': ''\\}")
8913 "env = {'PATH': '', 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}")
8914 (("env = \\{'PATH': str\\(b\\)\\}")
8915 "env = {'PATH': str(b), 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}"))))
8916 ;; Migration is running whenever etc/jupyter exists, but the
8917 ;; Guix-managed directory will never contain any migratable IPython
8918 ;; config files and cannot be written to anyway, so just pretend we
8919 ;; already did that.
8920 (add-after 'install 'disable-migration
8921 (lambda* (#:key outputs #:allow-other-keys)
8922 (mkdir-p (string-append (assoc-ref outputs "out") "/etc/jupyter"))
8925 (assoc-ref outputs "out")
8926 "/etc/jupyter/migrated")))))))
8927 (propagated-inputs (list python-traitlets))
8928 (native-inputs (list python-pytest))
8929 ;; This package provides the `jupyter` binary and thus also exports the
8931 (native-search-paths
8932 (list (search-path-specification
8933 (variable "JUPYTER_CONFIG_PATH")
8934 (files '("etc/jupyter")))
8935 (search-path-specification
8936 (variable "JUPYTER_PATH")
8937 (files '("share/jupyter")))))
8938 (home-page "https://jupyter.org/")
8939 (synopsis "Jupyter base package")
8941 "Jupyter core is the base package on which Jupyter projects rely.")
8942 (license license:bsd-3)))
8944 ;; Bootstrap variant of jupyter-client, which breaks the loop between ipykernel
8945 ;; and jupyter-client by removing the former from its native-inputs and
8947 (define-public python-jupyter-client-bootstrap
8950 (name "python-jupyter-client-bootstrap")
8955 (uri (pypi-uri "jupyter_client" version))
8958 "12pbp177bfb3710y1a5598mwn8ffhyzmpll67m0nmalb98savnwg"))))
8959 (build-system python-build-system)
8964 #~(modify-phases %standard-phases
8965 (add-after 'unpack 'set-tool-file-names
8966 (lambda* (#:key inputs #:allow-other-keys)
8967 (substitute* "jupyter_client/localinterfaces.py"
8969 (format #f "'~a'" (search-input-file inputs "sbin/ip")))))))))
8970 (inputs (list iproute))
8972 (list python-dateutil
8979 (home-page "https://jupyter.org/")
8980 (synopsis "Jupyter protocol implementation and client libraries")
8982 "The @code{jupyter_client} package contains the reference implementation
8983 of the Jupyter protocol. It also provides client and kernel management APIs
8984 for working with kernels, and the @code{jupyter kernelspec} entrypoint for
8985 installing @code{kernelspec}s for use with Jupyter frontends.")
8986 (license license:bsd-3))))
8988 (define-public python-jupyter-client
8989 (let ((base python-jupyter-client-bootstrap))
8992 (name "python-jupyter-client")
8994 (substitute-keyword-arguments (package-arguments base)
8996 (not (%current-target-system)))
8997 ((#:phases phases #~%standard-phases)
8998 #~(modify-phases #$phases
9000 (lambda* (#:key tests? #:allow-other-keys)
9002 ;; Some tests try to write to $HOME.
9003 (setenv "HOME" "/tmp")
9004 (invoke "pytest" "-vv"))))))))
9007 python-pytest-asyncio
9008 python-pytest-timeout
9009 python-async-generator
9011 python-ipykernel-bootstrap))
9012 (properties (alist-delete 'hidden? (package-properties base))))))
9014 (define-public python-ipykernel
9016 (name "python-ipykernel")
9021 (uri (pypi-uri "ipykernel" version))
9023 (base32 "0q5yni8h08nadsn53f957p0pjsjhwl2b2lp1hqz3jn0854z2fa0f"))))
9024 (build-system python-build-system)
9027 #:imported-modules `(,@%python-build-system-modules
9028 (guix build syscalls))
9029 #:modules '((guix build python-build-system)
9030 (guix build syscalls)
9034 #~(modify-phases %standard-phases
9036 (lambda* (#:key tests? #:allow-other-keys)
9038 (match (primitive-fork)
9040 (set-child-subreaper!)
9041 ;; XXX: Tini provides proper PID1-like signal handling that
9042 ;; reaps zombie processes, necessary for the
9043 ;; 'test_shutdown_subprocesses' test to pass.
9045 ;; TODO: Complete https://issues.guix.gnu.org/30948.
9046 (setenv "HOME" "/tmp")
9047 (execlp "tini" "--" "pytest" "-vv"))
9049 (match (waitpid pid)
9051 (unless (zero? status)
9052 (error "`pytest' exited with status"
9054 (add-after 'install 'set-python-file-name
9055 (lambda* (#:key inputs #:allow-other-keys)
9056 ;; Record the absolute file name of the 'python' executable in
9058 (substitute* (string-append #$output "/share/jupyter"
9059 "/kernels/python3/kernel.json")
9061 (format #f "~s" (search-input-file inputs
9062 "/bin/python3")))))))))
9064 (list python-debugpy
9066 python-jupyter-client ;imported at runtime during connect
9067 python-matplotlib-inline
9068 ;;python-nest-asyncio
9073 (inputs (list python)) ;for cross compilation
9076 python-ipyparallel-bootstrap
9077 ;; XXX: Our Pytest package captures its native inputs in its
9078 ;; wrapper script (such as python-nose), which is used in the code
9079 ;; and causes deprecation warnings. Using the bootstrap variant
9081 python-pytest-bootstrap
9082 python-pytest-timeout
9084 (home-page "https://ipython.org")
9085 (synopsis "IPython Kernel for Jupyter")
9086 (description "This package provides the IPython kernel for Jupyter.")
9087 (license license:bsd-3)))
9089 ;; Bootstrap variant of ipykernel, which uses the bootstrap jupyter-client to
9090 ;; break the cycle between ipykernel and jupyter-client.
9091 (define-public python-ipykernel-bootstrap
9092 (let ((parent python-ipykernel))
9096 (name "python-ipykernel-bootstrap")
9097 (arguments (list #:tests? #f
9098 ;; The package should normally propagate ipykernel,
9099 ;; left out here to break the cycle.
9100 #:phases #~(modify-phases %standard-phases
9101 (delete 'sanity-check))))
9104 (modify-inputs (package-propagated-inputs parent)
9105 (replace "python-jupyter-client" python-jupyter-client-bootstrap)
9106 (append python-ipyparallel-bootstrap)))))))
9108 (define-public python-pari-jupyter
9110 (name "python-pari-jupyter")
9115 (uri (pypi-uri "pari-jupyter" version))
9118 "1ikqvv335qfrhmlji0iclci6pnm2c3fvnxf031jr1d68j79g6ypd"))))
9119 (build-system python-build-system)
9120 (arguments '(#:tests? #f)) ;no test suite
9122 (list pari-gp readline python-ipykernel))
9123 (home-page "https://github.com/sagemath/pari-jupyter")
9124 (synopsis "Jupyter kernel for PARI/GP")
9125 (description "The package provides a PARI/GP kernel for Jupyter.")
9126 (license license:gpl3+)))
9128 (define-public python-backcall
9130 (name "python-backcall")
9135 (uri (pypi-uri "backcall" version))
9138 "07jy4562lvnhkk6kfr3cphmizy88anlhmbwb8kdzlz2ypqkvzgaw"))))
9139 (build-system python-build-system)
9140 (home-page "https://github.com/takluyver/backcall/")
9141 (synopsis "Specifications for callback functions passed in to an API")
9143 "If your code lets other people supply callback functions, it's important
9144 to specify the function signature you expect, and check that functions support
9145 that. Adding extra parameters later would break other peoples code unless
9146 you're careful. The @code{backcall} package provides a way of specifying the
9147 callback signature using a prototype function.")
9148 (license license:bsd-3)))
9150 (define-public python-pure-eval
9152 (name "python-pure-eval")
9157 (uri (pypi-uri "pure_eval" version))
9159 (base32 "1hwsm85cwqwh6d6x4vzcimla2865s6v19ms3ym81ganzyq534i9b"))))
9160 (build-system python-build-system)
9161 (native-inputs (list python-pytest python-setuptools-scm))
9162 (home-page "https://github.com/alexmojaki/pure_eval")
9163 (synopsis "Python library to evaluate abstract syntax tree nodes")
9164 (description "The @code{pure_eval} Python library can safely evaluate
9165 abstract syntax tree (AST) nodes without side effects.")
9166 (license license:expat)))
9168 (define-public python-asttokens
9170 (name "python-asttokens")
9175 (uri (pypi-uri "asttokens" version))
9177 (base32 "1mglbkikxvnhrk3inbx0v1qzxwd38qjr6l35sn098yicy0ac2m4s"))))
9178 (build-system python-build-system)
9179 (propagated-inputs (list python-six))
9180 (native-inputs (list python-astroid python-pytest python-setuptools-scm))
9181 (home-page "https://github.com/gristlabs/asttokens")
9182 (synopsis "Python library to annotate abstract syntax trees")
9183 (description "The @code{asttokens} module annotates Python abstract syntax
9184 trees (ASTs) with the positions of tokens and text in the source code that
9185 generated them. It makes it possible for tools that work with logical AST
9186 nodes to find the particular text that resulted in those nodes, for example
9187 for automated refactoring or highlighting.")
9188 (license license:asl2.0)))
9190 (define-public python-littleutils
9192 (name "python-littleutils")
9197 (uri (pypi-uri "littleutils" version))
9199 (base32 "0vwijrylppmk0nbddqvn527r9cg3zw8d6zk6r58hslry42jf7jp6"))))
9200 (build-system python-build-system)
9201 (home-page "https://github.com/alexmojaki/littleutils")
9202 (synopsis "Python utility function collection")
9203 (description "@code{littleutils} is a small collection of Python utility
9204 functions, useful in the context of writing unit tests among other uses.")
9205 (license license:expat)))
9207 (define-public python-stack-data
9209 (name "python-stack-data")
9214 (uri (pypi-uri "stack_data" version))
9216 (base32 "04lfcj5qrn4qikjw89qbdzqwm0xm4bgm4m8rll1rafk3pm0jssa5"))))
9217 (build-system python-build-system)
9218 (propagated-inputs (list python-asttokens python-executing python-pure-eval))
9224 python-setuptools-scm
9226 (home-page "https://github.com/alexmojaki/stack_data")
9227 (synopsis "Python stack frame and traceback manipulation library")
9228 (description "The @code{stack_data} Python library extracts data from
9229 stack frames and tracebacks. Is can be used to display more useful tracebacks
9231 (license license:expat)))
9233 (define-public python-ipython
9235 (name "python-ipython")
9240 (uri (pypi-uri "ipython" version ".tar.gz"))
9242 (base32 "1hcxa713wh3axa57412iy02rj0494ljvv6gpnls4lndc5h9yprbh"))))
9243 (build-system python-build-system)
9246 (modify-phases %standard-phases
9247 (add-after 'unpack 'make-docs-reproducible
9249 (substitute* "IPython/sphinxext/ipython_directive.py"
9250 ((".*import datetime") "")
9251 ((".*datetime.datetime.now\\(\\)") "")
9252 (("%timeit") "# %timeit"))))
9254 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
9256 (setenv "HOME" "/tmp/") ;required by some tests
9257 (invoke "python" "-m" "pytest" "-vv")))))))
9258 (inputs (list readline which))
9260 (list python-backcall
9266 python-matplotlib-inline
9273 python-prompt-toolkit
9276 python-simplegeneric
9287 (home-page "https://ipython.org")
9288 (synopsis "IPython is a tool for interactive computing in Python")
9290 "IPython provides a rich architecture for interactive computing with:
9291 Powerful interactive shells, a browser-based notebook, support for interactive
9292 data visualization, embeddable interpreters and tools for parallel
9294 (properties '((cpe-name . "ipython")))
9295 (license license:bsd-3)))
9297 (define-public python-ipython-documentation
9299 (inherit python-ipython)
9300 (name "python-ipython-documentation")
9301 (version (package-version python-ipython))
9304 (inherit (package-source python-ipython))
9305 (patches (append (search-patches
9306 "python-ipython-documentation-chars.patch"
9307 "python-ipython-documentation-repro.patch")
9308 (origin-patches (package-source python-ipython))))))
9312 #~(modify-phases %standard-phases
9313 (add-after 'unpack 'set-pythonpath
9315 ;; Ensure this fixed (via the
9316 ;; "python-ipython-documentation-chars.patch" patch) copy of
9317 ;; IPython gets used.
9318 (setenv "PYTHONPATH" (string-append (getcwd)))))
9319 (add-before 'build 'configure-sphinx-for-xelatex
9321 ;; Use XeLaTeX instead of PDFLaTeX, as it can
9322 ;; cope with the Unicode characters present in the
9323 ;; contributors page, for example.
9324 (substitute* "docs/source/conf.py"
9325 (("project = 'IPython'.*" all)
9326 (string-append all "latex_engine = 'xelatex'\n")))
9327 ;; XXX: The Sphinx-generated ipython.tex specifies the GNU
9328 ;; FreeFont font to be searched via its extension, which uses
9329 ;; kpathsea instead of fontconfig and fail (see:
9330 ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a
9331 ;; symlink to GNU FreeFont and add it to the TEXMF tree via
9333 (mkdir-p "texmf-dist/fonts/opentype/public")
9334 (symlink (string-append
9335 #$(this-package-native-input "font-gnu-freefont")
9336 "/share/fonts/opentype")
9339 "texmf-dist/fonts/opentype/public/gnu-freefont"))
9340 (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":"
9341 (getcwd) "/texmf-dist"))))
9345 (lambda* (#:key outputs #:allow-other-keys)
9346 (let* ((data (string-append #$output "/share"))
9347 (doc (string-append data "/doc/" #$name "-" #$version))
9348 (html (string-append doc "/html"))
9349 (info (string-append data "/info")))
9350 (invoke "make" "-C" "docs" "info" "html" "pdf"
9351 (string-append "SPHINXOPTS=-j"
9352 (number->string (parallel-job-count))))
9353 (install-file "COPYING.rst" doc)
9354 (copy-recursively "examples" (string-append doc "/examples"))
9355 ;; Install HTML documentation.
9356 (copy-recursively "docs/build/html" html)
9357 ;; Likewise for the PDF.
9358 (install-file "docs/build/latex/ipython.pdf" doc)
9359 ;; Likewise for the info manual.
9360 (install-file "docs/build/texinfo/ipython.info" info)
9361 (symlink (string-append html "/_images")
9362 (string-append info "/ipython-figures"))))))))
9364 (list fontconfig ;for XDG_DATA_DIRS to locate fonts
9369 python-sphinx-rtd-theme
9375 (define-public python-urwid
9377 (name "python-urwid")
9382 (uri (pypi-uri "urwid" version))
9385 "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq"))))
9386 (build-system python-build-system)
9390 #~(modify-phases %standard-phases
9391 (add-after 'unpack 'remove-vterm-tests
9392 ;; According to Debian these tests are cursed.
9393 ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141
9395 (delete-file "urwid/tests/test_vterm.py"))))))
9396 (home-page "http://urwid.org")
9397 (synopsis "Console user interface library for Python")
9399 "Urwid is a curses-based UI/widget library for Python. It includes many
9400 features useful for text console applications.")
9401 (license license:lgpl2.1+)))
9403 (define-public python-urwid-readline
9405 (name "python-urwid-readline")
9411 (url "https://github.com/rr-/urwid_readline")
9413 (file-name (git-file-name name version))
9416 "0y9k86p31mlr9rwnrbljvfgl183r5j60yaj0r3scljn1m0mlg8qg"))))
9417 (build-system python-build-system)
9420 (modify-phases %standard-phases
9422 (lambda* (#:key tests? #:allow-other-keys)
9424 (invoke "pytest" "-vv")))))))
9425 (propagated-inputs (list python-urwid))
9426 (native-inputs (list python-pytest))
9427 (home-page "https://github.com/rr-/urwid_readline")
9428 (synopsis "Text input widget for urwid that supports readline shortcuts")
9430 "This package provides a textbox edit widget for @code{python-urwid} that
9431 supports @code{readline} shortcuts.")
9432 (license license:expat)))
9434 (define-public python-textdistance
9436 (name "python-textdistance")
9440 ;; There are no tests in the PyPI tarball.
9443 (url "https://github.com/life4/textdistance")
9444 (commit (string-append "v." version))))
9445 (file-name (git-file-name name version))
9447 (base32 "1g17i356fnny4k6hjr2ayy9k77jbvd6zzmngws2kbrnvhss1wgwf"))))
9448 (build-system python-build-system)
9450 `(#:test-target "pytest"
9452 (modify-phases %standard-phases
9453 (add-after 'unpack 'delete-external-test
9455 ;; All tests in this file require external libraries.
9456 (delete-file "tests/test_external.py")
9459 (list python-hypothesis
9463 python-pytest-runner
9465 (home-page "https://github.com/life4/textdistance")
9466 (synopsis "Compute distance between the two texts")
9467 (description "@code{textdistance} is a pure Python library for comparing
9468 distance between two or more sequences by many algorithms.")
9469 (license license:expat)))
9471 (define-public python-urwidtrees
9473 (name "python-urwidtrees")
9478 ;; package author intends on distributing via github rather than pypi:
9479 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
9481 (url "https://github.com/pazz/urwidtrees")
9483 (file-name (git-file-name name version))
9486 "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68"))))
9487 (build-system python-build-system)
9489 '(#:tests? #f)) ; no tests
9490 (propagated-inputs (list python-urwid))
9491 (native-inputs (list python-mock))
9492 (home-page "https://github.com/pazz/urwidtrees")
9493 (synopsis "Tree widgets for urwid")
9494 (description "Urwidtrees is a Widget Container API for the @code{urwid}
9495 toolkit. Use it to build trees of widgets.")
9496 (license license:gpl3+)))
9498 (define-public python-ua-parser
9500 (name "python-ua-parser")
9505 (uri (pypi-uri "ua-parser" version))
9508 "0csh307zfz666kkk5idrw3crj1x8q8vsqgwqil0r1n1hs4p7ica7"))))
9509 (build-system python-build-system)
9511 `(#:tests? #f)) ;no test suite in release
9513 (list python-pyyaml))
9514 (home-page "https://github.com/ua-parser/uap-python")
9515 (synopsis "User agent parser")
9517 "@code{ua-parser} is a Python port of Browserscope's user agent parser.")
9518 (license license:asl2.0)))
9520 (define-public python-user-agents
9522 (name "python-user-agents")
9527 (uri (pypi-uri "user-agents" version))
9530 "09mddriffm9rkwr30081fy9n3cn976ms8pwc8p8hhlxnilbjavfk"))))
9531 (build-system python-build-system)
9533 `(#:tests? #f)) ;missing devices.json test file in release
9535 (list python-ua-parser))
9536 (home-page "https://github.com/selwin/python-user-agents")
9537 (synopsis "User Agent strings parsing library")
9539 "A library to identify devices (phones, tablets) and their capabilities by
9540 parsing (browser/HTTP) user agent strings.")
9541 (license license:expat)))
9543 (define-public python-pydbus
9545 (name "python-pydbus")
9550 (uri (pypi-uri "pydbus" version))
9552 (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2"))))
9553 (build-system python-build-system)
9554 (propagated-inputs (list python-pygobject))
9555 (home-page "https://github.com/LEW21/pydbus")
9556 (synopsis "Pythonic D-Bus library")
9557 (description "Pydbus provides a pythonic interface to the D-Bus
9558 message bus system. Pydbus can be used to access remote objects and
9559 also for object publication. It is based on PyGI, the Python GObject
9560 Introspection bindings, which is the recommended way to use GLib from Python.")
9561 (license license:lgpl2.1+)))
9563 (define-public python-dbus
9565 (name "python-dbus")
9570 (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/"
9571 "dbus-python-" version ".tar.gz"))
9573 (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj"))))
9574 (build-system gnu-build-system)
9578 `(("python" ,python-wrapper)
9579 ("dbus-glib" ,dbus-glib)))
9580 (synopsis "Python bindings for D-bus")
9581 (description "python-dbus provides bindings for libdbus, the reference
9582 implementation of D-Bus.")
9583 (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/")
9584 (properties `((python2-variant . ,(delay python2-dbus))))
9585 (license license:expat)))
9587 (define-public python2-dbus
9588 (package/inherit python-dbus
9589 (name "python2-dbus")
9590 (inputs `(("python" ,python-2)
9591 ,@(alist-delete "python"
9592 (package-inputs python-dbus))))
9594 `(#:configure-flags '("PYTHON_VERSION=2")))))
9596 (define-public python-dbus-next
9598 (name "python-dbus-next")
9604 (url "https://github.com/altdesktop/python-dbus-next")
9605 (commit (string-append "v" version))))
9606 (file-name (git-file-name name version))
9609 "1ahaz52kny1p9xxv6phvk4iq56rg8li390wywlxf2yslaij1188h"))))
9610 (build-system python-build-system)
9612 (list python-pytest))
9613 (home-page "https://github.com/altdesktop/python-dbus-next")
9614 (synopsis "Zero-dependency DBus library for Python with asyncio support")
9616 "This DBus library for Python aims to be a fully-featured high-level
9617 library primarily geared towards integration of applications into desktop and
9618 mobile environments.")
9619 (license license:expat)))
9621 (define-public python-notify2
9623 (name "python-notify2")
9628 (uri (pypi-uri "notify2" version))
9631 "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik"))))
9632 (build-system python-build-system)
9633 (arguments `(#:tests? #f)) ; tests depend on system state
9636 (home-page "https://bitbucket.org/takluyver/pynotify2")
9637 (synopsis "Python interface to D-Bus notifications")
9639 "Pynotify2 provides a Python interface for sending D-Bus notifications.
9640 It is a reimplementation of pynotify in pure Python, and an alternative to
9641 the GObject Introspection bindings to libnotify for non-GTK applications.")
9642 (license (list license:bsd-2
9643 license:lgpl2.1+))))
9645 ;; beautifulsoup4 has a totally different namespace than 3.x,
9646 ;; and pypi seems to put it under its own name, so I guess we should too
9647 (define-public python-beautifulsoup4
9649 (name "python-beautifulsoup4")
9654 (uri (pypi-uri "beautifulsoup4" version))
9657 "14v68cpfzckfz63n9hnbsm271jvzvxscyijz83mhha7gcmdsb6md"))))
9658 (build-system python-build-system)
9660 '(#:phases (modify-phases %standard-phases
9662 (lambda* (#:key tests? #:allow-other-keys)
9664 (invoke "pytest" "-vv")))))))
9666 (list python-pytest))
9668 (list python-soupsieve python-html5lib python-lxml))
9670 "https://www.crummy.com/software/BeautifulSoup/bs4/")
9672 "Python screen-scraping library")
9674 "Beautiful Soup is a Python library designed for rapidly setting up
9675 screen-scraping projects. It offers Pythonic idioms for navigating,
9676 searching, and modifying a parse tree, providing a toolkit for
9677 dissecting a document and extracting what you need. It automatically
9678 converts incoming documents to Unicode and outgoing documents to UTF-8.")
9679 (license license:expat)))
9681 (define-public python-soupsieve
9683 (name "python-soupsieve")
9688 (uri (pypi-uri "soupsieve" version))
9691 "1k70gpn2d3vgdyxbdy536dgm4kchcraxz6lmgsfg3324iy2789q5"))))
9692 (build-system python-build-system)
9694 ;;XXX: 2 tests fail currently despite claming they were to be
9695 ;;skipped. Also, beautifulsoup4 may depend on this in the future, so we
9696 ;;don't want to create a circular dependency.
9699 #~(modify-phases %standard-phases
9700 ;; Circular dependency with python-beautifulsoup4.
9701 (delete 'sanity-check))))
9702 (home-page "https://github.com/facelessuser/soupsieve")
9703 (synopsis "CSS selector library")
9705 "Soup Sieve is a CSS selector library designed to be used with Beautiful
9706 Soup 4. It aims to provide selecting, matching, and filtering using modern
9707 CSS selectors. Soup Sieve currently provides selectors from the CSS level 1
9708 specifications up through the latest CSS level 4 drafts and beyond (though
9709 some are not yet implemented).")
9710 (license license:expat)))
9713 (define-public python-netifaces
9715 (name "python-netifaces")
9720 (uri (pypi-uri "netifaces" version))
9723 "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4"))))
9724 (build-system python-build-system)
9725 (home-page "https://github.com/al45tair/netifaces")
9727 "Python module for portable network interface information")
9729 "Netifaces is a Python module providing information on network
9730 interfaces in an easy and portable manner.")
9731 (license license:expat)))
9733 (define-public python-networkx
9735 (name "python-networkx")
9740 (uri (pypi-uri "networkx" version))
9742 (base32 "19h18f5j79l7kmwm5cvm75fadjgmkzw5m3pyvb9cnq0860q7faxx"))))
9743 (build-system python-build-system)
9745 '(#:phases (modify-phases %standard-phases
9747 (lambda* (#:key tests? #:allow-other-keys)
9749 (invoke "pytest" "-vv" "--pyargs" "networkx")
9750 (format #t "test suite not run~%")) #t)))))
9751 (propagated-inputs (list python-decorator))
9752 (native-inputs (list python-pytest))
9753 (home-page "https://networkx.github.io/")
9755 "Python module for creating and manipulating graphs and networks")
9757 "NetworkX is a Python package for the creation, manipulation, and study
9758 of the structure, dynamics, and functions of complex networks.")
9759 (license license:bsd-3)))
9762 (define-public python-datrie
9764 (name "python-datrie")
9769 (uri (pypi-uri "datrie" version))
9772 "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj"))))
9773 (build-system python-build-system)
9775 (list python-cython python-hypothesis python-pytest
9776 python-pytest-runner))
9777 (home-page "https://github.com/kmike/datrie")
9778 (synopsis "Fast, efficiently stored trie for Python")
9780 "This package provides a fast, efficiently stored trie implementation for
9782 (license license:lgpl2.1+)))
9784 (define-public python-amply
9786 (name "python-amply")
9791 (uri (pypi-uri "amply" version))
9794 "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb"))))
9795 (build-system python-build-system)
9797 (list python-docutils python-pyparsing))
9799 (list python-setuptools-scm))
9800 (home-page "https://github.com/willu47/amply")
9801 (synopsis "Load and manipulate AMPL/GLPK data as Python data structures")
9803 "Amply allows you to load and manipulate AMPL/GLPK data as Python data
9805 (license license:epl1.0)))
9807 (define-public python-pulp
9809 (name "python-pulp")
9814 (uri (pypi-uri "PuLP" version))
9817 "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj"))))
9818 (build-system python-build-system)
9820 (list python-amply))
9821 (home-page "https://github.com/coin-or/pulp")
9822 (synopsis "Linear Programming modeler")
9824 "PuLP is a Linear Programming modeler written in Python. PuLP can
9825 generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to
9826 solve linear problems.")
9827 (license license:expat)))
9829 (define-public python-py-tes
9831 (name "python-py-tes")
9836 (uri (pypi-uri "py-tes" version))
9838 (base32 "0b272y392v0mnq0f3sm5kgcx8fn4qwfbym89hhvqxz3xkganr4pn"))))
9839 (build-system python-build-system)
9841 (list python-attrs python-dateutil python-future python-requests))
9842 (home-page "https://github.com/ohsu-comp-bio/py-tes")
9843 (synopsis "Library for communicating with the GA4GH Task Execution API")
9844 (description "This package provides a library for communicating with the
9845 GA4GH Task Execution API.")
9846 (license license:expat)))
9848 (define-public python-toposort
9850 (name "python-toposort")
9855 (uri (pypi-uri "toposort" version))
9858 "1b2hppzjg3p006qya3yfdnp76dwq8frl97lypdam0kw4xxb8yhm7"))))
9859 (build-system python-build-system)
9860 (home-page "https://gitlab.com/ericvsmith/toposort")
9861 (synopsis "Topological sort algorithm")
9863 "This package provides an implementation of a topological sort
9865 (license license:asl2.0)))
9867 (define-public python-three-merge
9869 (name "python-three-merge")
9873 ;; There are no tests in the PyPI tarball.
9876 (url "https://github.com/spyder-ide/three-merge")
9877 (commit (string-append "v" version))))
9878 (file-name (git-file-name name version))
9880 (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86"))))
9881 (build-system python-build-system)
9883 `(#:test-target "pytest"))
9885 (list python-diff-match-patch))
9887 (list python-flaky python-pytest python-pytest-cov
9888 python-pytest-runner python-pytest-timeout))
9889 (home-page "https://github.com/spyder-ide/three-merge")
9890 (synopsis "Library for merging two strings with respect to a base one")
9892 "This package provides a Python library to perform a 3-way merge between
9893 strings, based on @code{diff-match-patch}. This library performs merges at a
9894 character level, as opposed to most VCS systems, which opt for a line-based
9896 (license license:expat)))
9898 (define-public snakemake
9905 (uri (pypi-uri "snakemake" version))
9907 (base32 "13013gdavwvyj1qr9xfi9fpwhb3km8c3z53bja5b7ic3sb2z6dgz"))))
9908 (build-system python-build-system)
9910 ;; TODO: Package missing test dependencies.
9913 (modify-phases %standard-phases
9914 ;; For cluster execution Snakemake will call Python. Since there is
9915 ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
9916 ;; this by calling the snakemake wrapper instead.
9917 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
9918 (lambda* (#:key outputs #:allow-other-keys)
9919 (substitute* "snakemake/executors/__init__.py"
9920 (("\\{sys.executable\\} -m snakemake")
9921 (string-append (assoc-ref outputs "out")
9925 (list python-appdirs
9926 python-configargparse
9941 (home-page "https://snakemake.readthedocs.io")
9942 (synopsis "Python-based execution environment for make-like workflows")
9944 "Snakemake aims to reduce the complexity of creating workflows by
9945 providing a clean and modern domain specific specification language (DSL) in
9946 Python style, together with a fast and comfortable execution environment.")
9947 (license license:expat)))
9949 (define-public snakemake-6
9958 (url "https://github.com/snakemake/snakemake")
9959 (commit (string-append "v" version))))
9960 (file-name (git-file-name name version))
9962 (base32 "09yrpi9f86r9yvcm2dfjs5zy87c4j31bxama77kfd6y8yfrrjlai"))))
9963 (build-system python-build-system)
9966 (modify-phases %standard-phases
9967 ;; For cluster execution Snakemake will call Python. Since there is
9968 ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
9969 ;; fix this by calling the snakemake wrapper instead.
9971 ;; XXX: There is another instance of sys.executable on line 692, but
9972 ;; it is not clear how to patch it.
9973 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
9974 (lambda* (#:key outputs #:allow-other-keys)
9975 (substitute* "snakemake/executors/__init__.py"
9976 (("\\{sys.executable\\} -m snakemake")
9977 (string-append (assoc-ref outputs "out")
9978 "/bin/snakemake")))))
9980 (lambda* (#:key tests? #:allow-other-keys)
9982 (setenv "HOME" "/tmp")
9983 ;; This test attempts to change S3 buckets on AWS and fails
9984 ;; because there are no AWS credentials.
9985 (delete-file "tests/test_tibanna.py")
9986 (invoke "pytest")))))))
9988 (list python-appdirs
9989 python-configargparse
9990 python-connection-pool
10015 python-requests-mock))))
10017 (define-public snakemake-7
10019 (inherit snakemake-6)
10025 (uri (git-reference
10026 (url "https://github.com/snakemake/snakemake")
10027 (commit (string-append "v" version))))
10028 (file-name (git-file-name name version))
10030 (base32 "1qrqbmx4cbis0wxr6dl2rdjv9v627sbirsz6v5c31vlbqwkvs04q"))))
10031 (build-system python-build-system)
10034 (modify-phases %standard-phases
10035 ;; For cluster execution Snakemake will call Python. Since there is
10036 ;; no suitable GUIX_PYTHONPATH set, cluster execution will fail. We
10037 ;; fix this by calling the snakemake wrapper instead.
10038 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
10039 (lambda* (#:key outputs #:allow-other-keys)
10040 (substitute* "snakemake/executors/__init__.py"
10041 (("self\\.get_python_executable\\(\\),")
10043 (("\"-m snakemake\"")
10044 (string-append "\"" (assoc-ref outputs "out")
10045 "/bin/snakemake" "\"")))))
10047 (lambda* (#:key tests? #:allow-other-keys)
10049 (setenv "HOME" "/tmp")
10050 ;; This test attempts to change S3 buckets on AWS and fails
10051 ;; because there are no AWS credentials.
10052 (delete-file "tests/test_tibanna.py")
10053 ;; It's a similar story with this test, which requires access
10054 ;; to the Google Storage service.
10055 (delete-file "tests/test_google_lifesciences.py")
10056 (invoke "pytest")))))))
10058 (list python-appdirs
10059 python-configargparse
10060 python-connection-pool
10087 python-requests-mock))))
10089 (define-public python-pyqrcode
10091 (name "python-pyqrcode")
10096 (uri (pypi-uri "PyQRCode" version))
10099 "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx"))))
10100 (build-system python-build-system)
10102 "https://github.com/mnooner256/pyqrcode")
10103 (synopsis "QR code generator")
10105 "Pyqrcode is a QR code generator written purely in Python with
10106 SVG, EPS, PNG and terminal output.")
10107 (license license:bsd-3)))
10109 (define-public python-seaborn
10111 (name "python-seaborn")
10115 (uri (pypi-uri "seaborn" version))
10118 "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg"))
10119 (patches (search-patches "python-seaborn-kde-test.patch"
10120 "python-seaborn-2690.patch"))))
10121 (build-system python-build-system)
10123 `(#:phases (modify-phases %standard-phases
10124 (add-after 'unpack 'patch-more-tests
10126 (substitute* "seaborn/tests/test_distributions.py"
10127 (("get_contour_color\\(ax\\.collections\\[0\\]\\)")
10128 "get_contour_color(ax.collections[0])")
10129 (("c\\.get_color\\(\\)") "get_contour_color(c)")
10130 (("def test_hue_ignores_cmap")
10131 "def skip_test_hue_ignores_cmap")
10132 (("def test_fill_artists")
10133 "def skip_test_fill_artists")
10134 (("def test_with_rug") "def skip_test_with_rug"))))
10135 (add-before 'check 'start-xserver
10137 (system "Xvfb :1 &")
10138 (setenv "DISPLAY" ":1")))
10140 (lambda* (#:key tests? #:allow-other-keys)
10142 (invoke "pytest" "seaborn")))))))
10143 (propagated-inputs (list python-pandas python-matplotlib python-numpy
10145 (native-inputs (list python-pytest xorg-server-for-tests))
10146 (home-page "https://seaborn.pydata.org/")
10147 (synopsis "Statistical data visualization")
10149 "Seaborn is a library for making attractive and informative statistical
10150 graphics in Python. It is built on top of matplotlib and tightly integrated
10151 with the PyData stack, including support for numpy and pandas data structures
10152 and statistical routines from scipy and statsmodels.")
10153 (license license:bsd-3)))
10156 (define-public python-session-info
10158 (name "python-session-info")
10162 (uri (pypi-uri "session_info" version))
10165 "1dxnrgaxd2nb44n423mnrx119hmnh2yxdnzaw8mg60x7rh1mxniw"))))
10166 (build-system python-build-system)
10167 (propagated-inputs (list python-stdlib-list))
10168 (home-page "https://gitlab.com/joelostblom/session_info")
10169 (synopsis "Output version information for modules currently loaded")
10171 "This package outputs version information for modules loaded in the current
10172 session, Python, and the OS.")
10173 (license license:bsd-3)))
10175 (define-public python-mpmath
10177 (name "python-mpmath")
10181 (uri (git-reference
10182 (url "https://github.com/fredrik-johansson/mpmath")
10183 (commit "c6a35f9ee7c294bcf4e0517bc76b268843db9499")))
10184 (file-name (git-file-name name version))
10187 "0ifw59fjjls3mas104rh0frilvab2fhk1dkjraxlqni5n9l676im"))))
10188 (build-system python-build-system)
10191 (modify-phases %standard-phases
10192 (add-before 'build 'set-version
10194 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
10195 ;; ZIP does not support timestamps before 1980.
10196 (setenv "SOURCE_DATE_EPOCH" "315532800")))
10198 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
10200 (add-installed-pythonpath inputs outputs)
10201 (invoke "pytest" "-vv")))))))
10203 (list python-pytest python-setuptools-scm))
10204 (home-page "https://mpmath.org")
10205 (synopsis "Arbitrary-precision floating-point arithmetic in python")
10207 "@code{mpmath} can be used as an arbitrary-precision substitute for
10208 Python's float/complex types and math/cmath modules, but also does much
10209 more advanced mathematics.")
10210 (license license:bsd-3)))
10212 (define-public python-bigfloat
10214 (name "python-bigfloat")
10219 (uri (pypi-uri "bigfloat" version))
10221 (base32 "0xd7q4l7v0f463diznjv4k9wlaks80pn9drdqmfifi7zx8qvybi6"))))
10222 (build-system python-build-system)
10225 (home-page "https://github.com/mdickinson/bigfloat")
10226 (synopsis "Arbitrary precision floating-point arithmetic for Python")
10228 "This package provides a Python interface to the MPFR library for
10229 multiprecision arithmetic.")
10230 (license license:lgpl3+)))
10232 (define-public python-plac
10234 (name "python-plac")
10239 (uri (pypi-uri "plac" version))
10241 (base32 "1410h6jw1ksi24kb55xzkwqzba2qqjwiga1s354bf3s5s1jdig9q"))))
10242 (build-system python-build-system)
10245 (modify-phases %standard-phases
10246 (add-after 'unpack 'fix-tkinter
10248 (substitute* "plac_tk.py"
10249 (("from Tkinter import Tk")
10250 "from tkinter import Tk")
10251 (("from ScrolledText import ScrolledText")
10252 "from tkinter.scrolledtext import ScrolledText")))))))
10254 `(("python-tkinter" ,python "tk")))
10255 (home-page "https://github.com/ialbert/plac")
10256 (synopsis "Command line arguments parser")
10257 (description "This package can generate command line parameters from
10258 function signatures.")
10259 (license license:bsd-3)))
10261 (define-public python-yte
10263 (name "python-yte")
10268 (uri (pypi-uri "yte" version))
10270 (base32 "07hm1warpqi4ifqgkaz5sg887x4a44yhxafmpf835ywnpchg4s03"))))
10271 (build-system python-build-system)
10274 (modify-phases %standard-phases
10275 (add-after 'unpack 'set-HOME
10276 (lambda _ (setenv "HOME" "/tmp"))))))
10277 (propagated-inputs (list python-plac python-pyyaml))
10278 (home-page "https://github.com/koesterlab/yte")
10279 (synopsis "YAML template engine with Python expressions")
10281 "This package provides a YAML template engine with Python expressions.")
10282 (license license:expat)))
10284 (define-public python-syllables
10286 (name "python-syllables")
10290 (uri (pypi-uri "syllables" version))
10293 "0wkl6h0rg6fbsxfp0a8fnibf3l4l6lbh6z12cvcilgb6qhxzpmv3"))))
10294 (build-system python-build-system)
10295 (home-page "https://github.com/prosegrinder/python-syllables")
10296 (synopsis "Package for estimating the number of syllables in a word")
10298 "This package provides a Python package for estimating the number of
10299 syllables in a word.")
10300 (license license:gpl3)))
10302 (define-public python-sympy
10304 (name "python-sympy")
10309 (uri (pypi-uri "sympy" version))
10311 (base32 "0n46x1rfy8c2a9za3yp2va5icigxj805f9fmiq8c1drwwvf808z3"))))
10312 (build-system python-build-system)
10315 (modify-phases %standard-phases
10317 (lambda* (#:key outputs #:allow-other-keys)
10319 (or (which "python3") (which "python"))
10320 "-c" "import sympy; sympy.test(\"/core\")"))))))
10322 (list python-mpmath))
10323 (home-page "https://www.sympy.org/")
10324 (synopsis "Python library for symbolic mathematics")
10326 "SymPy is a Python library for symbolic mathematics. It aims to become a
10327 full-featured computer algebra system (CAS) while keeping the code as simple
10328 as possible in order to be comprehensible and easily extensible.")
10329 (license license:bsd-3)))
10331 (define-public python-q
10338 (uri (pypi-uri "q" version))
10341 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
10342 (build-system python-build-system)
10343 (home-page "https://github.com/zestyping/q")
10344 (synopsis "Quick-and-dirty debugging output for tired programmers")
10346 "q is a Python module for \"print\" style of debugging Python code. It
10347 provides convenient short API for print out of values, tracebacks, and
10348 falling into the Python interpreter.")
10349 (license license:asl2.0)))
10351 (define-public python-xlib
10353 (name "python-xlib")
10358 (uri (git-reference
10359 (url "https://github.com/python-xlib/python-xlib")
10361 (file-name (git-file-name name version))
10363 (base32 "17cwd2knqm2vwrii3kqii9abwsnydhpg4byqx1vy7rjs6i1vbqfc"))))
10364 (build-system python-build-system)
10367 (modify-phases %standard-phases
10368 (add-before 'check 'start-xserver
10369 (lambda* (#:key inputs #:allow-other-keys)
10370 (let ((xorg-server (assoc-ref inputs "xorg-server")))
10371 ;; There must be a running X server and make check doesn't
10372 ;; start one. Therefore we must do it.
10373 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
10374 (setenv "DISPLAY" ":1")
10377 (list python-mock python-setuptools-scm xorg-server))
10380 (home-page "https://github.com/python-xlib/python-xlib")
10381 (synopsis "Python X11 client library")
10383 "The Python X Library is intended to be a fully functional
10384 X client library for Python programs. It is useful to implement
10385 low-level X clients. It is written entirely in Python.")
10386 (license license:gpl2+)))
10388 (define-public python-singledispatch
10390 (name "python-singledispatch")
10391 (version "3.4.0.3")
10395 (uri (pypi-uri "singledispatch" version))
10398 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
10399 (build-system python-build-system)
10401 (list python-six)) ; required for conversion, not at run-time
10403 "https://docs.python.org/3/library/functools.html#functools.singledispatch")
10404 (synopsis "Backport of singledispatch feature from Python 3.4")
10406 "This library brings functools.singledispatch from Python 3.4 to Python
10408 (license license:expat)))
10410 ;; the python- version can be removed with python-3.5
10411 (define-public python-backports-abc
10413 (name "python-backports-abc")
10418 (uri (pypi-uri "backports_abc" version))
10421 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
10422 (build-system python-build-system)
10423 (home-page "https://github.com/cython/backports_abc")
10424 (synopsis "Backport of additions to the 'collections.abc' module")
10426 "Python-backports-abc provides a backport of additions to the
10427 @code{collections.abc} module in Python-3.5.")
10428 (license license:psfl)))
10430 (define-public python-backports-csv
10432 (name "python-backports-csv")
10437 (uri (pypi-uri "backports.csv" version))
10439 (base32 "0vdx5jlhs91iizc8j8l8811nqprwvdx39pgkdc82w2qkfgzxyxqj"))))
10440 (build-system python-build-system)
10441 (home-page "https://github.com/ryanhiebert/backports.csv")
10442 (synopsis "Backport of Python 3's csv module for Python 2")
10444 "Provides a backport of Python 3's @code{csv} module for parsing
10445 comma separated values. The API of the @code{csv} module in Python 2
10446 is drastically different from the @code{csv} module in Python 3.
10447 This is due, for the most part, to the difference between str in
10448 Python 2 and Python 3.")
10449 (license license:psfl)))
10451 (define-public python-waf
10453 (name "python-waf")
10457 (uri (string-append "https://waf.io/"
10458 "waf-" version ".tar.bz2"))
10461 "19dvqbsvxz7ch03dh1v0znklrwxlz6yzddc3k9smzrrgny4jch6q"))))
10462 (build-system python-build-system)
10465 (modify-phases %standard-phases
10468 ;; XXX: Find a way to add all extra tools.
10469 (let ((tools '("gccdeps"
10470 "clang_compilation_database")))
10471 (invoke "python" "waf-light" "configure" "build"
10472 (string-append "--tools="
10473 (string-join tools ","))))))
10476 (invoke "python" "waf" "--version")))
10478 (lambda* (#:key outputs #:allow-other-keys)
10479 (let ((out (assoc-ref outputs "out")))
10480 (install-file "waf" (string-append out "/bin")))
10482 ;; waf breaks when it is wrapped.
10484 (home-page "https://waf.io/")
10485 (synopsis "Python-based build system")
10487 "Waf is a Python-based framework for configuring, compiling and installing
10489 (license license:bsd-3)))
10491 (define-public python-pyzmq
10493 (name "python-pyzmq")
10498 (uri (pypi-uri "pyzmq" version))
10500 (base32 "0737kizh53n4rjq1xbm6nhr0bq65xflg04i1d8fcky0nwwrw1pcf"))
10503 (use-modules (guix build utils))
10504 ;; The bundled zeromq source code.
10505 (delete-file-recursively "bundled")
10506 ;; Delete cythonized files.
10507 (for-each delete-file
10508 (list "zmq/backend/cython/constants.c"
10509 "zmq/backend/cython/context.c"
10510 "zmq/backend/cython/_device.c"
10511 "zmq/backend/cython/error.c"
10512 "zmq/backend/cython/message.c"
10513 "zmq/backend/cython/_poll.c"
10514 "zmq/backend/cython/_proxy_steerable.c"
10515 "zmq/backend/cython/socket.c"
10516 "zmq/backend/cython/utils.c"
10517 "zmq/backend/cython/_version.c"
10518 "zmq/devices/monitoredqueue.c"))))))
10519 (build-system python-build-system)
10521 `(#:configure-flags
10522 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
10524 (modify-phases %standard-phases
10525 (add-before 'check 'build-extensions
10527 ;; Cython extensions have to be built before running the tests.
10528 (invoke "python" "setup.py" "build_ext" "--inplace"))))))
10532 (list pkg-config python-cython python-pytest))
10533 (home-page "https://github.com/zeromq/pyzmq")
10534 (synopsis "Python bindings for 0MQ")
10536 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
10537 (license license:bsd-4)))
10539 (define-public python-immutabledict
10541 (name "python-immutabledict")
10546 (uri (pypi-uri "immutabledict" version))
10548 (base32 "0fpc4gbk7inpfbgdypsg6c18bmdjw8gwx47bjw0hvixn3gghxnqx"))))
10549 (build-system python-build-system)
10551 `(#:tests? #f)) ; no tests in PyPI release and no setup.py in GitHub
10553 (list python-pytest))
10554 (home-page "https://github.com/corenting/immutabledict")
10555 (synopsis "Immutable wrapper around dictionaries")
10557 "@dfn{immutabledict} is an immutable wrapper around dictionaries.
10558 It implements the complete mapping interface and can be used as a drop-in
10559 replacement for dictionaries where immutability is desired.")
10560 (license license:expat)))
10562 (define-public python-emoji
10564 (name "python-emoji")
10569 (uri (pypi-uri "emoji" version))
10571 (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk"))))
10572 (build-system python-build-system)
10575 (modify-phases %standard-phases
10577 (lambda* (#:key tests? #:allow-other-keys)
10579 (invoke "python" "-m" "pytest")))))))
10581 (list python-pytest))
10582 (home-page "https://github.com/carpedm20/emoji/")
10583 (synopsis "Emoji terminal output for Python")
10584 (description "This package provides Emoji terminal output for Python. The
10585 entire set of Emoji codes as defined by the Unicode Consortium is supported in
10586 addition to a bunch of aliases.")
10587 (license license:bsd-3)))
10589 (define-public python-sarge
10591 (name "python-sarge")
10592 (version "0.1.7.post1") ; post release only to correct errors in metadata
10596 (uri (pypi-uri "sarge" version))
10598 (base32 "0g9a53mfnp96877n1yq2jdk1mcv3xm0d93iisvgcn2prdsp45zv4"))))
10599 (build-system python-build-system)
10600 (home-page "https://docs.red-dove.com/sarge/")
10601 (synopsis "Subprocess wrapper with command pipeline functionality")
10602 (description "@code{sarge} is a wrapper for subprocess which provides
10603 command pipeline functionality.")
10604 (license license:bsd-3)))
10606 (define-public python-zipstream-new
10608 (name "python-zipstream-new")
10612 (method git-fetch) ; no tests in PyPI release
10613 (uri (git-reference
10614 (url "https://github.com/arjan-s/python-zipstream")
10615 (commit (string-append "v" version))))
10616 (file-name (git-file-name name version))
10618 (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv"))))
10619 (build-system python-build-system)
10621 (list python-nose))
10622 (home-page "https://github.com/arjan-s/python-zipstream")
10623 (synopsis "Zipfile generator that takes input files as well as streams")
10624 (description "@code{zipstream.py} is a zip archive generator based on
10625 @code{zipfile.py}. It was created to generate a zip file generator for
10626 streaming. This is beneficial for when you want to provide a downloadable
10627 archive of a large collection of regular files, which would be infeasible
10628 to generate the archive prior to downloading or of a very large file that
10629 you do not want to store entirely on disk or on memory.")
10630 ;; No copyright headers in the source. The LICENSE file indicates GPL3.
10631 (license license:gpl3)))
10633 (define-public python-sentry-sdk
10635 (name "python-sentry-sdk")
10639 (method git-fetch) ; no tests in PyPI release
10640 (uri (git-reference
10641 (url "https://github.com/getsentry/sentry-python")
10643 (file-name (git-file-name name version))
10645 (base32 "128bm136l5zprr3sqqb8j3d6k5i1fhz853mzvh3w8g0w1dw763mx"))))
10646 (build-system python-build-system)
10649 (modify-phases %standard-phases
10651 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
10653 (add-installed-pythonpath inputs outputs)
10654 (invoke "python" "-m" "pytest" "-k"
10656 ;; This test requires extra dependencies.
10657 "not test_auto_enabling_integrations"
10658 "_catches_import_error"
10659 ;; Tests below run pip command.
10660 " and not test_unhandled_exception"
10661 " and not test_timeout_error"
10662 " and not test_performance_no_error"
10663 " and not test_performance_error"
10664 " and not test_traces_sampler_gets_correct"
10665 "_values_in_sampling_context"
10666 " and not test_handled_exception"
10667 ;; Tests below require network.
10668 " and not test_crumb_capture"
10669 " and not test_crumb_capture"
10670 " and not test_crumb_capture_hint"
10671 " and not test_httplib_misuse"
10672 ;; Fails with IndexError.
10673 " and not test_session_mode_defaults_to"
10674 "_request_mode_in_wsgi_handler"))))))))
10676 (list python-django
10684 python-pytest-django
10685 python-pytest-forked
10686 python-pytest-localserver
10689 (list python-certifi python-urllib3))
10690 (home-page "https://github.com/getsentry/sentry-python")
10691 (synopsis "Python SDK for Sentry")
10692 (description "This package provides a Python SDK for the Sentry
10693 application monitoring and error tracking software.")
10694 (license license:bsd-2)))
10696 (define-public python-pep8
10697 ;; This package has been renamed to ‘pycodestyle’ and is no longer updated.
10698 ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking
10699 ;; some dependents' test suites, and nothing more.
10701 (name "python-pep8")
10706 (uri (pypi-uri "pep8" version))
10709 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))
10710 (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch"))))
10711 (build-system python-build-system)
10712 (home-page "https://pep8.readthedocs.org/")
10713 (synopsis "Python style guide checker")
10715 "This tools checks Python code against some of the style conventions in
10717 (license license:expat)))
10719 (define-public python-pep8-naming
10721 (name "python-pep8-naming")
10726 (uri (pypi-uri "pep8-naming" version))
10729 "1dc0b6xw1cxp01v9zsv4ryk49rfs1lngfpvzsixgp8b7z3ffcf4z"))))
10730 (build-system python-build-system)
10731 (propagated-inputs (list python-flake8))
10732 (home-page "https://github.com/PyCQA/pep8-naming")
10733 (synopsis "Check PEP-8 naming conventions")
10735 "This package provides the @code{pep8-naming} Python module, a
10736 plugin for flake8 to check PEP-8 naming conventions.")
10737 (license license:expat)))
10739 (define-public python-pep517
10741 (inherit python-pep517-bootstrap)
10742 (name "python-pep517")
10744 '(#:phases (modify-phases %standard-phases
10746 (lambda* (#:key tests? #:allow-other-keys)
10747 (delete-file "pytest.ini")
10748 (delete-file "tests/test_meta.py")
10750 (invoke "pytest") #t))))))
10751 (native-inputs (list python-mock python-pytest python-testpath))))
10753 (define-public python-pyproject-metadata
10755 (name "python-pyproject-metadata")
10760 (uri (git-reference
10761 (url "https://github.com/FFY00/python-pyproject-metadata")
10763 (file-name (git-file-name name version))
10766 "00zahgw9zjfqwf0218bj5k732aibnn68cq1p8f0wmbirb7fy5k31"))))
10767 (build-system python-build-system)
10771 #~(modify-phases %standard-phases
10772 ;; XXX: PEP 517 manual build/install procedures copied from
10776 ;; ZIP does not support timestamps before 1980.
10777 (setenv "SOURCE_DATE_EPOCH" "315532800")
10778 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
10780 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
10782 (invoke "pytest" "-vv"
10783 ;; Two parameterized test_load tests are currently
10785 ;; https://github.com/FFY00/python-pep621/issues/14).
10786 "-k" "not test_load"))))
10788 (lambda* (#:key outputs #:allow-other-keys)
10789 (let ((whl (car (find-files "dist" "\\.whl$"))))
10790 (invoke "pip" "--no-cache-dir" "--no-input"
10791 "install" "--no-deps" "--prefix" #$output whl)))))))
10792 (propagated-inputs (list python-packaging))
10793 (native-inputs (list python-pypa-build python-pytest python-tomli))
10794 (home-page "https://github.com/FFY00/python-pyproject-metadata")
10795 (synopsis "Dataclass for PEP 621 metadata")
10796 (description "This project does not implement the parsing of
10797 @file{pyproject.toml} containing PEP 621 metadata. Instead, given a Python
10798 data structure representing PEP 621 metadata (already parsed), it will
10799 validate this input and generate a PEP 643-compliant metadata
10800 file (e.g. @file{PKG-INFO}).")
10801 (license license:expat)))
10803 ;; pep621 was renamed to pyproject-metadata.
10804 (define-public python-pep621
10805 (deprecated-package "python-pep621" python-pyproject-metadata))
10807 (define-public python-pyflakes
10809 (name "python-pyflakes")
10814 (uri (pypi-uri "pyflakes" version))
10817 "0k5jn8jpxni264wxf6cc3xcd1qckc0pww30bsd77mwzdf8l5ra05"))))
10818 (build-system python-build-system)
10819 (home-page "https://github.com/PyCQA/pyflakes")
10820 (synopsis "Passive checker of Python programs")
10822 "Pyflakes statically checks Python source code for common errors.")
10823 (license license:expat)))
10825 (define-public python-pyflakes-2.2
10827 (inherit python-pyflakes)
10831 (uri (pypi-uri "pyflakes" version))
10834 "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim"))
10836 (search-patches "python-pyflakes-test-location.patch"))))))
10838 (define-public python-mccabe
10840 (name "python-mccabe")
10845 (uri (pypi-uri "mccabe" version))
10848 "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx"))))
10849 (build-system python-build-system)
10851 (list python-toml python-pytest-bootstrap python-pytest-runner))
10852 (home-page "https://github.com/PyCQA/mccabe")
10853 (synopsis "McCabe checker, plugin for flake8")
10854 (description "This package provides a Flake8 plug-in to compute the McCabe
10855 cyclomatic complexity of Python source code.")
10856 (license license:expat)))
10858 (define-public python-flake8
10860 (name "python-flake8")
10864 (uri (pypi-uri "flake8" version))
10867 "03c7mnk34wfz7a0m5zq0273y94awz69fy5iww8alh4a4v96h6vl0"))))
10868 (build-system python-build-system)
10870 `(#:phases (modify-phases %standard-phases
10872 (lambda* (#:key tests? #:allow-other-keys)
10874 (invoke "pytest" "-v")))))))
10876 (list python-entrypoints
10880 (native-inputs (list python-pytest))
10881 (home-page "https://gitlab.com/pycqa/flake8")
10882 (synopsis "The modular source code checker: pep8, pyflakes and co")
10884 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
10885 (license license:expat)))
10887 (define-public python-flake8-3.8
10889 (inherit python-flake8)
10893 (uri (pypi-uri "flake8" version))
10896 "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma"))))
10898 (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2
10901 (define-public python-flake8-blind-except
10903 (name "python-flake8-blind-except")
10908 (uri (pypi-uri "flake8-blind-except" version))
10910 (base32 "05nxsxfzfhwsm8gys90228imm2qbnqnw5y8bfqyfngnbkmd5fnpj"))))
10911 (build-system python-build-system)
10913 `(#:tests? #f)) ; no tests
10914 (native-inputs (list python-pycodestyle))
10915 (home-page "https://github.com/elijahandrews/flake8-blind-except")
10916 (synopsis "Check for blind @code{except:} statements")
10917 (description "This package provides a flake8 extension that checks for
10918 blind @code{except:} statements.")
10919 (license license:expat)))
10921 (define-public python-flake8-bugbear
10923 (name "python-flake8-bugbear")
10928 (uri (pypi-uri "flake8-bugbear" version))
10931 "0qiihb242fygzyrfynq913ak7cdmx8mcac9c0zk3y5gv16qf80mx"))))
10932 (build-system python-build-system)
10935 (modify-phases %standard-phases
10936 (add-before 'check 'disable-test
10938 ;; This test fails on slow computers.
10939 (substitute* "tests/test_bugbear.py"
10940 (("def test_does_not_crash_on_any_valid_code")
10941 "def _test_does_not_crash_on_any_valid_code")))))))
10943 (list python-hypothesis python-hypothesmith))
10945 (list python-attrs python-flake8))
10946 (home-page "https://github.com/PyCQA/flake8-bugbear")
10948 "Flake8 plugin for finding likely bugs and design problems in your program")
10950 "This package contains a plugin for Flake8 finding likely bugs and
10951 design problems in your program. It contains warnings that don't belong
10952 in pyflakes and pycodestyle.")
10953 (license license:expat)))
10955 (define-public python-flake8-continuation
10957 (name "python-flake8-continuation")
10962 (uri (pypi-uri "flake8-continuation" version))
10965 "0dzaw8jr7yhlabxhrblnrizxx17xa9ngjnbr1kidg5lapq6b9q1y"))))
10966 (build-system python-build-system)
10968 (list python-flake8 python-pycodestyle python-six))
10969 (home-page "https://github.com/planetlabs/flake8-continuation")
10970 (synopsis "Flake8 Line Continuation Plugin")
10971 (description "A Flake8 plugin that checks for the line continuation
10972 style to be in the preferred method according to PEP-8, specifically:
10974 The preferred way of wrapping long lines is by using Python's implied
10975 line continuation inside parentheses, brackets and braces. Long lines
10976 can be broken over multiple lines by wrapping expressions in parentheses.
10977 These should be used in preference to using a backslash for line continuation.
10979 (license license:asl2.0)))
10981 (define-public python-flake8-debugger
10983 (name "python-flake8-debugger")
10988 (uri (pypi-uri "flake8-debugger" version))
10990 (base32 "0h1qlzbxxhjsw6kg3mcml9h8byy77m9a5z06z2dnvqs115b05c2j"))))
10991 (build-system python-build-system)
10993 `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub
10995 (list python-flake8 python-pycodestyle))
10996 (home-page "https://github.com/jbkahn/flake8-debugger")
10997 (synopsis "@code{ipdb} and @code{pdb} statement checker plugin for flake8")
10998 (description "This package provides a Flake8 plugin that checks for
10999 @code{ipdb} and @code{pdb} imports and set traces, as well as
11000 @code{from IPython.terminal.embed}, @code{import InteractiveShellEmbed}
11001 and @code{InteractiveShellEmbed()()}.")
11002 (license license:expat)))
11004 (define-public python-flake8-implicit-str-concat
11006 (name "python-flake8-implicit-str-concat")
11011 (uri (pypi-uri "flake8_implicit_str_concat" version))
11013 (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6"))))
11014 (build-system python-build-system)
11016 '(#:tests? #f ;no tests
11017 #:phases (modify-phases %standard-phases
11018 (add-after 'unpack 'loosen-requirements
11020 ;; Permit newer versions of attrs. Remove for >0.2.
11021 (substitute* "setup.py"
11022 ((", <21") "")))))))
11024 (list python-attrs python-more-itertools))
11025 (home-page "https://github.com/keisheiled/flake8-implicit-str-concat")
11026 (synopsis "Flake8 plugin to encourage correct string literal concatenation")
11028 "This is a plugin for the Python code checking tool Flake8 to encourage
11029 correct string literal concatenation.
11031 It looks for style problems like implicitly concatenated string literals on
11032 the same line (which can be introduced by the code formatting tool Black), or
11033 unnecessary plus operators for explicit string literal concatenation.")
11034 (license license:expat)))
11036 (define-public python-flake8-print
11038 (name "python-flake8-print")
11043 (uri (pypi-uri "flake8-print" version))
11045 (base32 "05k5kkvyk6fdmvnacxfzypk74vbl3pmva13dqg1aljfwnxsc7yjs"))))
11046 (build-system python-build-system)
11048 (list python-flake8 python-pycodestyle python-six))
11049 (home-page "https://github.com/jbkahn/flake8-print")
11050 (synopsis "Print statement checker plugin for Flake8")
11052 "This plugin for Flake8 checks for @code{print} statements in Python
11054 (license license:expat)))
11056 (define-public python-flake8-pyi
11058 (name "python-flake8-pyi")
11059 (version "20.10.0")
11063 (uri (pypi-uri "flake8-pyi" version))
11066 "0b27n2pmrxcc7nva4wp2i7mrag0fnq0firvhg1ljq593a45b5qyf"))))
11067 (build-system python-build-system)
11069 (list python-attrs python-flake8 python-pyflakes))
11070 (home-page "https://github.com/ambv/flake8-pyi")
11072 "Flake8 plugin that provides specializations for type hinting stub files")
11074 "This package contains a plugin that provides specializations for
11075 type hinting stub files, especially interesting for linting typeshed. It
11076 adds the @file{.pyi} extension to the default value of the @code{--filename}
11077 command-line argument to Flake8. This means stubs are linted by default with
11078 this plugin enabled, without needing to explicitly list every file. It
11079 modifies PyFlakes runs for @file{.pyi} files to defer checking type annotation
11080 expressions after the entire file has been read. This enables support for
11081 first-class forward references that stub files use.")
11082 (license license:expat)))
11084 (define-public python-flake8-pie
11086 (name "python-flake8-pie")
11091 (uri (pypi-uri "flake8-pie" version))
11093 (base32 "0kgipl5gljlp7aa7ykx15pswpzkd0d0qiznihb2z0d9a73181dyd"))))
11094 (build-system python-build-system)
11095 (home-page "https://github.com/sbdchd/flake8-pie")
11096 (synopsis "Flake8 extension that implements lints")
11098 "This package provides a flake8 extension that implements miscellaneous
11100 (license license:bsd-2)))
11102 (define-public python-flake8-quotes
11104 (name "python-flake8-quotes")
11109 (uri (pypi-uri "flake8-quotes" version))
11112 "0ph5s6lxgpzz4an0ax6s5xjqypqmngwr5b1i0h9pqhzghplic49z"))))
11113 (build-system python-build-system)
11115 (list python-flake8))
11116 (home-page "https://github.com/zheller/flake8-quotes/")
11117 (synopsis "Flake8 lint for quotes")
11118 (description "This package provides a Flake8 lint for quotes.")
11119 (license license:expat)))
11121 (define-public python-flake8-todo
11123 (name "python-flake8-todo")
11128 (uri (pypi-uri "flake8-todo" version))
11131 "05arm0sch3r8248035kilmf01z0mxsahw6vpbbz0d343zy8m8k3f"))))
11132 (build-system python-build-system)
11134 (list python-pycodestyle))
11135 (home-page "https://github.com/schlamar/flake8-todo")
11136 (synopsis "TODO notes checker, plugin for flake8")
11138 "This package provides the @code{flake8-todo} Python module, a
11139 TODO notes checker plugin for flake8.")
11140 (license license:expat)))
11142 (define-public python-flake8-isort
11144 (name "python-flake8-isort")
11149 (uri (pypi-uri "flake8-isort" version))
11151 (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q"))))
11152 (build-system python-build-system)
11156 #~(modify-phases %standard-phases
11158 (lambda* (#:key tests? #:allow-other-keys)
11160 (invoke "pytest" "-vv")))))))
11161 (propagated-inputs (list python-flake8 python-isort python-testfixtures))
11162 (native-inputs (list python-pytest))
11163 (home-page "https://github.com/gforcada/flake8-isort")
11164 (synopsis "Flake8 plugin integrating isort")
11165 (description "This package provides a flake8 plugin that integrates isort,
11166 extending flake8 so that it can warn about badly sorted Python import
11168 (license license:gpl2+)))
11170 (define-public python-autoflake
11172 (name "python-autoflake")
11177 (uri (pypi-uri "autoflake" version))
11179 (base32 "0nzr057dbmgprp4a52ymafdkdd5zp2wcqf42913xc7hhvvdbj338"))))
11180 (build-system python-build-system)
11182 (list python-pyflakes))
11183 (home-page "https://github.com/myint/autoflake")
11184 (synopsis "Removes unused imports and unused variables")
11186 "@code{autoflake} removes unused imports and unused variables from Python
11187 code as reported by @code{pyflakes}.
11189 By default, it only removes unused imports for modules that are part of the
11190 standard library. Removal of unused variables is also disabled by default.
11191 It also removes useless @code{pass} statements.")
11192 (license license:expat)))
11194 (define-public python-mistune
11196 (name "python-mistune")
11201 (uri (pypi-uri "mistune" version))
11204 "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr"))))
11205 (build-system python-build-system)
11207 (list python-nose python-cython))
11208 (home-page "https://github.com/lepture/mistune")
11209 (synopsis "Markdown parser in pure Python")
11210 (description "This package provides a fast markdown parser in pure
11212 (license license:bsd-3)))
11214 ;; 2.0 is not released yet, but some packages have started using it.
11215 (define-public python-mistune-next
11217 (inherit python-mistune)
11218 (name "python-mistune-next")
11219 (version "2.0.0rc1")
11222 (uri (pypi-uri "mistune" version))
11225 "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5"))))
11226 (native-inputs (list python-nose))))
11228 (define-public python-markdown
11230 (name "python-markdown")
11235 (uri (pypi-uri "Markdown" version))
11238 "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i"))))
11239 (build-system python-build-system)
11241 (list python-nose python-pyyaml))
11242 (home-page "https://python-markdown.github.io/")
11243 (synopsis "Python implementation of Markdown")
11245 "This package provides a Python implementation of John Gruber's
11246 Markdown. The library features international input, various Markdown
11247 extensions, and several HTML output formats. A command line wrapper
11248 markdown_py is also provided to convert Markdown files to HTML.")
11249 (license license:bsd-3)))
11251 (define-public python-mdx-include
11253 (name "python-mdx-include")
11256 ;; Use git, as there are some test files missing from the PyPI
11257 ;; release, see https://github.com/neurobin/mdx_include/issues/9
11259 (uri (git-reference
11260 (url "https://github.com/neurobin/mdx_include")
11261 ;; Releases are not tagged on github, see
11262 ;; https://github.com/neurobin/mdx_include/issues/10
11263 (commit "683e6be7a00a1ef4d673ad0294458fa61bc97286")))
11264 (file-name (git-file-name name version))
11267 "0qpzgln4ybd7pl0m9s19dv60aq9cvwrk7x3yz96kjhcywaa5w386"))))
11268 (build-system python-build-system)
11271 (modify-phases %standard-phases
11272 (add-before 'check 'disable-test-requiring-network
11274 (substitute* "mdx_include/test/test.py"
11275 (("(\\s+def )test_(cache|config|default)\\(" _ pre post)
11276 (string-append pre "__off__test_" post "("))))))))
11277 (propagated-inputs (list python-cyclic python-markdown python-rcslice))
11278 (home-page "https://github.com/neurobin/mdx_include")
11279 (synopsis "Python Markdown extension to include local or remote files")
11280 (description "Include extension for Python Markdown. It lets you include
11281 local or remote (downloadable) files into your markdown at arbitrary
11284 This project is motivated by markdown-include and provides the same
11285 functionalities with some extras.")
11286 (license license:bsd-3)))
11288 (define-public python-ptyprocess
11290 (name "python-ptyprocess")
11295 (uri (pypi-uri "ptyprocess" version))
11298 "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6"))))
11299 (build-system python-build-system)
11301 (list python-nose))
11304 (modify-phases %standard-phases
11306 (lambda _ (invoke "nosetests"))))))
11307 (home-page "https://github.com/pexpect/ptyprocess")
11308 (synopsis "Run a subprocess in a pseudo terminal")
11310 "This package provides a Python library used to launch a subprocess in a
11311 pseudo terminal (pty), and interact with both the process and its pty.")
11312 (license license:isc)))
11314 (define-public python-cram
11316 (name "python-cram")
11318 (home-page "https://bitheap.org/cram/")
11321 (uri (list (string-append home-page "cram-"
11323 (pypi-uri "cram" version)))
11326 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
11329 (modify-phases %standard-phases
11330 (add-after 'unpack 'patch-source
11332 (substitute* (find-files "cram" ".*\\.py$")
11333 ;; Replace default shell path.
11334 (("/bin/sh") (which "sh")))
11335 (substitute* (find-files "tests" ".*\\.t$")
11337 (("/bin/bash") (which "bash"))
11338 (("/bin/sh") (which "sh")))
11339 (substitute* "cram/_test.py"
11340 ;; This hack works around a bug triggered by substituting
11341 ;; the /bin/sh paths. "tests/usage.t" compares the output of
11342 ;; "cram -h", which breaks the output at 80 characters. This
11343 ;; causes the line showing the default shell to break into two
11344 ;; lines, but the test expects a single line...
11345 (("env\\['COLUMNS'\\] = '80'")
11346 "env['COLUMNS'] = '160'"))
11348 (substitute* "Makefile"
11349 ;; Recent versions of python-coverage have caused the test
11350 ;; coverage to decrease (as of version 0.7). Allow that.
11351 (("--fail-under=100")
11352 "--fail-under=90"))
11356 ;; The test phase uses the built library and executable.
11357 (lambda* (#:key inputs outputs #:allow-other-keys)
11358 (add-installed-pythonpath inputs outputs)
11359 (setenv "PATH" (string-append (getenv "PATH") ":"
11360 (assoc-ref outputs "out") "/bin"))
11361 (invoke "make" "test"))))))
11362 (build-system python-build-system)
11364 (list python-coverage which))
11365 (synopsis "Simple testing framework for command line applications")
11367 "Cram is a functional testing framework for command line applications.
11368 Cram tests look like snippets of interactive shell sessions. Cram runs each
11369 command and compares the command output in the test with the command’s actual
11371 (license license:gpl2+)))
11373 (define-public python-crccheck
11375 (name "python-crccheck")
11380 (uri (pypi-uri "crccheck" version))
11382 (base32 "15psg7wjfbpmmry54ffwg6pg63mnv7mkwmb0a7884axnr8qj55j5"))))
11383 (build-system python-build-system)
11387 #~(modify-phases %standard-phases
11389 (lambda* (#:key tests? #:allow-other-keys)
11391 (invoke "pytest" "-vv")))))))
11392 (native-inputs (list python-pytest))
11393 (home-page "https://sourceforge.net/projects/crccheck/")
11394 (synopsis "Calculation library for CRCs and checksums")
11395 (description "@code{crccheck} is a calculation library for CRCs and
11396 checksums. It implement more than a hundred checksum routines.")
11397 (license license:gpl3+)))
11399 (define-public python-crashtest
11401 (name "python-crashtest")
11406 (uri (pypi-uri "crashtest" version))
11408 (base32 "1p9p7mn8x2j9psc4jxab98897v4i9s4fliyfw8rp8v4bx1n7pjj2"))))
11409 (build-system python-build-system)
11410 (home-page "https://github.com/sdispater/crashtest")
11411 (synopsis "Manage Python errors with ease")
11413 "Python library that makes exceptions handling and inspection easier.")
11414 (license license:expat)))
11416 (define-public python-stdlib-list
11418 (name "python-stdlib-list")
11422 (uri (pypi-uri "stdlib-list" version))
11425 "17vdn4q0sdlndc2fr9svapxx6366hnrhkn0fswp1xmr0jxqh7rd1"))))
11426 (build-system python-build-system)
11428 `(#:tests? #f)) ; Tests require more dependencies.
11430 (list python-sphinx))
11431 (home-page "https://github.com/jackmaney/python-stdlib-list")
11432 (synopsis "Python Standard Libraries")
11433 (description "This package contains a list of Python Standard Libraries.")
11434 (license license:expat)))
11436 (define-public python-stopit
11438 (name "python-stopit")
11443 (uri (pypi-uri "stopit" version))
11445 (base32 "0vcrcvky249q4rbgmwf18mwmnypfk8jpn4h6knyjf86r7xc9rwzp"))))
11446 (build-system python-build-system)
11447 (arguments '(#:tests? #f)) ;there are none
11448 (home-page "https://pypi.python.org/pypi/stopit")
11449 (synopsis "Timeout control decorator and context managers")
11451 "Raise asynchronous exceptions in other threads, control the timeout of
11452 blocks or callables with two context managers and two decorators.")
11453 (license license:expat)))
11455 (define-public python-timeout-decorator
11457 (name "python-timeout-decorator")
11461 (uri (pypi-uri "timeout-decorator" version))
11464 "1mxk2qyydhzncm93z08kvj5ssxq3fr2n7pkrrji28nqwvdc2ybva"))))
11465 (build-system python-build-system)
11466 (home-page "https://github.com/pnpnpn/timeout-decorator")
11467 (synopsis "Timeout decorator")
11468 (description "This package provides a decorator that raises an error
11469 when an operation takes longer than expected.")
11470 (license license:expat)))
11472 (define-public python-straight-plugin
11474 (name "python-straight-plugin")
11479 (uri (pypi-uri "straight.plugin" version))
11482 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
11483 (build-system python-build-system)
11484 (home-page "https://github.com/ironfroggy/straight.plugin")
11485 (synopsis "Simple namespaced plugin facility")
11486 (description "Straight Plugin provides a type of plugin you can create from
11487 almost any existing Python modules, and an easy way for outside developers to
11488 add functionality and customization to your projects with their own plugins.")
11489 (license license:expat)))
11491 (define-public python-pysendfile
11493 (name "python-pysendfile")
11498 (uri (pypi-uri "pysendfile" version))
11500 (base32 "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji"))))
11501 (build-system python-build-system)
11504 #:phases #~(modify-phases %standard-phases
11506 (lambda* (#:key tests? #:allow-other-keys)
11508 (setenv "HOME" "/tmp")
11509 (invoke "make" "test")))))))
11510 (home-page "https://github.com/giampaolo/pysendfile")
11511 (synopsis "Python interface to sendfile(2)")
11512 (description "The @{pysendfile} Python library provides an interface to
11513 the @code{sendfile(2)} system call.")
11514 (license license:expat)))
11516 (define-public python-pyftpdlib
11518 (name "python-pyftpdlib")
11523 (uri (pypi-uri "pyftpdlib" version))
11525 (base32 "0pnv2byzmzg84q5nmmhn1xafvfil85qa5y52bj455br93zc5b9px"))))
11526 (build-system python-build-system)
11530 #~(modify-phases %standard-phases
11532 (lambda* (#:key tests? #:allow-other-keys)
11536 ;; Deselect failing tests.
11537 "-k" (string-append
11538 ;; Using Pytest instead of the Makefile causes the
11539 ;; command line tests to fail on unknown Pytest
11541 "not TestCommandLineParser "
11542 ;; https://github.com/giampaolo/pyftpdlib/issues/478
11543 "and not test_use_gmt_times "
11544 ;; https://github.com/giampaolo/pyftpdlib/issues/550
11545 "and not test_masquerade_address "
11546 ;; https://github.com/giampaolo/pyftpdlib/issues/500
11547 "and not test_rest_on_stor "
11548 "and not test_stor_ascii"))))))))
11549 (native-inputs (list python-psutil python-pytest))
11550 (propagated-inputs (list python-pyopenssl python-pysendfile))
11551 (home-page "https://github.com/giampaolo/pyftpdlib/")
11552 (synopsis "Asynchronous and scalable Python FTP server library")
11553 (description "The Python FTP server library provides a high-level
11554 interface to write efficient, scalable and asynchronous FTP servers with
11555 Python. It is the most complete @url{http://www.faqs.org/rfcs/rfc959.html,
11556 RFC-959} FTP server implementation available for Python, and has the following
11560 It is lightweight, fast and scalable.
11562 It uses the @code{sendfile(2)} system call for uploads.
11564 It uses @code{epoll}, @code{kqueue} and @code{select} to handle concurrency
11567 It supports FTPS (@url{http://tools.ietf.org/html/rfc4217, RFC-4217}),
11568 IPv6 (RFC-2428), Unicode file names (@url{http://tools.ietf.org/html/rfc2640,
11569 RFC-2640}) and MLSD/MLST commands (RFC-3659).
11571 It has a flexible system of @samp{authorizers} able to manage both
11572 @samp{virtual} and @samp{real} users.
11574 (license license:expat)))
11576 (define-public python-fs
11583 (uri (pypi-uri "fs" version))
11585 (base32 "04ykd7q49qgv13hl2n71lzihs2c9099r50lmd85vgx0k2bawg5xf"))))
11586 (build-system python-build-system)
11589 #:phases #~(modify-phases %standard-phases
11591 (lambda* (#:key tests? #:allow-other-keys)
11593 (setenv "HOME" "/tmp")
11594 (invoke "pytest" "-m" "not slow")))))))
11596 (list python-appdirs python-pytz python-six))
11598 (list python-mock python-parameterized python-pyftpdlib python-pytest))
11599 (home-page "https://github.com/PyFilesystem/pyfilesystem2/")
11600 (synopsis "File system abstraction layer for Python")
11601 (description "PyFilesystem's @code{FS} object is a file system abstraction
11602 sharing similarities with Python's own @code{file} object for single files.
11603 It allows opening all the files under a given directory recursively, as a
11604 single @code{FS} object. This enables, for example, counting the combined
11605 number of lines in the contained files easily.")
11606 (license license:expat)))
11608 ;;; Tests are left out in the main package to avoid cycles.
11609 (define-public python-fonttools
11612 (name "python-fonttools")
11616 (uri (pypi-uri "fonttools" version ".zip"))
11619 "1jhl5n3rfqq7fznvsh6r80n7ylap1a7ppq1040y8cflhyz80ap2l"))))
11620 (build-system python-build-system)
11623 (arguments '(#:tests? #f))
11624 (home-page "https://github.com/fonttools/fonttools")
11625 (synopsis "Tools to manipulate font files")
11627 "FontTools/TTX is a library to manipulate font files from Python. It
11628 supports reading and writing of TrueType/OpenType fonts, reading and writing
11629 of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
11630 also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
11631 from an XML-based format.")
11632 (license license:expat))))
11634 ;;; Rename 'python-fonttools' in next cycle, renaming the current
11635 ;;; 'python-fonttools' to 'python-fonttools-minimal'.
11636 (define-public python-fonttools-full
11637 (package/inherit python-fonttools
11639 (substitute-keyword-arguments (package-arguments python-fonttools)
11641 (not (%current-target-system)))
11642 ((#:phases phases '%standard-phases)
11643 `(modify-phases ,phases
11645 (lambda* (#:key tests? #:allow-other-keys)
11647 (invoke "pytest" "-vv"
11649 ;; XXX: These tests need .trm files that are
11650 ;; not shipped with the PyPI release.
11651 (format #f "not ~a"
11653 '("test_read_fontdimens_mathsy"
11654 "test_read_fontdimens_mathex"
11655 "test_read_fontdimens_vanilla"
11656 "test_read_boundary_char"
11657 "fontTools.tfmLib")
11658 " and not "))))))))))
11660 (modify-inputs (package-native-inputs python-fonttools)
11661 (append python-pytest)))
11663 (list python-brotli
11668 python-unicodedata2
11670 (properties (alist-delete 'hidden? (package-properties python-fonttools)))))
11672 (define-public python-fonttools-next
11674 (inherit python-fonttools-full)
11677 (inherit (package-source python-fonttools-full))
11679 (uri (pypi-uri "fonttools" version ".zip"))
11682 "1ryc1wca2v92wn24baryj5fr32lspl8rbsig32fnkxp1islf21j6"))))))
11684 (define-public python-ly
11691 (uri (pypi-uri name version))
11694 "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl"))))
11695 (build-system python-build-system)
11697 ;; FIXME: Some tests need network access.
11699 (synopsis "Tool and library for manipulating LilyPond files")
11700 (description "This package provides a Python library to parse, manipulate
11701 or create documents in LilyPond format. A command line program ly is also
11702 provided that can be used to do various manipulations with LilyPond files.")
11703 (home-page "https://pypi.org/project/python-ly/")
11704 (license license:gpl2+)))
11706 (define-public python-appdirs
11708 (name "python-appdirs")
11713 (uri (pypi-uri "appdirs" version))
11716 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
11717 (build-system python-build-system)
11718 (home-page "https://github.com/ActiveState/appdirs")
11720 "Determine platform-specific dirs, e.g. a \"user data dir\"")
11722 "This module provides a portable way of finding out where user data
11723 should be stored on various operating systems.")
11724 (license license:expat)))
11726 (define-public python-gorilla
11728 (name "python-gorilla")
11732 (uri (pypi-uri "gorilla" version))
11735 "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy"))))
11736 (build-system python-build-system)
11737 (home-page "https://github.com/christophercrouzet/gorilla")
11738 (synopsis "Convenient monkey patching with Python")
11740 "Gorilla is a Python library that provides a convenient approach to
11741 monkey patching. Monkey patching is the process of modifying module and
11742 class attributes at runtime with the purpose of replacing or extending
11743 third-party code.")
11744 (license license:expat)))
11746 (define-public python-llfuse
11748 (name "python-llfuse")
11752 (uri (pypi-uri "llfuse" version))
11755 "1jaf790rsxvz3hs9fbr3hrnmg0xzl6a2bqfa10bbbsjsdbcpk762"))))
11756 (build-system python-build-system)
11760 (list pkg-config python-pytest))
11761 (synopsis "Python bindings for FUSE")
11763 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
11764 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
11765 (license license:lgpl2.0+)))
11767 (define-public python-msgpack
11769 (name "python-msgpack")
11773 (uri (pypi-uri "msgpack" version))
11776 "0pqzy1zclyhd42gfibhkcqymbspy5a6v421g87mh40h3iz0nkn7m"))))
11777 (build-system python-build-system)
11779 `(#:modules ((guix build utils)
11780 (guix build python-build-system)
11785 (modify-phases %standard-phases
11788 (invoke "pytest" "-v" "test"))))))
11790 (list python-pytest))
11791 (synopsis "MessagePack (de)serializer")
11792 (description "MessagePack is a fast, compact binary serialization format,
11793 suitable for similar data to JSON. This package provides CPython bindings for
11794 reading and writing MessagePack data.")
11795 (home-page "https://pypi.org/project/msgpack/")
11796 (license license:asl2.0)))
11798 (define-public python-msgpack-1.0.2
11800 (inherit python-msgpack)
11804 (uri (pypi-uri "msgpack" version))
11807 "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s"))))))
11809 ;; This msgpack library's name changed from "python-msgpack" to "msgpack" with
11810 ;; release 0.5. Some packages like borg still call it by the old name for now.
11811 ;; <https://bugs.gnu.org/30662>
11812 (define-public python-msgpack-transitional
11814 (inherit python-msgpack)
11815 (name "python-msgpack-transitional")
11819 (uri (pypi-uri "msgpack" version))
11822 "1hz2dba1nvvn52afg34liijsm7kn65cmn06dl0xbwld6bb4cis0f"))))
11824 (substitute-keyword-arguments (package-arguments python-msgpack)
11826 `(modify-phases ,phases
11827 (add-after 'unpack 'configure-transitional
11829 ;; Keep using the old name.
11830 (substitute* "setup.py"
11831 (("TRANSITIONAL = False")
11832 "TRANSITIONAL = 1"))
11833 ;; This old version is not compatible with Python 3.9
11834 (substitute* '("test/test_buffer.py" "test/test_extension.py")
11835 ((".tostring\\(") ".tobytes("))
11836 (substitute* '("test/test_buffer.py" "test/test_extension.py")
11837 ((".fromstring\\(") ".frombytes("))
11840 (define-public python-netaddr
11842 (name "python-netaddr")
11847 (uri (pypi-uri "netaddr" version))
11850 "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n"))))
11851 (build-system python-build-system)
11852 (arguments `(#:tests? #f)) ;; No tests.
11853 (home-page "https://github.com/drkjam/netaddr/")
11854 (synopsis "Pythonic manipulation of network addresses")
11856 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
11857 and MAC network addresses.")
11858 (license license:bsd-3)))
11860 (define-public python-openstep-plist
11862 (name "python-openstep-plist")
11864 (home-page "https://github.com/fonttools/openstep-plist")
11867 (uri (git-reference
11869 (commit (string-append "v" version))))
11870 (file-name (git-file-name name version))
11873 "1rxjgzh0p069ncsr2986rn32vhdqyq35irbqg2559jh18456mkca"))))
11874 (build-system python-build-system)
11877 #~(modify-phases %standard-phases
11878 (add-after 'unpack 'pretend-version
11880 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
11881 #$(package-version this-package))))
11883 (lambda* (#:key tests? #:allow-other-keys)
11885 (invoke "pytest" "-vv")))))))
11887 (list python-cython python-pytest python-setuptools-scm))
11888 (synopsis "OpenStep plist parser and writer")
11890 "This package provides a parser for the \"old style\" OpenStep property
11891 list format (also known as ASCII plist), written in Cython.")
11892 (license license:expat)))
11894 (define-public python-wrapt
11896 (name "python-wrapt")
11901 (uri (pypi-uri "wrapt" version))
11904 "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn"))))
11905 (build-system python-build-system)
11907 ;; Tests are not included in the tarball, they are only available in the
11910 (home-page "https://github.com/GrahamDumpleton/wrapt")
11911 (synopsis "Module for decorators, wrappers and monkey patching")
11913 "The aim of the wrapt module is to provide a transparent object proxy for
11914 Python, which can be used as the basis for the construction of function
11915 wrappers and decorator functions.")
11916 (license license:bsd-2)))
11918 (define-public python-commentjson
11920 (name "python-commentjson")
11923 ;; The PyPI release is missing some test files.
11925 (uri (git-reference
11926 (url "https://github.com/vaidik/commentjson")
11927 (commit (string-append "v" version))))
11928 (file-name (git-file-name name version))
11931 "01iscgrc6bkyrxbzmf46csbf9c0n7g6dygdmxs3fq8fkzrrciybl"))))
11932 (build-system python-build-system)
11934 `(#:modules ((guix build python-build-system)
11937 (ice-9 textual-ports))
11939 (modify-phases %standard-phases
11940 (add-after 'unpack 'relax-requirements
11942 (substitute* "setup.py"
11943 (("lark-parser>=0.7.1,<0.8.0")
11944 "lark-parser>=0.7.1"))))
11945 (add-after 'unpack 'delete-unspported-tests
11946 ;; Some tests rely on the 'test' module of Python itself,
11947 ;; which is not available with the Python package in Guix;
11950 ;; XXX: Copied from (guix build dub-build-system).
11951 (define (grep string file-name)
11952 (string-contains (call-with-input-file file-name get-string-all)
11955 (with-directory-excursion "commentjson/tests/test_json"
11956 (let* ((dot? (lambda (x) (member x '("." ".."))))
11957 (test-files (scandir "." (negate dot?))))
11958 (for-each delete-file
11959 (filter (lambda (f) (grep "from test." f))
11960 test-files)))))))))
11962 (list python-lark-parser))
11965 (home-page "https://github.com/vaidik/commentjson")
11966 (synopsis "Python library for adding comments to JSON files")
11967 (description "Comment JSON is a Python package that helps you create JSON
11968 files with Python and JavaScript style inline comments. Its API is very
11969 similar to the Python standard library's @code{json} module.")
11970 (license license:expat)))
11972 (define-public python-resolvelib
11974 (name "python-resolvelib")
11978 ;; Tests are missing from the PyPI release.
11980 (uri (git-reference
11981 (url "https://github.com/sarugaku/resolvelib")
11983 (file-name (git-file-name name version))
11986 "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8"))))
11987 (build-system python-build-system)
11990 (modify-phases %standard-phases
11992 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
11994 (add-installed-pythonpath inputs outputs)
11995 (invoke "pytest")))))))
11997 (list python-commentjson python-packaging python-pytest))
11998 (home-page "https://github.com/sarugaku/resolvelib")
11999 (synopsis "Abstract dependencies resolver")
12000 (description "The ResolveLib library provides a @code{Resolver} class that
12001 includes dependency resolution logic.")
12002 (license license:isc)))
12004 ;;; This older version is required by ansible-core.
12005 (define-public python-resolvelib-0.5
12006 (package/inherit python-resolvelib
12007 (name "python-resolvelib")
12012 (uri (git-reference
12013 (url "https://github.com/sarugaku/resolvelib")
12015 (file-name (git-file-name name version))
12018 "0697y330sqhiclk25v151qxg7aixzpj434lbg5qib0qlna5zg9la"))))))
12020 (define-public python-commonmark
12022 (name "python-commonmark")
12027 (uri (pypi-uri "commonmark" version))
12029 (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5"))))
12030 (build-system python-build-system)
12033 (modify-phases %standard-phases
12035 (lambda* (#:key inputs outputs #:allow-other-keys)
12036 (add-installed-pythonpath inputs outputs)
12037 (invoke "python" "setup.py" "test"))))))
12038 (home-page "https://github.com/readthedocs/commonmark.py")
12039 (synopsis "Python parser for the CommonMark Markdown spec")
12041 "This module is a pure Python port of jgm's @code{commonmark.js}, a
12042 Markdown parser and renderer for the CommonMark specification, using only
12044 (license license:bsd-3)))
12046 (define-public python-xlrd
12048 (name "python-xlrd")
12051 ;; The tests are not included in the PyPI archive.
12053 (uri (git-reference
12054 (url "https://github.com/python-excel/xlrd")
12056 (file-name (git-file-name name version))
12059 "170asszffvf6rh5w169ic4h5kxgjkmdl3060vw737d4g1qfifvzz"))))
12060 (build-system python-build-system)
12062 (list python-pytest))
12063 (home-page "http://www.python-excel.org/")
12064 (synopsis "Library for extracting data from Excel files")
12065 (description "This package provides a library to extract data from
12066 spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
12067 @samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
12068 Unicode-aware. It is not intended as an end-user tool.")
12069 (license license:bsd-3)))
12071 ;;; Note: this package is unmaintained since 2018 (archived on GitHub).
12072 (define-public python-xlwt
12074 (name "python-xlwt")
12079 (uri (pypi-uri "xlwt" version))
12081 (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5"))))
12082 (build-system python-build-system)
12085 (modify-phases %standard-phases
12087 (lambda* (#:key tests? #:allow-other-keys)
12089 (setenv "GUIX_PYTHONPATH"
12090 (string-append (getcwd) "/build/lib:"
12091 (getenv "GUIX_PYTHONPATH")))
12092 (invoke "nosetests" "-v")))))))
12094 `(("nose" ,python-nose)))
12095 (home-page "http://www.python-excel.org/")
12096 (synopsis "Library for creating spreadsheet Excel files")
12097 (description "@code{xlwt} is a library for writing data and formatting
12098 information to older Excel files (i.e. .xls). The package itself is pure
12099 Python with no dependencies on modules or packages outside the standard Python
12100 distribution. It is not intended as an end-user tool.")
12101 (license license:bsd-3)))
12103 (define-public python-immutables
12105 (name "python-immutables")
12110 (uri (pypi-uri "immutables" version))
12112 (base32 "1x4cinh0xbl6p6p2yfm2s07mxxy3lf0zzai9gqpydk4482bwfdjk"))))
12113 (build-system python-build-system)
12114 (native-inputs (list python-mypy python-pytest))
12115 (home-page "https://github.com/MagicStack/immutables")
12116 (synopsis "High-performance immutable mapping type for Python")
12118 "An immutable mapping type for Python. The underlying datastructure is a
12119 Hash Array Mapped Trie (HAMT) used in Clojure, Scala, Haskell, and other
12120 functional languages.")
12121 (license license:asl2.0)))
12123 (define-public python-prettytable
12125 (name "python-prettytable")
12130 (uri (pypi-uri "prettytable" version))
12133 "1c599w31i2ndzbkn85xwsgv9sd2j16r56dl922w4jh3rs97vb3hi"))))
12134 (build-system python-build-system)
12137 #~(modify-phases %standard-phases
12139 (lambda* (#:key tests? #:allow-other-keys)
12141 (invoke "pytest" "-vv")))))))
12143 (list python-pytest
12144 python-pytest-lazy-fixture
12145 python-setuptools-scm))
12146 (propagated-inputs (list python-wcwidth))
12147 (home-page "https://github.com/jazzband/prettytable")
12148 (synopsis "Display tabular data in an ASCII table format")
12150 "A library designed to represent tabular data in visually appealing ASCII
12151 tables. PrettyTable allows for selection of which columns are to be printed,
12152 independent alignment of columns (left or right justified or centred) and
12153 printing of sub-tables by specifying a row range.")
12154 (license license:bsd-3)))
12156 (define-public python-rtf-tokenize
12158 (name "python-rtf-tokenize")
12162 (uri (pypi-uri "rtf_tokenize" version))
12165 "026njb9iwznycda83bln3gfivcnzdz6vy8y86xvbsy84s28g6gaw"))))
12166 (build-system python-build-system)
12167 (native-inputs (list python-pytest))
12168 (home-page "https://github.com/benoit-pierre/rtf_tokenize")
12169 (synopsis "Simple RTF tokenizer")
12170 (description "This package is a simple RTF tokenizer.")
12171 (license license:gpl2+)))
12173 (define-public python-curio
12175 (name "python-curio")
12180 (uri (pypi-uri "curio" version))
12182 (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g"))))
12183 (build-system python-build-system)
12186 (modify-phases %standard-phases
12188 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
12190 (add-installed-pythonpath inputs outputs)
12191 (invoke "pytest" "-vv" "-k"
12193 ;; Tries to open an outgoing connection.
12194 "not test_ssl_outgoing "
12195 ;; This test fails since Python 3.9.9 (see:
12196 ;; https://github.com/dabeaz/curio/issues/347).
12197 "and not test_timeout"))))))))
12199 (list python-pytest))
12200 (home-page "https://github.com/dabeaz/curio")
12201 (synopsis "Coroutine-based library for concurrent Python")
12203 "Curio is a coroutine-based library for concurrent Python systems
12204 programming. It provides standard programming abstractions such as as
12205 tasks, sockets, files, locks, and queues.")
12206 (license license:bsd-3)))
12208 (define-public python-tables
12210 (name "python-tables")
12215 (uri (pypi-uri "tables" version))
12218 "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9"))
12219 (modules '((guix build utils)))
12222 ;; Remove pre-compiled .pyc files from source.
12223 (for-each delete-file-recursively
12224 (find-files "." "__pycache__" #:directories? #t))
12225 (for-each delete-file (find-files "." "\\.pyc$"))
12227 (build-system python-build-system)
12229 `(;; FIXME: python-build-system does not pass configure-flags to "build"
12230 ;; or "check", so we must override the build and check phases.
12232 (modify-phases %standard-phases
12233 (add-after 'unpack 'use-gcc
12235 (substitute* "setup.py"
12236 (("^( +)compiler = new_compiler\\(\\)" line indent)
12237 (string-append line
12240 "compiler.set_executables(compiler='gcc',"
12241 "compiler_so='gcc',"
12242 "linker_exe='gcc',"
12243 "linker_so='gcc -shared')")))
12245 (add-after 'unpack 'disable-tuning
12247 (substitute* "setup.py"
12248 (("cpu_flags = .*")
12249 "cpu_flags = ['sse2']\n"))
12252 (lambda* (#:key inputs #:allow-other-keys)
12253 (invoke "python" "setup.py" "build"
12254 (string-append "--hdf5="
12255 (assoc-ref inputs "hdf5")))))
12257 (lambda* (#:key inputs #:allow-other-keys)
12258 (invoke "python" "setup.py" "check"
12259 (string-append "--hdf5="
12260 (assoc-ref inputs "hdf5"))))))))
12262 (list python-numexpr python-numpy))
12264 (list python-cython pkg-config))
12266 (list hdf5-1.10 bzip2 zlib))
12267 (home-page "https://www.pytables.org/")
12268 (synopsis "Hierarchical datasets for Python")
12269 (description "PyTables is a package for managing hierarchical datasets and
12270 designed to efficiently cope with extremely large amounts of data.")
12271 (license license:bsd-3)))
12273 (define-public python-sniffio
12275 (name "python-sniffio")
12280 (uri (pypi-uri "sniffio" version))
12282 (base32 "1pnkvi6wvn4qd37y69n1ls6n8l63gfmn3pvb1jb50gqxxkn6wrn4"))))
12283 (build-system python-build-system)
12286 (modify-phases %standard-phases
12289 (invoke "pytest" "-vv"))))))
12291 (list python-curio python-pytest python-pytest-cov))
12292 (home-page "https://github.com/python-trio/sniffio")
12293 (synopsis "Detect which async library a program is running under")
12294 (description "This package detects which async library a program is
12295 running under. It supports multiple async I/O packages, like Trio, and
12297 ;; Either license applies.
12298 (license (list license:expat license:asl2.0))))
12300 (define-public python-pytest-black
12302 (name "python-pytest-black")
12307 (uri (pypi-uri "pytest-black" version))
12310 "19bmbcnaq02md8nnj6pywri3vps8sxnhysbfy386qkbn9w09ncqx"))))
12311 (build-system python-build-system)
12313 (list python-pytest python-black python-toml))
12315 (list python-setuptools-scm))
12316 (home-page "https://github.com/shopkeep/pytest-black")
12317 (synopsis "Pytest plugin to enable format checking with black")
12319 "This package provides a pytest plugin to enable format checking with the
12320 Python code formatter \"black\".")
12321 (license license:expat)))
12323 (define-public python-geojson
12325 (name "python-geojson")
12330 (uri (pypi-uri "geojson" version))
12332 (base32 "12k5bzqskvq3gqzkryarhdjl0df47y5k9cf8r3clasi2wjnbfjvf"))))
12333 (build-system python-build-system)
12335 ;; https://github.com/jazzband/geojson/issues/175
12337 (home-page "https://github.com/jazzband/geojson")
12338 (synopsis "Python bindings and utilities for GeoJSON")
12340 "This package provides Python bindings and utilities for
12341 @uref{http://geojson.org/, GeoJSON}, a format for encoding geographic data
12343 (license license:bsd-3)))
12345 (define-public wfetch
12346 (let ((commit "e1cfa37814aebc9eb56ce994ebe877b6a6f9a715")
12350 (version (git-version "0.1-pre" revision commit))
12351 (home-page "https://github.com/Gcat101/Wfetch")
12355 (uri (git-reference (url home-page)
12357 (file-name (git-file-name name version))
12359 (base32 "1dmr85plx8zr6s14ym3r32g6crwxghkval5a24ah90ijx4dbn5q5"))))
12360 (build-system python-build-system)
12362 `(#:use-setuptools? #f ; no setup.py
12363 #:tests? #f ; no test suite
12365 (modify-phases %standard-phases
12368 (lambda* (#:key outputs #:allow-other-keys)
12369 (let* ((out (assoc-ref outputs "out"))
12370 (bin (string-append out "/bin"))
12371 (share (string-append out "/share")))
12373 (substitute* "wfetch/wfetch.py"
12374 (("os.sep, 'opt', 'wfetch'") (string-append "'" share "'")))
12375 (install-file "wfetch/wfetch.py" bin)
12376 (copy-recursively "wfetch/icons" share)))))))
12377 (inputs (list python-pyowm python-fire python-termcolor python-requests))
12378 (synopsis "Command-line tool to display weather info")
12380 "This package provides a tool similar to Neofetch/pfetch, but for
12381 weather: it can display the weather condition, temperature, humidity, etc.
12383 To use it, you must first run:
12386 export WEATHER_CLI_API=@var{your OpenWeatherMap API key}
12388 (license license:gpl3+))))
12390 (define-public python-get-version
12392 (name "python-get-version")
12397 (uri (pypi-uri "get_version" version))
12400 "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1"))))
12401 (build-system python-build-system)
12403 (list python-pygments
12405 python-pytest-black
12409 (home-page "https://github.com/flying-sheep/get_version")
12410 (synopsis "Version helper in the spirit of versioneer")
12412 "This package provides a version helper that lets you automatically use
12413 the latest @code{vX.X.X} Git tag as the version in your Python package. It
12414 also supports getting the version from Python source distributions or, once
12415 your package is installed, via @code{pkg_resources} (part of
12416 @code{setuptools}).")
12417 (license license:gpl3+)))
12419 (define-public python-filetype
12421 (name "python-filetype")
12426 (uri (pypi-uri "filetype" version))
12428 (base32 "05mkinkcn36v1cnb5hzay3zxmv7jmmflckxxp08rgzbkkf3i9pvp"))))
12429 (build-system python-build-system)
12432 (modify-phases %standard-phases
12434 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
12436 (add-installed-pythonpath inputs outputs)
12437 (invoke "python" "-m" "pytest" "-k"
12439 ;; Both tests fail with FileNotFoundError.
12440 "not test_infer_zip_from_disk"
12441 " and not test_infer_tar_from_disk"))))))))
12443 (list python-pytest python-pytest-benchmark))
12444 (home-page "https://github.com/h2non/filetype.py")
12445 (synopsis "Infer file type and MIME type of any file/buffer")
12446 (description "@code{filetype} is a small and dependency free Python
12447 package to infer file type and MIME type checking the magic numbers
12448 signature of a file or buffer.")
12449 (license license:expat)))
12451 (define-public python-cachelib
12453 (name "python-cachelib")
12458 (uri (pypi-uri "cachelib" version))
12460 (base32 "0p4chkvbvffcllsny5rpzmsq2vyr24ql3kzif4ha0fxp3fp7vqk8"))))
12461 (build-system python-build-system)
12464 (modify-phases %standard-phases
12466 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
12468 (add-installed-pythonpath inputs outputs)
12469 (invoke "pytest")))))))
12471 (list python-pytest python-pytest-xprocess))
12472 (home-page "https://github.com/pallets/cachelib")
12473 (synopsis "Collection of cache libraries")
12474 (description "Cachelib is a library extracted from @code{werkzeug} which
12475 provides a collection of cache libraries in the same API interface.")
12476 (license license:bsd-3)))
12478 (define-public python-pylru
12480 (name "python-pylru")
12485 (uri (pypi-uri "pylru" version))
12487 (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9"))))
12488 (build-system python-build-system)
12491 (modify-phases %standard-phases
12493 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
12495 (add-installed-pythonpath inputs outputs)
12496 (invoke "python" "test.py")))))))
12497 (home-page "https://github.com/jlhutch/pylru")
12498 (synopsis "Least recently used (LRU) cache implementation")
12500 "Pylru implements a true LRU cache along with several support classes.
12501 Pylru provides a cache class with a simple dict interface. It also provides
12502 classes to wrap any object that has a dict interface with a cache. Both
12503 write-through and write-back semantics are supported. Pylru also provides
12504 classes to wrap functions in a similar way, including a function decorator.")
12505 (license license:gpl2+)))
12507 (define-public python-legacy-api-wrap
12509 (name "python-legacy-api-wrap")
12514 (uri (pypi-uri "legacy-api-wrap" version))
12517 "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3"))))
12518 (build-system python-build-system)
12520 (list python-get-version python-pytest python-pytest-black
12521 python-pytest-cov python-setuptools))
12522 (home-page "https://github.com/flying-sheep/legacy-api-wrap")
12523 (synopsis "Legacy API wrapper")
12524 (description "This module defines a decorator to wrap legacy APIs. The
12525 primary use case is APIs defined before keyword-only parameters existed.")
12526 (license license:gpl3+)))
12528 (define-public python-langdetect
12530 (name "python-langdetect")
12535 (uri (pypi-uri "langdetect" version))
12537 (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb"))))
12538 (build-system python-build-system)
12541 (home-page "https://github.com/Mimino666/langdetect")
12542 (synopsis "Language detection library")
12544 "This library is a port of Nakatani Shuyo's language-detection library
12545 (version from 03/03/2014) to Python.")
12546 (license license:expat)))
12548 (define-public python-pyasn1
12550 (name "python-pyasn1")
12555 (uri (pypi-uri "pyasn1" version))
12558 "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf"))))
12559 (build-system python-build-system)
12560 (home-page "http://pyasn1.sourceforge.net/")
12561 (synopsis "ASN.1 types and codecs")
12563 "This is an implementation of ASN.1 types and codecs in Python. It is
12564 suitable for a wide range of protocols based on the ASN.1 specification.")
12565 (license license:bsd-2)))
12567 (define-public python-pyasn1-modules
12569 (name "python-pyasn1-modules")
12574 (uri (pypi-uri "pyasn1-modules" version))
12577 "0pp6dcagd8c2c9qx3lahc1rdwlnmm0y0siqr5icjq2r32b3q8pwh"))))
12578 (build-system python-build-system)
12580 (list python-pyasn1))
12581 (home-page "https://sourceforge.net/projects/pyasn1/")
12582 (synopsis "ASN.1 codec implementations")
12584 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
12585 implementations of ASN.1-based codecs and protocols.")
12586 (license license:bsd-3)))
12588 (define-public python-ipaddress
12590 (name "python-ipaddress")
12594 (uri (pypi-uri "ipaddress" version))
12597 "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p"))))
12598 (build-system python-build-system)
12599 (home-page "https://github.com/phihag/ipaddress")
12600 (synopsis "IP address manipulation library")
12602 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
12603 in Python. This library is used to create, poke at, and manipulate IPv4 and
12604 IPv6 addresses and networks.")
12605 (license license:psfl)))
12607 (define-public python-asn1tools
12609 (name "python-asn1tools")
12610 (version "0.158.0")
12614 (uri (pypi-uri "asn1tools" version))
12616 (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0"))))
12617 (build-system python-build-system)
12619 (list python-bitstruct python-diskcache python-prompt-toolkit
12621 (home-page "https://github.com/eerimoq/asn1tools")
12622 (synopsis "ASN.1 parsing, encoding and decoding")
12623 (description "This package provides ASN.1 parsing, encoding and decoding
12624 for Python, including constraints checking. It supports several
12625 codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating
12626 for OER and UPER.")
12627 (license license:expat)))
12629 (define-public python-idna
12631 (name "python-idna")
12636 (uri (pypi-uri "idna" version))
12639 "0v8f6qjfi5i7qc5icsbv2pi24qy6k6m8wjqjvdf2sxjvlpq3yr4x"))))
12640 (build-system python-build-system)
12641 (home-page "https://github.com/kjd/idna")
12642 (synopsis "Internationalized domain names in applications")
12644 "This is a library to support the Internationalised Domain Names in
12645 Applications (IDNA) protocol as specified in RFC 5891. This version of the
12646 protocol is often referred to as “IDNA2008” and can produce different results
12647 from the earlier standard from 2003. The library is also intended to act as a
12648 suitable drop-in replacement for the “encodings.idna” module that comes with
12649 the Python standard library but currently only supports the older 2003
12651 (license license:bsd-4)))
12653 (define-public python-libsass
12655 (name "python-libsass")
12659 ;; PyPI tarball is missing some test files.
12661 (uri (git-reference
12662 (url "https://github.com/sass/libsass-python")
12664 (file-name (git-file-name name version))
12666 (base32 "1r0kgl7i6nnhgjl44sjw57k08gh2qr7l8slqih550dyxbf1akbxh"))))
12667 (build-system python-build-system)
12670 (modify-phases %standard-phases
12671 ;; Use Guix package of libsass instead of compiling from a checkout.
12672 (add-before 'build 'set-libsass
12673 (lambda _ (setenv "SYSTEM_SASS" "indeed")))
12675 (lambda* (#:key tests? #:allow-other-keys)
12677 (invoke "pytest" "sasstests.py"))))
12678 (add-after 'install 'delete-test
12679 (lambda* (#:key inputs outputs #:allow-other-keys)
12680 ;; Delete sasstests.py because it attempts to open a file
12681 ;; that is not installed when loaded, which breaks the sanity
12683 (delete-file (string-append
12684 (assoc-ref outputs "out")
12688 (search-input-file inputs "bin/python"))))
12689 "/site-packages/sasstests.py")))))))
12691 (list python-pytest python-werkzeug))
12696 (home-page "https://sass.github.io/libsass-python/")
12697 (synopsis "Straightforward binding of libsass for Python")
12699 "This package provides a simple Python extension module @code{sass} which
12700 is binding LibSass.")
12701 (license license:expat)))
12703 (define-public python-idna-ssl
12705 (name "python-idna-ssl")
12710 (uri (pypi-uri "idna-ssl" version))
12713 "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj"))))
12714 (build-system python-build-system)
12716 `(#:tests? #f)) ;circular dependency with python-aiohttp
12717 (propagated-inputs (list python-idna))
12718 (home-page "https://github.com/aio-libs/idna-ssl")
12719 (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support")
12720 (description "Patch @code{ssl.match_hostname} for Unicode(idna)
12722 (license license:expat)))
12724 ;;; Variant used to break a cycle with python-pip-run-bootstrap.
12725 (define-public python-path-bootstrap
12728 (name "python-path-bootstrap")
12733 (uri (pypi-uri "path" version))
12735 (base32 "0lig13gxnfv98v790db1smvsbd3mnj7y8rwyiwhfi6xiqibygwms"))))
12736 (build-system pyproject-build-system)
12738 (list #:tests? #f))
12739 (native-inputs (list python-setuptools-scm))
12740 (home-page "https://github.com/jaraco/path")
12741 (synopsis "Object-oriented file system path manipulation library")
12742 (description "@code{path} (formerly @code{path.py}) implements path
12743 objects as first-class entities, allowing common operations on files to be
12744 invoked on those path objects directly.")
12745 (license license:expat))))
12747 (define-public python-path
12748 (package/inherit python-path-bootstrap
12749 (name "python-path")
12751 (substitute-keyword-arguments
12752 (package-arguments python-path-bootstrap)
12754 (not (%current-target-system)))
12755 ((#:test-flags flags #~'())
12756 #~(append (list "-vv" "-k"
12758 ;; Do not test the myproject.toml build as it tries
12759 ;; to pull dependencies from the Internet.
12761 ;; This tests assumes a root user exists.
12762 "and not test_get_owner"))
12765 (modify-inputs (package-native-inputs python-path-bootstrap)
12766 (append python-appdirs
12770 python-pytest-black
12771 python-pytest-checkdocs
12773 python-pytest-enabler
12774 python-pytest-flake8
12775 python-pytest-mypy)))
12776 (properties (alist-delete 'hidden?
12777 (package-properties
12778 python-path-bootstrap)))))
12780 (define-public python-pathpy
12781 (deprecated-package "python-pathpy" python-path))
12783 (define-public python-pretend
12785 (name "python-pretend")
12790 (uri (pypi-uri "pretend" version))
12793 "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9"))))
12794 (build-system python-build-system)
12795 (home-page "https://github.com/alex/pretend")
12796 (synopsis "Library for stubbing in Python")
12798 "Pretend is a library to make stubbing with Python easier. Stubbing is a
12799 technique for writing tests. You may hear the term mixed up with mocks,
12800 fakes, or doubles. Basically, a stub is an object that returns pre-canned
12801 responses, rather than doing any computation.")
12802 (license license:bsd-3)))
12804 ;;; Variant used to break a dependency cycle with
12805 ;;; python-pytest-perf-bootstrap.
12806 (define-public python-pip-run-bootstrap
12809 (name "python-pip-run-bootstrap")
12813 (uri (git-reference
12814 (url "https://github.com/jaraco/pip-run")
12815 (commit (string-append "v" version))))
12816 (file-name (git-file-name name version))
12819 "0ycrjj3jgqcr9c2k7y8vprq65iblg0q0hvwz8zwi13gmb0ffds0c"))))
12820 (build-system python-build-system)
12825 #~(modify-phases %standard-phases
12826 (add-before 'build 'pretend-version
12827 ;; The version string is usually derived via setuptools-scm, but
12828 ;; without the git metadata available this fails.
12830 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
12831 (native-inputs (list python-setuptools-scm))
12832 (propagated-inputs (list python-autocommand python-path-bootstrap
12834 (home-page "https://github.com/jaraco/pip-run")
12835 (synopsis "Dynamic dependency loader for Python")
12836 (description "The @command{pip-run} command provides on-demand temporary
12837 package installation for a single interpreter run. It replaces this series of
12840 $ virtualenv --python pythonX.X --system-site-packages /tmp/env
12841 $ /tmp/env/bin/pip install pkg1 pkg2 -r reqs.txt
12842 $ /tmp/env/bin/python ...
12845 (license license:expat))))
12847 (define-public python-pip-run
12848 (package/inherit python-pip-run-bootstrap
12849 (name "python-pip-run")
12851 (substitute-keyword-arguments (package-arguments python-pip-run-bootstrap)
12853 (not (%current-target-system)))
12854 ((#:phases phases #~%standard-phases)
12855 #~(modify-phases #$phases
12857 (lambda* (#:key tests? #:allow-other-keys)
12859 (invoke "pytest" "-k"
12861 ;; Do not test the myproject.toml build as it tries
12862 ;; to pull dependencies from the internet.
12864 ;; These tests attempt to install dependencies from
12865 ;; the network and fail.
12866 "and not test_pkg_imported "
12867 "and not test_pkg_loaded_from_alternate_index ")))))))))
12869 (modify-inputs (package-propagated-inputs python-pip-run-bootstrap)
12870 (replace "python-path-bootstrap" python-path)))
12872 (modify-inputs (package-native-inputs python-pip-run-bootstrap)
12873 (append python-nbformat
12876 python-pytest-black
12877 python-pytest-checkdocs
12879 python-pytest-enabler
12880 python-pytest-flake8
12881 python-pytest-mypy)))
12882 (properties (alist-delete 'hidden? (package-properties
12883 python-pip-run-bootstrap)))))
12885 (define-public python-tlsh
12887 (name "python-tlsh")
12889 (home-page "https://github.com/trendmicro/tlsh")
12893 (uri (git-reference (url home-page) (commit version)))
12894 (file-name (git-file-name name version))
12896 (base32 "1gb5j73nw3nmx030rf8pm75rns5syxhv44zxr6i74kjicyly1i9w"))))
12897 (build-system cmake-build-system)
12899 (list #:out-of-source? #f
12901 #~(modify-phases %standard-phases
12904 ;; Build and install the Python bindings. The underlying
12905 ;; C++ library is apparently not meant to be installed.
12906 (with-directory-excursion "py_ext"
12907 (and (system* "python" "setup.py" "build")
12908 (system* "python" "setup.py" "install"
12909 (string-append "--prefix=" #$output))))))
12910 ;; Delay tests until the phase above has run.
12912 (add-after 'install 'check
12913 (lambda* (#:key tests? #:allow-other-keys)
12914 (substitute* "Testing/python_test.sh"
12915 ;; The script sets up a working PYTHONPATH, but does not
12916 ;; export it for all subsequent test commands. Fix that.
12917 (("^PYTHONPATH=\".*" all)
12918 (string-append all "\nexport PYTHONPATH\n")))
12920 (with-directory-excursion "Testing"
12921 (invoke "./python_test.sh"))))))))
12922 (inputs (list python-wrapper)) ;for the bindings
12923 (synopsis "Fuzzy matching library for Python")
12925 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
12926 Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
12927 value which can be used for similarity comparisons. Similar objects have
12928 similar hash values, which allows for the detection of similar objects by
12929 comparing their hash values. The byte stream should have a sufficient amount
12930 of complexity; for example, a byte stream of identical bytes will not generate
12932 (license license:asl2.0)))
12934 (define-public python-termcolor
12936 (name "python-termcolor")
12941 (uri (pypi-uri "termcolor" version))
12944 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
12945 (build-system python-build-system)
12947 ;; There are no tests.
12949 (home-page "https://pypi.org/project/termcolor/")
12950 (synopsis "ANSII Color formatting for terminal output")
12952 "This package provides ANSII Color formatting for output in terminals.")
12953 (license license:expat)))
12955 (define-public python-terminaltables
12957 (name "python-terminaltables")
12962 (uri (pypi-uri "terminaltables" version))
12965 "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk"))))
12966 (build-system python-build-system)
12967 (home-page "https://github.com/Robpol86/terminaltables")
12969 "Generate simple tables in terminals from a nested list of strings")
12971 "This package makes it easy to draw tables in terminal/console
12972 applications from a list of lists of strings. It supports multi-line rows.")
12973 (license license:expat)))
12975 (define-public python-libarchive-c
12977 (name "python-libarchive-c")
12981 (uri (pypi-uri "libarchive-c" version))
12984 "0q7g6a97110bk0j5x81555kajyxh4sybaabab6v5sgr0xi6386cr"))))
12985 (build-system python-build-system)
12987 '(#:phases (modify-phases %standard-phases
12989 'build 'reference-libarchive
12990 (lambda* (#:key inputs #:allow-other-keys)
12991 ;; Retain the absolute file name of libarchive.so.
12992 (let ((libarchive (assoc-ref inputs "libarchive")))
12993 (substitute* "libarchive/ffi.py"
12994 (("find_library\\('archive'\\)")
12995 (string-append "'" libarchive
12996 "/lib/libarchive.so'"))))))
12998 (lambda _ (invoke "pytest" "-vv"))))))
13000 (list python-mock python-pytest))
13003 (home-page "https://github.com/Changaco/python-libarchive-c")
13004 (synopsis "Python interface to libarchive")
13006 "This package provides Python bindings to libarchive, a C library to
13007 access possibly compressed archives in many different formats. It uses
13008 Python's @code{ctypes} foreign function interface (FFI).")
13009 (license license:lgpl2.0+)))
13011 (define-public python-file
13012 (package/inherit file
13013 (name "python-file")
13014 (build-system python-build-system)
13016 '(#:tests? #f ;no tests
13017 #:configure-flags '("--single-version-externally-managed" "--root=/")
13018 #:phases (modify-phases %standard-phases
13019 (add-before 'build 'change-directory
13023 (add-before 'build 'set-library-file-name
13024 (lambda* (#:key inputs #:allow-other-keys)
13025 (let ((file (assoc-ref inputs "file")))
13026 (substitute* "magic.py"
13027 (("find_library\\('magic'\\)")
13028 (string-append "'" file "/lib/libmagic.so'")))
13030 (inputs `(("file" ,file)))
13031 (native-inputs (if (%current-target-system)
13032 `(("self" ,this-package))
13034 (synopsis "Python bindings to the libmagic file type guesser")
13035 (description "This package provides Python bindings to the libmagic file
13038 Note that this module and the @code{python-magic} module both provide a
13039 @file{magic.py} file; these two modules, which are different and were
13040 developed separately, both serve the same purpose: provide Python bindings for
13043 (define-public python-pydevd
13044 ;; Use the latest commit, which includes cleanups that removes Python 2
13045 ;; syntax that would fail to build.
13046 (let ((revision "0")
13047 (commit "47e298499ef19563bb2ef5941a57046a35ae6868"))
13049 (name "python-pydevd")
13050 (version (git-version "2.8.0" revision commit))
13054 (uri (git-reference
13055 (url "https://github.com/fabioz/PyDev.Debugger")
13057 (modules '((guix build utils)))
13059 ;; Delete pre-built binaries.
13060 (for-each delete-file (find-files "." "\\.(so|dylib|dll)"))
13061 ;; This source is generated via Cython.
13062 (delete-file "_pydevd_bundle/pydevd_cython.c")))
13063 (file-name (git-file-name name version))
13066 "1yd017dh6xgxrqcyf8kk8jrr0a3zw895yfjih0z5jghyf0rck38q"))))
13067 (build-system python-build-system)
13071 #~(modify-phases %standard-phases
13072 (add-after 'unpack 'fix-tests
13074 (substitute* "tests_python/test_convert_utilities.py"
13075 ;; Add missing trailing '/'.
13076 (("'\\\\\\\\usr\\\\\\\\bin\\\\\\\\') == '/usr/bin" all)
13077 (string-append all "/")))))
13078 (add-after 'unpack 'patch-command-paths
13079 (lambda* (#:key inputs #:allow-other-keys)
13080 (substitute* "_pydevd_bundle/pydevd_api.py"
13082 (format #f "~s" (search-input-file inputs "bin/kill")))
13084 (format #f "~s" (search-input-file inputs "bin/pgrep"))))))
13085 (add-after 'unpack 'generate-sources
13087 (setenv "PYTHONPATH" (getcwd))
13088 (invoke "python" "build_tools/build.py")))
13089 (add-after 'unpack 'adjust-attach-binary-name
13092 '("pydevd_tracing.py"
13093 "pydevd_attach_to_process/add_code_to_python_process.py")
13094 (("def get_(target|python_helper_lib)_filename.*" all)
13095 (format #f "~a return ~s~%" all
13096 (string-append #$output "/lib/attach.so"))))))
13097 (add-after 'unpack 'patch-gdb
13098 (lambda* (#:key inputs #:allow-other-keys)
13100 "pydevd_attach_to_process/add_code_to_python_process.py"
13102 (format #f "~s," (search-input-file inputs "bin/gdb"))))))
13103 (add-after 'build 'build-attach-linux-binary
13105 (invoke #+(cxx-for-target) "-shared" "-o" "attach.so"
13106 "-fPIC" "-nostartfiles"
13107 "pydevd_attach_to_process/linux_and_mac/attach.cpp")))
13109 (lambda* (#:key tests? #:allow-other-keys)
13111 (setenv "PYDEVD_USE_CYTHON" "YES")
13112 (invoke "pytest" "-vv"
13113 "-n" (number->string (parallel-job-count))
13116 ;; the GUI event loop requires an X server.
13117 "not test_gui_event_loop_custom "
13118 ;; This test validates that 'pydevd' is not in the
13119 ;; exception message, but it is due to being part
13120 ;; of the build file name present in the message.
13121 "and not test_evaluate_exception_trace "
13122 ;; These fail on systems with YAMA LSM’s ptrace
13123 ;; scope > 0. Upstream issue:
13124 ;; https://github.com/fabioz/PyDev.Debugger/issues/218
13125 "and not test_attach_to_pid")))))
13126 (add-after 'install 'install-attach-binary
13128 (install-file "attach.so"
13129 (string-append #$output "/lib"))))
13130 ;; Some modules aren't designed to be loadable by themselves, such
13131 ;; as 'pydev_app_engine_debug_startup' and fail.
13132 (delete 'sanity-check))))
13134 (list python-cython
13138 python-pytest-xdist
13141 (inputs (list coreutils gdb procps))
13142 (home-page "https://github.com/fabioz/PyDev.Debugger/")
13143 (synopsis "Python debugger")
13144 (description "PyDev.Debugger is a capable Python debugger used in PyDev
13145 and other @acronym{IDEs, Integrated Development Environments}.")
13146 (license license:epl1.0))))
13148 (define-public python-debugpy
13150 (name "python-debugpy")
13155 (uri (git-reference ;no tests in PyPI archive
13156 (url "https://github.com/microsoft/debugpy")
13157 (commit (string-append "v" version))))
13158 (file-name (git-file-name name version))
13159 (modules '((guix build utils)))
13160 ;; Remove the bundled PyDev-Debugger copy, including its pre-built
13162 (snippet '(delete-file-recursively "src/debugpy/_vendored"))
13163 (patches (search-patches "python-debugpy-unbundle-pydevd.patch"))
13166 "1dpfzs3p51648i7f3fz8dw5d0vrj39iwn1jhn0226idc02ybyqih"))))
13167 (build-system python-build-system)
13170 #:tests? #f ; Fail on systems with YAMA LSM’s ptrace scope > 0.
13172 #~(modify-phases %standard-phases
13173 (add-after 'unpack 'patch-sh-in-tests
13175 (substitute* "tests/debugpy/test_run.py"
13177 (string-append "#!" (which "sh"))))))
13178 (add-after 'unpack 'fix-version
13179 ;; Versioneer is useless when there is no git metadata.
13181 (substitute* "setup.py"
13182 (("version=versioneer.get_version\\(),")
13183 (format #f "version=~s," #$version)))))
13184 (add-before 'build 'configure
13186 ;; This adjusts the behavior of debugpy to load pydevd from
13187 ;; Python site packages.
13188 (setenv "DEBUGPY_BUNDLING_DISABLED" "1")))
13190 (lambda* (#:key tests? #:allow-other-keys)
13192 (invoke "pytest" "-vv"
13193 "-n" (number->string (parallel-job-count))
13196 ;; These tests cannot be run in parallel because their
13197 ;; test data would not be copied by xdist and lead to
13198 ;; import errors. (see:
13199 ;; https://github.com/microsoft/debugpy/issues/342 and
13200 ;; https://github.com/microsoft/debugpy/issues/880).
13201 "not test_custom_python_args "
13202 "and not test_autokill "))))))))
13204 ;; See: https://raw.githubusercontent.com/microsoft/debugpy/
13205 ;; main/tests/requirements.txt.
13206 (list python-django
13212 python-pytest-timeout
13213 python-pytest-xdist
13215 (propagated-inputs (list python-pydevd))
13216 (home-page "https://aka.ms/debugpy")
13217 (synopsis "Debug Adapter Protocol Python implementation")
13218 (description "An implementation of the Debug Adapter Protocol for
13220 (license license:expat)))
13222 (define-public python-debian
13224 (name "python-debian")
13225 (home-page "https://salsa.debian.org/python-debian-team/python-debian")
13229 ;; Use git-fetch, as pypi doesn't include test suite.
13231 (uri (git-reference
13234 (file-name (git-file-name name version))
13237 "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa"))))
13238 (build-system python-build-system)
13240 `(#:phases (modify-phases %standard-phases
13241 (add-after 'unpack 'set-version
13242 ;; for reproducible builds, otherwise python-debian
13243 ;; generates a _version.py including the date
13245 (copy-file "lib/debian/_version.py.in" "lib/debian/_version.py")
13246 (substitute* "lib/debian/_version.py"
13247 (("__CHANGELOG_VERSION__") ,version))))
13248 (add-after 'unpack 'remove-debian-specific-tests
13249 ;; python-apt, apt and dpkg are not yet available in guix,
13250 ;; and these tests heavily depend on them.
13252 (delete-file "lib/debian/tests/test_deb822.py")
13253 (delete-file "lib/debian/tests/test_debfile.py")
13256 (list python-six python-chardet))
13257 (synopsis "Debian package related modules")
13259 ;; XXX: Use @enumerate instead of @itemize to work around
13260 ;; <http://bugs.gnu.org/21772>.
13261 "This package provides Python modules that abstract many formats of
13262 Debian-related files, such as:
13265 @item Debtags information;
13266 @item @file{debian/changelog} files;
13267 @item packages files, pdiffs;
13268 @item control files of single or multiple RFC822-style paragraphs---e.g.
13269 @file{debian/control}, @file{.changes}, @file{.dsc};
13270 @item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
13271 contained files and meta-information.
13274 ;; Modules are either GPLv2+ or GPLv3+.
13275 (license license:gpl3+)))
13277 (define-public python-json-spec
13279 (name "python-json-spec")
13284 (uri (pypi-uri "json-spec" version))
13287 "06dpbsq61ja9r89wpa2pzdii47qh3xri9ajdrgn1awfl102znchb"))))
13288 (build-system python-build-system)
13290 (list python-pathlib python-six))
13292 (list python-pytest))
13293 (home-page "http://py.errorist.io/json-spec")
13295 "JSON Schema, JSON Pointer and JSON Reference for Python")
13297 "This Python library implements several JSON specs, like JSON Schema,
13298 JSON Reference and JSON Pointer.")
13299 (license license:bsd-3)))
13301 (define-public python-fastbencode
13303 (name "python-fastbencode")
13308 (uri (pypi-uri "fastbencode" version))
13309 (modules '((guix build utils)))
13310 ;; Delete pre-generated Cython C files.
13311 (snippet '(for-each delete-file (find-files "." "\\.c$")))
13313 (base32 "1r66w3vpmvfmssshjpgqaj2m14c8p94nymr96mwn61idajz9mg5n"))))
13314 (build-system python-build-system)
13315 (native-inputs (list python-cython))
13316 (home-page "https://github.com/breezy-team/fastbencode")
13317 (synopsis "Python Bencode (de)serializer with optional fast C extensions")
13319 "The fastbencode Python package implements the bencode serialization
13320 format for storing and transmitting loosely structured data, originally used
13323 The format can encode four different types of values: byte strings, integers,
13324 lists, and dictionaries (associative arrays). It's simple and unaffected by
13327 This package includes both a pure-Python version and an optional C extension
13328 based on Cython. Both provide the same functionality, but the C version has
13329 significantly better performance.")
13330 (license (list license:expat ; _bencode_py.py
13331 license:gpl2+)))) ; __init__.py
13333 (define-public python-fastjsonschema
13335 (name "python-fastjsonschema")
13340 (uri (pypi-uri "fastjsonschema" version))
13342 (base32 "1ln2j60jzyn6p8i8ljygfgrji58hc23452g7nllkcjdk4p93c7v7"))))
13343 (build-system python-build-system)
13345 `(#:tests? #f ; Fail with a strange backtrace ending in importlib.
13347 (modify-phases %standard-phases
13349 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
13351 (invoke "pytest" "-vv" "-m" "not benchmark")))))))
13353 (list python-colorama
13358 python-pytest-benchmark
13359 python-pytest-cache
13360 python-validictory))
13362 "https://github.com/horejsek/python-fastjsonschema")
13364 "Fast Python implementation of JSON schema")
13366 "This library implements validation of JSON documents by JSON schema for
13367 drafts 04, 06 and 07.")
13368 (license license:bsd-3)))
13370 (define-public python-nbformat
13372 (name "python-nbformat")
13374 ;; The PyPi release tarball lacks some test cases and test data.
13377 (uri (git-reference
13378 (url "https://github.com/jupyter/nbformat")
13382 "114c5c6cvpxhxj8zrw74351gcfzyzjh1jq3py4xf8wk9rahfay9z"))
13383 (file-name (git-file-name name version))))
13384 (build-system python-build-system)
13387 (modify-phases %standard-phases
13389 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
13391 (invoke "pytest" "-vv")))))))
13393 (list python-fastjsonschema python-jsonschema python-jupyter-core
13396 (list python-pytest
13398 (home-page "https://jupyter.org")
13399 (synopsis "Jupyter Notebook format")
13400 (description "This package provides the reference implementation of the
13401 Jupyter Notebook format and Python APIs for working with notebooks.")
13402 (license license:bsd-3)))
13404 (define-public python-nb-clean
13406 (name "python-nb-clean")
13411 (uri (pypi-uri "nb-clean" version))
13413 (base32 "01qvk9n7rx15dhc23m8bj9bw5wdyxh6y18c5fm8hllmrd3ndsx14"))))
13414 (build-system python-build-system)
13415 (propagated-inputs (list python-nbformat))
13416 (home-page "https://github.com/srstevenson/nb-clean")
13417 (synopsis "Clean Jupyter notebooks for versioning")
13418 (description "This package cleans Jupyter notebooks of cell execution
13419 counts, metadata, outputs, and empty cells, preparing them for committing to
13420 version control. It provides a Git filter to automatically clean notebooks
13421 before they're staged, and can also be used with other version control
13422 systems, as a command line tool, and as a Python library.")
13423 (license license:isc)))
13425 (define-public python-bleach
13427 (name "python-bleach")
13432 (uri (pypi-uri "bleach" version))
13434 (base32 "0rc5avysbsl3w3i2qvb6522263zhwlvf50w0ifs8776w9c2wrmn6"))))
13435 (build-system python-build-system)
13437 '(#:phases (modify-phases %standard-phases
13439 (lambda* (#:key tests? #:allow-other-keys)
13440 (when tests? (invoke "pytest" "-vv")))))))
13441 (propagated-inputs (list python-tinycss2 python-webencodings))
13442 (native-inputs (list python-pytest))
13443 (home-page "https://github.com/mozilla/bleach")
13444 (synopsis "Whitelist-based HTML-sanitizing tool")
13445 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
13446 (license license:asl2.0)))
13448 (define-public python-entrypoints
13450 (name "python-entrypoints")
13455 (uri (pypi-uri "entrypoints" version))
13458 "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7"))))
13459 (build-system python-build-system)
13460 ;; The package does not come with a setup.py file, so we have to generate
13465 (modify-phases %standard-phases
13466 (add-after 'unpack 'create-setup.py
13468 (call-with-output-file "setup.py"
13471 from setuptools import setup
13472 setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
13474 (home-page "https://github.com/takluyver/entrypoints")
13475 (synopsis "Discover and load entry points from installed Python packages")
13476 (description "Entry points are a way for Python packages to advertise
13477 objects with some common interface. The most common examples are
13478 @code{console_scripts} entry points, which define shell commands by
13479 identifying a Python function to run. The @code{entrypoints} module contains
13480 functions to find and load entry points.")
13481 (license license:expat)))
13483 (define-public python-epc
13485 (name "python-epc")
13490 (uri (pypi-uri "epc" version))
13493 "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1"))))
13494 (build-system python-build-system)
13496 (list python-sexpdata))
13498 (list python-nose))
13499 (home-page "https://github.com/tkf/python-epc")
13500 (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python")
13502 "Python-EPC can call elisp functions from Python and Python functions
13504 (license license:gpl3)))
13506 (define-public python-forex-python
13508 (name "python-forex-python")
13513 (uri (pypi-uri "forex-python" version))
13515 (base32 "1ma8cl1i2dh8aa99pifnlilyy4d1gd1s07fj0yd17wcbpsh532cj"))))
13516 (build-system python-build-system)
13518 ;; Tests are not included in the PyPI tarball. Also, the tests in the
13519 ;; repository require online data.
13522 (list python-requests python-simplejson))
13523 (home-page "https://github.com/MicroPyramid/forex-python")
13524 (synopsis "Foreign exchange rates and currency conversion")
13526 "@code{python-forex-python} can be used to manipulate foreign
13527 exchange rates and to operate currency conversions.
13531 @item List all currency rates.
13532 @item BitCoin price for all currencies.
13533 @item Converting amount to BitCoins.
13534 @item Get historical rates for any day since 1999.
13535 @item Conversion rate for one currency(ex; USD to INR).
13536 @item Convert amount from one currency to other.('USD 10$' to INR).
13537 @item Currency symbols.
13538 @item Currency names.
13540 (license license:expat)))
13542 (define-public python-simpleeval
13544 (name "python-simpleeval")
13549 (uri (pypi-uri "simpleeval" version))
13551 (base32 "0diysdzvx865yy2rjfah75ha2qfxaxz7r108kp7j2kkd903ya2ry"))))
13552 (build-system python-build-system)
13553 (home-page "https://github.com/danthedeckie/simpleeval")
13554 (synopsis "Simple, safe single expression evaluator library")
13556 "This package provides a quick single file library for easily adding
13557 evaluatable expressions into python projects. Say you want to allow a user
13558 to set an alarm volume, which could depend on the time of day, alarm level,
13559 how many previous alarms had gone off, and if there is music playing at the
13561 (license license:expat)))
13563 (define-public python-nbconvert
13565 (name "python-nbconvert")
13570 (uri (pypi-uri "nbconvert" version))
13573 "17g9xq4za7vvzml6l6d8zrzknhxsvgx02hymmsw9d1dygbi4cgi2"))))
13574 (build-system python-build-system)
13578 #~(modify-phases %standard-phases
13579 (add-after 'unpack 'fix-paths
13580 (lambda* (#:key inputs #:allow-other-keys)
13581 ;; Use pandoc binary from input.
13582 (substitute* "nbconvert/utils/pandoc.py"
13584 (format #f "~s" (search-input-file inputs "bin/pandoc"))))
13586 (substitute* "nbconvert/exporters/pdf.py"
13588 (format #f "~s" (search-input-file inputs "bin/xelatex")))
13590 (format #f "~s" (search-input-file inputs "bin/bibtex"))))
13591 ;; Likewise for Inkscape.
13592 (substitute* "nbconvert/preprocessors/svg2pdf.py"
13593 (("inkscape_path = which\\(\"inkscape\")")
13594 (format #f "inkscape_path = ~s"
13595 (search-input-file inputs "bin/inkscape"))))))
13597 (lambda* (#:key tests? #:allow-other-keys)
13599 ;; Tests depend on templates installed to output.
13600 (setenv "JUPYTER_PATH"
13601 (string-append #$output "/share/jupyter:"
13602 (getenv "JUPYTER_PATH")))
13603 ;; Step outside of the source directory to avoid having both
13604 ;; the installed package *and* the package from the source on
13606 (with-directory-excursion "/tmp"
13607 (invoke "pytest" "--pyargs" "nbconvert"
13608 "-vv" "-n" (number->string (parallel-job-count))
13611 ;; These tests require pyppeteer, not yet
13612 ;; available in Guix.
13613 "not test_webpdf_with_chromium "
13614 "and not test_webpdf.py "
13615 ;; These tests require ipywidgets, which would
13616 ;; introduce a dependency cycle.
13617 "and not test_execute_widgets_from_nbconvert "
13618 "and not test_execute_multiple_notebooks ")))))))))
13620 (list inkscape/stable pandoc))
13622 (list python-ipykernel
13623 ;; Adding ipywidgets would create a cycle.
13624 ;;python-ipywidgets
13625 ;;python-pyppeteer ;TODO: package me
13627 python-pytest-xdist))
13629 (list python-beautifulsoup4
13634 python-jupyter-core
13638 python-pandocfilters
13640 python-jupyterlab-pygments
13643 ;; Required, even if [serve] is not used.
13645 ;; Required at runtime for `jupyter nbconvert --to=pdf`.
13651 texlive-generic-iftex
13654 texlive-latex-fancyvrb
13655 texlive-latex-float
13656 texlive-latex-geometry
13657 texlive-latex-jknapltx
13659 texlive-latex-parskip
13660 texlive-latex-trimspaces
13661 texlive-latex-upquote
13667 texlive-unicode-math
13669 (texlive-updmap.cfg (list texlive-amsfonts
13679 texlive-zapfding))))
13680 (home-page "https://jupyter.org")
13681 (synopsis "Converting Jupyter Notebooks")
13682 (description "The @code{nbconvert} tool, @code{jupyter nbconvert}, converts
13683 notebooks to various other formats via Jinja templates. It allows you to
13684 convert an @code{.ipynb} notebook file into various static formats including:
13691 @item Markdown (md)
13692 @item ReStructured Text (rst)
13693 @item executable script
13695 (license license:bsd-3)))
13697 (define-public python-notebook
13699 (name "python-notebook")
13703 (uri (pypi-uri "notebook" version))
13706 "03p976xq1l9xf4djwk0snmywd0zck3i6gjngxsl874i8qrmsf214"))))
13707 (build-system python-build-system)
13710 (modify-phases %standard-phases
13711 (add-after 'unpack 'use-our-home-for-tests
13713 ;; The 'get_patch_env' function in this file reads:
13714 ;; 'HOME': cls.home_dir
13715 ;; but for some reason, that definition of HOME is not what the
13716 ;; GLib/GIO trash mechanism honors, which would cause test
13717 ;; failures. Instead, set 'HOME' here to an existing directory
13718 ;; and let the tests honor it.
13719 (substitute* "notebook/tests/launchnotebook.py"
13720 (("'HOME': .*," all)
13721 (string-append "# " all "\n")))
13722 (setenv "HOME" (getcwd))))
13724 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
13725 ;; These tests require a browser.
13726 (delete-file-recursively "notebook/tests/selenium")
13728 ;; Interferes with test expectations.
13729 (unsetenv "JUPYTER_CONFIG_PATH")
13730 ;; Some tests do not expect all files to be installed in the
13731 ;; same directory, but JUPYTER_PATH contains multiple entries.
13732 (unsetenv "JUPYTER_PATH")
13733 (invoke "pytest" "-vv"
13734 ;; TODO: This tests fails because nbconvert does not
13735 ;; list "python" as a format.
13736 "-k" "not test_list_formats")))))))
13738 (list python-argon2-cffi
13740 python-ipython-genutils
13742 python-jupyter-client
13743 python-jupyter-core
13744 python-nest-asyncio
13747 python-prometheus-client
13754 (list python-coverage
13759 python-requests-unixsocket))
13760 (home-page "https://jupyter.org/")
13761 (synopsis "Web-based notebook environment for interactive computing")
13763 "The Jupyter HTML notebook is a web-based notebook environment for
13764 interactive computing.")
13765 (license license:bsd-3)))
13767 (define-public python-widgetsnbextension
13769 (name "python-widgetsnbextension")
13774 (uri (pypi-uri "widgetsnbextension" version))
13777 "1ismyaxbv9d56yqqqb8xl58hg0iq0bbyy014a53y1g3hfbc8g7q7"))))
13778 (build-system python-build-system)
13780 (list python-notebook))
13781 (home-page "https://ipython.org")
13782 (synopsis "IPython HTML widgets for Jupyter")
13783 (description "This package provides interactive HTML widgets for Jupyter
13785 (license license:bsd-3)))
13787 (define-public python-ipywidgets
13789 (name "python-ipywidgets")
13794 (uri (pypi-uri "ipywidgets" version))
13797 "1w217j8i53x14l7b05fk300k222zs9vkcjaa1rbrw3sk43k466lz"))))
13798 (build-system python-build-system)
13800 (list python-ipykernel
13802 python-jupyterlab-widgets
13805 python-widgetsnbextension))
13807 (list python-mock python-pytest python-pytest-cov))
13808 (home-page "https://ipython.org")
13809 (synopsis "IPython HTML widgets for Jupyter")
13810 (description "Ipywidgets are interactive HTML widgets for Jupyter
13811 notebooks and the IPython kernel. Notebooks come alive when interactive
13812 widgets are used. Users gain control of their data and can visualize changes
13814 (license license:bsd-3)))
13816 (define-public python-jupyter-console
13818 (name "python-jupyter-console")
13823 (uri (pypi-uri "jupyter_console" version))
13826 "1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4"))))
13827 (build-system python-build-system)
13829 (list python-ipykernel python-jupyter-client python-prompt-toolkit
13832 (list python-nose python-pytest))
13833 (home-page "https://jupyter.org")
13834 (synopsis "Jupyter terminal console")
13835 (description "This package provides a terminal-based console frontend for
13836 Jupyter kernels. It also allows for console-based interaction with non-Python
13837 Jupyter kernels such as IJulia and IRKernel.")
13838 (license license:bsd-3)))
13840 ;; The python-ipython and python-jupyter-console require each other. To get
13841 ;; the functionality in both packages working, strip down the
13842 ;; python-jupyter-console package when using it as an input to python-ipython.
13843 (define python-jupyter-console-minimal
13844 (package/inherit python-jupyter-console
13845 (name "python-jupyter-console-minimal")
13847 (substitute-keyword-arguments
13848 (package-arguments python-jupyter-console)
13850 `(modify-phases ,phases
13851 (add-after 'install 'delete-bin
13852 (lambda* (#:key outputs #:allow-other-keys)
13853 ;; Delete the bin files, to avoid conflicts in profiles
13854 ;; where python-ipython and python-jupyter-console are
13856 (delete-file-recursively
13858 (assoc-ref outputs "out") "/bin"))))))))
13859 ;; Remove the python-ipython propagated input, to avoid the cycle
13861 (modify-inputs (package-propagated-inputs python-jupyter-console)
13862 (delete "python-ipython")))))
13864 (define-public python-qtconsole
13866 (name "python-qtconsole")
13871 (uri (pypi-uri "qtconsole" version))
13873 (base32 "09anp8g7vqi8z8wyi2lv21a2frd2dyhyrzvcrk2anijyqzyj0dcf"))))
13874 (build-system python-build-system)
13877 (modify-phases %standard-phases
13878 (add-before 'check 'pre-check
13880 (setenv "QT_QPA_PLATFORM" "offscreen")
13881 (setenv "HOME" "/tmp")
13882 ;; FIXME: skip a failing test.
13883 (substitute* "qtconsole/tests/test_jupyter_widget.py"
13884 (("def test_other_output") "def _test_other_output")))))))
13886 (list python-ipykernel python-ipython-genutils python-jupyter-client
13887 python-jupyter-core python-pygments python-pyqt python-pyzmq
13888 python-qtpy python-traitlets))
13890 (list python-flaky python-pytest python-pytest-qt))
13891 (home-page "https://jupyter.org")
13892 (synopsis "Jupyter Qt console")
13893 (description "This package provides a Qt-based console for Jupyter with
13894 support for rich media output.")
13895 (license license:bsd-3)))
13897 (define-public python-jsbeautifier
13899 (name "python-jsbeautifier")
13901 (home-page "https://github.com/beautify-web/js-beautify")
13904 (uri (git-reference
13906 (commit (string-append "v" version))))
13907 (file-name (git-file-name name version))
13910 "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg"))))
13911 (build-system python-build-system)
13913 `(#:phases (modify-phases %standard-phases
13914 (add-after 'unpack 'chdir
13916 ;; The upstream Git repository contains all the code,
13917 ;; but this package only builds the python code.
13920 (add-after 'unpack 'patch-python-six-requirements
13922 (substitute* "python/setup.py"
13927 (list python-editorconfig python-six))
13929 (list python-pytest))
13930 (synopsis "JavaScript unobfuscator and beautifier")
13931 (description "Beautify, unpack or deobfuscate JavaScript, leveraging
13932 popular online obfuscators.")
13933 (license license:expat)))
13935 (define-public jupyter
13942 (uri (pypi-uri "jupyter" version))
13945 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
13946 (build-system python-build-system)
13947 (arguments '(#:tests? #f)) ; there are none.
13949 (list python-ipykernel
13951 python-jupyter-console
13955 (home-page "https://jupyter.org")
13956 (synopsis "Web application for interactive documents")
13958 "The Jupyter Notebook is a web application that allows you to create and
13959 share documents that contain live code, equations, visualizations and
13960 explanatory text. Uses include: data cleaning and transformation, numerical
13961 simulation, statistical modeling, machine learning and much more.")
13962 (license license:bsd-3)))
13964 (define-public python-chardet
13966 (name "python-chardet")
13971 (uri (pypi-uri "chardet" version))
13974 "1amqmz8731ly6f9rkbk09w4jqgmmgyxykd1bawhgrdbqzlmxys03"))))
13976 (list python-pytest))
13977 (build-system python-build-system)
13980 #~(modify-phases %standard-phases
13983 (invoke "pytest" "-vv" "-k"
13984 ;; Disable test that fails sporadically:
13985 ;; https://github.com/chardet/chardet/issues/256
13986 "not test_detect_all_and_detect_one_should_agree")))
13987 ;; This package provides a 'chardetect' executable that only
13988 ;; depends on Python, so customize the wrap phase to avoid
13989 ;; adding pytest and friends in order to save size.
13990 ;; (See also <https://bugs.gnu.org/25235>.)
13992 (lambda* (#:key inputs outputs #:allow-other-keys)
13993 (let* ((sitedir (site-packages inputs outputs))
13994 (python (dirname (dirname
13996 inputs "bin/python"))))
13998 (string-append python "/lib/python"
13999 (python-version python)
14000 "/site-packages")))
14001 (wrap-program (string-append #$output "/bin/chardetect")
14002 `("GUIX_PYTHONPATH" ":" suffix
14003 ,(list sitedir python-sitedir)))))))))
14004 (home-page "https://github.com/chardet/chardet")
14005 (synopsis "Universal encoding detector for Python 2 and 3")
14007 "This package provides @code{chardet}, a Python module that can
14008 automatically detect a wide range of file encodings.")
14009 (license license:lgpl2.1+)))
14011 (define-public python-charset-normalizer
14013 (name "python-charset-normalizer")
14018 (uri (pypi-uri "charset-normalizer" version))
14020 (base32 "04zlajr77f6c7ai59l46as1idi0jjgbvj72lh4v5wfpz2s070pjp"))))
14021 (build-system python-build-system)
14024 #~(modify-phases %standard-phases
14025 ;; This package provides a 'normalizer' executable that only
14026 ;; depends on Python, so customize the wrap phase to avoid
14027 ;; adding pytest and friends in order to save size.
14028 ;; (See also <https://bugs.gnu.org/25235>.)
14030 (lambda* (#:key inputs outputs #:allow-other-keys)
14031 (let* ((sitedir (site-packages inputs outputs))
14032 (python (dirname (dirname
14034 inputs "bin/python"))))
14036 (string-append python "/lib/python"
14037 (python-version python)
14038 "/site-packages")))
14039 (wrap-program (string-append #$output "/bin/normalizer")
14040 `("GUIX_PYTHONPATH" ":" suffix
14041 ,(list sitedir python-sitedir)))))))))
14043 (list python-pytest))
14044 (home-page "https://github.com/ousret/charset_normalizer")
14045 (synopsis "Universal Charset Detector, alternative to Chardet")
14046 (description "This library helps you read text from an unknown charset
14047 encoding. Motivated by @code{chardet}, it tries to resolve the issue by
14048 taking a new approach. All IANA character set names for which the Python core
14049 library provides codecs are supported.")
14050 (license license:expat)))
14052 (define-public python-docopt
14054 (name "python-docopt")
14059 ;; The release on PyPI does not include tests.
14060 (uri (git-reference
14061 (url "https://github.com/docopt/docopt")
14063 (file-name (git-file-name name version))
14066 "0aad9gbswnnhssin2q0m5lmpm0ahyf80ahs2zjigbn5y7fvljnd0"))
14067 (patches (search-patches "python-docopt-pytest6-compat.patch"))))
14068 (build-system python-build-system)
14070 (list python-pytest))
14073 (modify-phases %standard-phases
14075 (lambda* (#:key tests? #:allow-other-keys)
14077 (invoke "py.test")))))))
14078 (home-page "http://docopt.org")
14079 (synopsis "Command-line interface description language for Python")
14080 (description "This library allows the user to define a command-line
14081 interface from a program's help message rather than specifying it
14082 programmatically with command-line parsers like @code{getopt} and
14084 (license license:expat)))
14086 (define-public python-pythonanywhere
14088 (name "python-pythonanywhere")
14093 (uri (git-reference
14094 (url "https://github.com/pythonanywhere/helper_scripts")
14095 (commit (string-append "v" version))))
14096 (file-name (git-file-name name version))
14099 "0vzzc1g8pl7cb9yvm3n1j5zlzxf0jd423rzspc2kvpb8yhvydklx"))))
14100 (build-system python-build-system)
14103 (modify-phases %standard-phases
14104 (add-before 'check 'change-home
14106 (setenv "HOME" "/tmp")))
14108 (lambda* (#:key tests? #:allow-other-keys)
14110 ;; Exclude tests marked as slowtest that assume running
14111 ;; inside Git repository on system with virtualenvwrapper
14113 (invoke "pytest" "-m" "not slowtest")))))))
14115 (list python-pytest
14118 python-pytest-mock))
14120 (list python-dateutil
14127 (home-page "https://github.com/pythonanywhere/helper_scripts/")
14128 (synopsis "PythonAnywhere helper tools for users")
14129 (description "PythonAnywhere provides a command-line interface and an
14130 application programming interface that allows managing Web apps and scheduled
14131 tasks. It includes single-command deployment for the Django Girls tutorial.")
14132 (license license:expat)))
14134 (define-public python-pythondialog
14136 (name "python-pythondialog")
14140 (uri (pypi-uri "pythondialog" version))
14143 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
14144 (build-system python-build-system)
14146 `(#:phases (modify-phases %standard-phases
14147 (add-after 'unpack 'patch-path
14148 (lambda* (#:key inputs #:allow-other-keys)
14149 (let* ((dialog (assoc-ref inputs "dialog")))
14150 (substitute* "dialog.py"
14151 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)") (string-append
14152 "os.getenv(\"PATH\") + \":"
14157 (propagated-inputs (list dialog))
14158 (home-page "http://pythondialog.sourceforge.net/")
14159 (synopsis "Python interface to the UNIX dialog utility")
14161 "A Python wrapper for the dialog utility. Its purpose is to
14162 provide an easy to use, pythonic and comprehensive Python interface to dialog.
14163 This allows one to make simple text-mode user interfaces on Unix-like systems")
14164 (license license:lgpl2.1)))
14166 (define-public python-configobj
14168 (name "python-configobj")
14172 (uri (pypi-uri "configobj" version))
14175 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
14176 ;; Patch setup.py so it looks for python-setuptools, which is
14177 ;; required to parse the keyword 'install_requires' in setup.py.
14178 (patches (search-patches "python-configobj-setuptools.patch"))))
14179 (build-system python-build-system)
14182 (synopsis "Config file reading, writing and validation")
14183 (description "ConfigObj is a simple but powerful config file reader and
14184 writer: an ini file round tripper. Its main feature is that it is very easy to
14185 use, with a straightforward programmer’s interface and a simple syntax for
14187 (home-page "https://github.com/DiffSK/configobj")
14188 (license license:bsd-3)))
14190 (define-public python-configargparse
14192 (name "python-configargparse")
14196 (uri (pypi-uri "ConfigArgParse" version))
14199 "1p1pzpf5qpf80bfxsx1mbw9blyhhypjvhl3i60pbmhfmhvlpplgd"))))
14200 (build-system python-build-system)
14202 (list python-pyyaml))
14205 (modify-phases %standard-phases
14208 ;; Bypass setuptools-shim because one test relies on "setup.py"
14209 ;; being the first argument passed to the python call.
14211 ;; NOTE: Many tests do not run because they rely on Python's
14212 ;; built-in test.test_argparse, but we remove the unit tests from
14213 ;; our Python installation.
14214 (invoke "python" "setup.py" "test"))))))
14215 (synopsis "Replacement for argparse")
14216 (description "A drop-in replacement for argparse that allows options to also
14217 be set via config files and/or environment variables.")
14218 (home-page "https://github.com/bw2/ConfigArgParse")
14219 (license license:expat)))
14221 (define-public python-connection-pool
14223 (name "python-connection-pool")
14228 (uri (pypi-uri "connection_pool" version))
14230 (base32 "1p6hfkcl4n3hhhcgjbaxn21i7b1yipag6j7dnilir4k5xxx9whmz"))))
14231 (build-system python-build-system)
14232 (home-page "https://github.com/zhouyl/ConnectionPool")
14233 (synopsis "Thread-safe connection pool")
14234 (description "This package provides a library implementing a thread-safe
14236 (license license:expat)))
14238 (define-public python-argparse-manpage
14240 (name "python-argparse-manpage")
14245 (uri (pypi-uri "argparse-manpage" version))
14248 "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p"))))
14249 (build-system python-build-system)
14250 (home-page "https://github.com/praiskup/argparse-manpage")
14251 (synopsis "Build manual page from Python's ArgumentParser object")
14253 "This package provides tools to build manual pages from Python's
14254 @code{ArgumentParser} object.")
14255 (license license:asl2.0)))
14257 (define-public python-contextlib2
14259 (name "python-contextlib2")
14260 (version "0.6.0.post1")
14264 (uri (pypi-uri "contextlib2" version))
14267 "0bhnr2ac7wy5l85ji909gyljyk85n92w8pdvslmrvc8qih4r1x01"))))
14268 (build-system python-build-system)
14269 (home-page "https://contextlib2.readthedocs.org/")
14270 (synopsis "Tools for decorators and context managers")
14271 (description "This module is primarily a backport of the Python
14272 3.2 contextlib to earlier Python versions. Like contextlib, it
14273 provides utilities for common tasks involving decorators and context
14274 managers. It also contains additional features that are not part of
14275 the standard library.")
14276 (license license:psfl)))
14278 (define-public python-texttable
14280 (name "python-texttable")
14285 (uri (pypi-uri "texttable" version))
14288 "1sbn821394rix6xgj3zqk743pj6nqm1qz81zgis2bcpp2ng7pvj2"))))
14289 (build-system python-build-system)
14292 (modify-phases %standard-phases
14294 (lambda* (#:key tests? #:allow-other-keys)
14295 (when tests? (invoke "pytest" "-vv" "tests.py")))))))
14297 (list python-pytest))
14298 (home-page "https://github.com/foutaise/texttable/")
14299 (synopsis "Python module for creating simple ASCII tables")
14300 (description "Texttable is a Python module for creating simple ASCII
14302 (license license:expat)))
14304 (define-public python-atomicwrites
14306 (name "python-atomicwrites")
14310 (uri (pypi-uri "atomicwrites" version))
14313 "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))
14314 (build-system python-build-system)
14315 (arguments `(#:tests? #f)) ;avoid circular dependency with pytest
14316 (synopsis "Atomic file writes in Python")
14317 (description "Library for atomic file writes using platform dependent tools
14318 for atomic file system operations.")
14319 (home-page "https://github.com/untitaker/python-atomicwrites")
14320 (license license:expat)))
14322 (define-public python-qstylizer
14324 (name "python-qstylizer")
14329 (uri (git-reference
14330 (url "https://github.com/blambright/qstylizer")
14332 (file-name (git-file-name name version))
14334 (base32 "0zvkn6g1dn51kkw33v8qrlnwlmf5h6sw1ay3bh14ifjr8b9xsjjz"))))
14335 (build-system python-build-system)
14337 `(#:test-target "pytest"
14339 (modify-phases %standard-phases
14340 (add-before 'build 'set-pbr-version
14342 (setenv "PBR_VERSION" "3.0.1"))))))
14346 python-pytest-catchlog
14349 python-pytest-runner
14350 python-pytest-xdist))
14352 (list python-inflection python-tinycss))
14353 (home-page "https://github.com/blambright/qstylizer")
14354 (synopsis "Qt stylesheet generation utility for PyQt/PySide")
14355 (description "@code{qstylizer} is a Python package designed to help with
14356 the construction of PyQt/PySide stylesheets.")
14357 (license license:expat)))
14359 (define-public python-click-threading
14361 (name "python-click-threading")
14365 (uri (pypi-uri "click-threading" version))
14368 "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd"))))
14369 (build-system python-build-system)
14371 (list python-click))
14372 (synopsis "Utilities for multithreading in Click")
14373 (description "This package provides utilities for multithreading in Click
14375 (home-page "https://github.com/click-contrib/click-threading")
14376 (license license:expat)))
14378 (define-public python-click-log
14380 (name "python-click-log")
14384 (uri (pypi-uri "click-log" version))
14387 "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n"))))
14388 (build-system python-build-system)
14390 (list python-click))
14391 (synopsis "Logging for click applications")
14392 (description "This package provides a Python library for logging Click
14394 (home-page "https://github.com/click-contrib/click-log")
14395 (license license:expat)))
14397 (define-public python-click-default-group
14399 (name "python-click-default-group")
14403 (uri (pypi-uri "click-default-group" version))
14406 "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr"))))
14407 (build-system python-build-system)
14409 `(#:tests? #f)) ; no target
14411 (list python-click))
14412 (synopsis "Extends click.Group")
14413 (description "This package extends click.Group to invoke a command without
14414 explicit subcommand name.")
14415 (home-page "https://github.com/click-contrib/click-default-group")
14416 (license license:bsd-3)))
14418 (define-public python-structlog
14420 (name "python-structlog")
14425 (uri (pypi-uri "structlog" version))
14428 "0x1i21vn3xjfa3j9ijbblia5z0jlzc9aqvpqc26sy16i8yjxyydg"))))
14429 (build-system python-build-system)
14432 (modify-phases %standard-phases
14434 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
14436 (add-installed-pythonpath inputs outputs)
14440 (list python-coverage
14444 python-pytest-asyncio
14447 (home-page "https://www.structlog.org/")
14448 (synopsis "Structured Logging for Python")
14449 (description "@code{structlog} changes logging in Python by adding structure
14450 to your log entries.")
14451 (license (list license:asl2.0 license:expat))))
14453 (define-public python-apipkg
14455 (name "python-apipkg")
14459 (uri (pypi-uri "apipkg" version))
14462 "1xhak74yj3lqflvpijg15rnkklrigvsp5q7s4as4h6a157d8q8ip"))))
14463 (build-system python-build-system)
14465 (list python-pytest python-setuptools-scm))
14466 (synopsis "Namespace control and lazy-import mechanism")
14467 (description "With apipkg you can control the exported namespace of a Python
14468 package and greatly reduce the number of imports for your users. It is a small
14469 pure Python module that works on virtually all Python versions.")
14470 (home-page "https://github.com/pytest-dev/apipkg")
14471 (license license:expat)))
14473 (define-public python-execnet
14475 (name "python-execnet")
14479 (uri (pypi-uri "execnet" version))
14482 "1ia7dvrh0gvzzpi758mx55f9flr16bzdqlmi12swm4ncm4xlyscg"))
14483 (patches (search-patches "python-execnet-read-only-fix.patch"))))
14484 (build-system python-build-system)
14487 (modify-phases %standard-phases
14489 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
14491 ;; Unset PYTHONDONTWRITEBYTECODE to match the
14492 ;; expectations of a test in
14493 ;; 'testing/test_gateway.py'.
14494 (unsetenv "PYTHONDONTWRITEBYTECODE")
14496 (add-installed-pythonpath inputs outputs)
14497 (invoke "pytest" "-vv")))))))
14499 (list python-pytest python-setuptools-scm))
14500 (synopsis "Rapid multi-Python deployment")
14501 (description "Execnet provides a share-nothing model with
14502 channel-send/receive communication for distributing execution across many
14503 Python interpreters across version, platform and network barriers. It has a
14504 minimal and fast API targeting the following uses:
14506 @item distribute tasks to (many) local or remote CPUs
14507 @item write and deploy hybrid multi-process applications
14508 @item write scripts to administer multiple environments
14510 (home-page "https://codespeak.net/execnet/")
14511 (license license:expat)))
14513 (define-public python-icalendar
14515 (name "python-icalendar")
14519 (uri (pypi-uri "icalendar" version))
14522 "15dkq42rkqjdi17rpvmd1plnbwn4daby0nk1s1c3xi7w5v0bfj4p"))))
14523 (build-system python-build-system)
14525 (list python-dateutil python-pytz))
14526 (synopsis "Python library for parsing iCalendar files")
14527 (description "The icalendar package is a parser/generator of iCalendar
14528 files for use with Python.")
14529 (home-page "https://github.com/collective/icalendar")
14530 (license license:bsd-2)))
14532 (define-public python-args
14533 (let ((commit "9460f1a35eb3055e9e4de1f0a6932e0883c72d65") (revision "0"))
14535 (name "python-args")
14536 (version (git-version "0.1.0" revision commit))
14537 (home-page "https://github.com/kennethreitz-archive/args")
14540 (uri (git-reference
14543 (file-name (git-file-name name version))
14546 "1zfxpbp9vldqdrjmd0c6y3wisl35mx5v8zlyp3nhwpy1730wrc9j"))))
14547 (build-system python-build-system)
14549 `(#:phases (modify-phases %standard-phases
14550 (add-after 'unpack 'patch-args.py
14552 (substitute* "args.py"
14553 (("basestring") "str"))))
14555 (lambda* (#:key tests? #:allow-other-keys)
14557 (invoke "nosetests" "-v")))))))
14558 (native-inputs (list python-nose))
14559 (synopsis "Command-line argument parser")
14561 "This library provides a Python module to parse command-line arguments.")
14562 (license license:bsd-3))))
14564 (define-public python-clint
14566 (name "python-clint")
14570 (uri (pypi-uri "clint" version))
14573 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
14574 (build-system python-build-system)
14577 (modify-phases %standard-phases
14579 (lambda _ (invoke "py.test" "-v"))))))
14581 (list python-pytest))
14583 (list python-args))
14584 (home-page "https://github.com/kennethreitz/clint")
14585 (synopsis "Command-line interface tools")
14587 "Clint is a Python module filled with a set of tools for developing
14588 command-line applications, including tools for colored and indented
14589 output, progress bar display, and pipes.")
14590 (license license:isc)))
14592 (define-public python-rply
14594 (name "python-rply")
14598 (uri (pypi-uri "rply" version))
14601 "1j81nddvnb145x4p81bnfpyai6g26i2dc1633ycsk025bb18m01a"))))
14602 (build-system python-build-system)
14604 (list python-appdirs))
14605 (home-page "https://github.com/alex/rply")
14606 (synopsis "Parser generator for Python")
14608 "This package provides a pure Python based parser generator, that also
14609 works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
14610 with a new public API, and RPython support.")
14611 (license license:bsd-3)))
14613 (define-public python-hy
14619 (method git-fetch) ; no tests in PyPI release
14620 (uri (git-reference
14621 (url "https://github.com/hylang/hy")
14623 (file-name (git-file-name name version))
14625 (base32 "1g7djra9z7b0wyqyfrk2n4z3zamp2xkahv00jwdv35xmwwn09hq4"))))
14626 (build-system python-build-system)
14629 (modify-phases %standard-phases
14631 (lambda* (#:key tests? #:allow-other-keys)
14633 (invoke "python" "-m" "pytest" "-k"
14634 (string-append ; skip some failed tests
14635 "not test_bin_hy_sys_executable"
14636 " and not test_bin_hy_circular_macro_require"
14637 " and not test_macro_from_module"))))))))
14639 (list python-pytest))
14641 (list python-astor python-colorama python-funcparserlib python-rply))
14642 (home-page "https://docs.hylang.org/en/stable/")
14643 (synopsis "Lisp frontend to Python")
14645 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
14646 its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
14647 Python at your fingertips, in Lisp form.")
14648 (license license:expat)))
14650 (define-public python-hissp
14652 (name "python-hissp")
14657 (uri (pypi-uri "hissp" version))
14660 "0yns7f0q699zn2ziagyas2nkndl7mp1hhssv9x9mpl7jxj2p5myw"))))
14661 (build-system python-build-system)
14662 (home-page "https://github.com/gilch/hissp")
14663 (synopsis "It's Python with a Lissp")
14664 (description "Hissp is a modular Lisp implementation that compiles to a
14665 functional subset of Python—Syntactic macro metaprogramming with full access
14666 to the Python ecosystem.")
14667 (license license:asl2.0)))
14669 (define-public python-promise
14671 (name "python-promise")
14676 (uri (pypi-uri "promise" version))
14679 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
14680 (build-system python-build-system)
14681 ;; Tests wants python-futures, which is a python2 only program, and
14682 ;; can't be found by python-promise at test time.
14683 (arguments `(#:tests? #f))
14684 (home-page "https://github.com/syrusakbary/promise")
14685 (synopsis "Promises/A+ implementation for Python")
14687 "Promises/A+ implementation for Python")
14688 (license license:expat)))
14690 (define-public python-progress
14692 (name "python-progress")
14697 (uri (pypi-uri "progress" version))
14699 (base32 "1k9lpb7lqr6mywpnqcz71y6qny54xlgprdp327za2gy0nnc6xj69"))))
14700 (build-system python-build-system)
14701 (home-page "http://github.com/verigak/progress/")
14702 (synopsis "Progress reporting bars for Python")
14703 (description "This Python package provides progress reporting for visual
14704 of progress of long running operations. There are multiple choices of
14705 progress bars and spinners, with customizable options, such as width, fill
14706 character, and suffix.")
14707 (license license:isc)))
14709 (define-public python-progressbar2
14711 (name "python-progressbar2")
14716 (uri (pypi-uri "progressbar2" version))
14719 "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc"))))
14720 (build-system python-build-system)
14722 (list python-six python-utils))
14724 (list python-flake8
14728 python-pytest-cache
14730 python-pytest-flakes
14733 (home-page "https://github.com/WoLpH/python-progressbar")
14734 (synopsis "Text progress bar library for Python")
14736 "This package provides a Python progressbar library to provide
14737 visual (yet text based) progress to long running operations.")
14738 (license license:bsd-3)))
14740 (define-public python-progressbar33
14742 (name "python-progressbar33")
14747 (uri (pypi-uri "progressbar33" version))
14750 "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
14751 (build-system python-build-system)
14752 (home-page "https://github.com/germangh/python-progressbar")
14753 (synopsis "Text progress bar library for Python")
14755 "This package provides a text progress bar library for Python. This
14756 version only differs from the original @code{progressbar} package in that it
14757 uses relative package imports instead of absolute imports, which is necessary
14758 for the module to work under Python 3.3.")
14759 ;; Either or both of these licenses may be selected.
14760 (license (list license:lgpl2.1+ license:bsd-3))))
14762 (define-public python-colorama
14764 (name "python-colorama")
14769 (uri (pypi-uri "colorama" version))
14771 (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har"))))
14772 (build-system python-build-system)
14773 (synopsis "Colored terminal text rendering for Python")
14774 (description "Colorama is a Python library for rendering colored terminal
14776 (home-page "https://pypi.org/project/colorama/")
14777 (license license:bsd-3)))
14779 ;; awscli and botocore do not accept version 0.4.4
14780 (define-public python-colorama-for-awscli
14782 (inherit python-colorama)
14787 (uri (pypi-uri "colorama" version))
14789 (base32 "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9"))))))
14791 (define-public python-moto
14793 (name "python-moto")
14797 (uri (pypi-uri "moto" version))
14799 (base32 "0dfnad1f9d5ybabs69dzc7x357z1r4jbhrhgw57gyic1qnmcw864"))))
14800 (build-system python-build-system)
14803 (modify-phases %standard-phases
14804 (add-after 'unpack 'patch-hardcoded-executable-names
14805 (lambda* (#:key inputs #:allow-other-keys)
14806 (let ((bash-exec (search-input-file inputs "/bin/sh")))
14807 (substitute* "moto/batch/models.py"
14808 (("/bin/sh") bash-exec))
14809 (substitute* (find-files "tests" "\\.py$")
14810 (("#!/bin/bash") (string-append "#!" bash-exec))))))
14812 (lambda* (#:key tests? #:allow-other-keys)
14814 (invoke "pytest" "-vv" "-m" "not network" "-k"
14816 ;; XXX: This test is timing sensitive and may
14817 ;; fail non-deterministically.
14818 "not test_cancel_pending_job"
14819 ;; These tests require Docker.
14820 " and not test_terminate_job"
14821 " and not test_invoke_function_from_sqs_exception"
14822 " and not test_create_custom_lambda_resource__verify_cfnresponse_failed"
14823 " and not test_lambda_function"
14825 ;; These tests also require the network.
14826 " and not test_put_record_batch_http_destination"
14827 " and not test_put_record_http_destination"
14828 " and not test_dependencies"
14829 " and not test_cancel_running_job"
14830 " and not test_container_overrides"))))))))
14835 python-graphql-core
14839 (list bash-minimal))
14841 (list python-aws-xray-sdk
14845 python-cryptography
14848 python-importlib-metadata
14860 (home-page "https://github.com/spulec/moto")
14861 (synopsis "Mock out the boto library")
14863 "@code{moto} is a library designed to easily mock out the
14864 @code{boto} library.")
14865 (license license:asl2.0)))
14867 (define-public python-rsa
14869 (name "python-rsa")
14874 (uri (pypi-uri "rsa" version))
14877 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
14878 (build-system python-build-system)
14880 (list python-pyasn1))
14881 (synopsis "Pure-Python RSA implementation")
14882 (description "Python-RSA is a pure-Python RSA implementation. It supports
14883 encryption and decryption, signing and verifying signatures, and key
14884 generation according to PKCS#1 version 1.5. It can be used as a Python
14885 library as well as on the command line.")
14886 (home-page "https://stuvel.eu/rsa")
14887 (license license:asl2.0)))
14889 (define-public python-pluggy
14891 (name "python-pluggy")
14896 (uri (pypi-uri "pluggy" version))
14899 "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm"))))
14900 (build-system python-build-system)
14902 (list python-setuptools-scm))
14903 (synopsis "Plugin and hook calling mechanism for Python")
14904 (description "Pluggy is an extraction of the plugin manager as used by
14905 Pytest but stripped of Pytest specific details.")
14906 (home-page "https://pypi.org/project/pluggy/")
14907 (license license:expat)))
14909 (define-public python-plumbum
14911 (name "python-plumbum")
14916 (uri (pypi-uri "plumbum" version))
14918 (base32 "1kidj821k79dw064rlxh84xamb9h79ychg3pgj81jlvm5hs48xri"))))
14919 (build-system python-build-system)
14921 `(#:tests? #f)) ;no tests
14923 ;; XXX: Not actually used since there are no tests but required for
14925 (list python-pytest))
14926 (home-page "https://plumbum.readthedocs.io")
14927 (synopsis "Python shell combinators library")
14929 "Plumbum is a library of tools for replacing shell scripts with Python
14931 (license license:expat)))
14933 (define-public python-deprecation
14935 (name "python-deprecation")
14940 (uri (pypi-uri "deprecation" version))
14943 "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj"))))
14944 (build-system python-build-system)
14946 (list python-packaging))
14948 (list python-unittest2))
14949 (home-page "https://deprecation.readthedocs.io/")
14950 (synopsis "Python library to handle automated deprecations")
14952 "This is a library that enables automated deprecations. It offers the
14953 @code{deprecated()} decorator to wrap functions, providing proper warnings
14954 both in documentation and via Python’s warnings system, as well as the
14955 @code{deprecation.fail_if_not_removed()} decorator for test methods to ensure
14956 that deprecated code is eventually removed.")
14957 (license license:asl2.0)))
14959 (define-public python-jmespath
14961 (name "python-jmespath")
14966 (uri (pypi-uri "jmespath" version))
14969 "0pmzfi230zfgiq2rz896kbb9f7mp0lnrjdl6x1npvxfixn0f5454"))))
14970 (build-system python-build-system)
14972 (list python-nose))
14973 (synopsis "JSON Matching Expressions")
14974 (description "JMESPath (pronounced “james path”) is a Python library that
14975 allows one to declaratively specify how to extract elements from a JSON
14977 (home-page "https://github.com/jmespath/jmespath.py")
14978 (license license:expat)))
14980 (define-public python-symengine
14982 (name "python-symengine")
14987 (uri (pypi-uri "symengine" version))
14989 (base32 "0qjgdbnb10kfk7jdhxnzfl8cpaps81k8vap7gm7q9ym3pgslazhg"))))
14990 (build-system python-build-system)
14994 #~(modify-phases %standard-phases
14996 (lambda* (#:key tests? #:allow-other-keys)
14998 ;; Run tests against installed package.
14999 (with-directory-excursion "/tmp"
15000 (invoke "nosetests" "-v" "symengine.tests"))
15001 (format #t "test suite not run~%")))))))
15003 (list cmake python-cython python-nose))
15006 (home-page "https://github.com/symengine/symengine.py")
15007 (synopsis "Python library providing wrappers to SymEngine")
15009 "This library provides a Python wrapper to SymEngine, a fast C++ symbolic
15010 manipulation library.")
15011 (license license:expat)))
15013 (define-public python-uncertainties
15015 (name "python-uncertainties")
15020 (uri (pypi-uri "uncertainties" version))
15023 "00z9xl40czmqk0vmxjvmjvwb41r893l4dad7nj1nh6blw3kw28li"))))
15024 (build-system python-build-system)
15025 ;; While there are test files, there is no "tests" directory, so the tests
15027 (arguments '(#:tests? #false))
15029 (list python-future))
15031 (list python-nose python-numpy))
15032 (home-page "https://uncertainties-python-package.readthedocs.io/")
15033 (synopsis "Calculations with uncertainties")
15035 "The uncertainties package transparently handles calculations with
15036 numbers with uncertainties. It can also yield the derivatives of any
15038 (license license:bsd-3)))
15040 (define-public python-unicodedata2
15042 (name "python-unicodedata2")
15047 (uri (pypi-uri "unicodedata2" version))
15049 (base32 "110nnvh02ssp92xbmswy39aa186jrmb7m41x4220wigl8c0dzxs1"))))
15050 (build-system python-build-system)
15051 (home-page "https://github.com/fonttools/unicodedata2")
15052 (synopsis "Python unicodedata backport")
15053 (description "This package corresponds to the latest @code{unicodedata}
15054 standard Python module.")
15055 (license license:asl2.0)))
15057 (define-public python-asteval
15059 (name "python-asteval")
15064 (uri (pypi-uri "asteval" version))
15067 "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm"))))
15068 (build-system python-build-system)
15070 (list python-pytest))
15071 (home-page "https://github.com/newville/asteval")
15072 (synopsis "Minimalistic evaluator of Python expressions")
15074 "This package provides a minimalistic evaluator of Python expression
15075 using the @code{ast} module")
15076 (license license:expat)))
15078 (define-public python-lmfit
15080 (name "python-lmfit")
15085 (uri (pypi-uri "lmfit" version))
15088 "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7"))))
15089 (build-system python-build-system)
15091 (list python-asteval python-numpy python-scipy python-uncertainties))
15093 (list python-pytest))
15094 (home-page "https://lmfit.github.io/lmfit-py/")
15095 (synopsis "Least-Squares minimization with bounds and constraints")
15097 "Lmfit provides a high-level interface to non-linear optimization and
15098 curve fitting problems for Python. It builds on and extends many of the
15099 optimization methods of @code{scipy.optimize}. Initially inspired by (and
15100 named for) extending the Levenberg-Marquardt method from
15101 @code{scipy.optimize.leastsq}, lmfit now provides a number of useful
15102 enhancements to optimization and data fitting problems.")
15103 (license license:bsd-3)))
15105 (define-public python-bokeh
15107 (name "python-bokeh")
15111 (uri (pypi-uri "bokeh" version))
15114 "00sbhya9vfdv3yi07j6mxwx1x1h9497nhd3smdjrcdxgc48q0czg"))))
15115 (build-system python-build-system)
15118 (modify-phases %standard-phases
15120 (lambda* (#:key tests? #:allow-other-keys)
15122 ;; These require selenium.
15123 (delete-file "tests/unit/bokeh/io/test_export.py")
15124 (delete-file "tests/unit/bokeh/io/test_webdriver.py")
15125 (delete-file "tests/unit/bokeh/embed/test_standalone.py")
15127 ;; Doesn't find ManagedServerLoop fixture
15128 (delete-file "tests/unit/bokeh/test_client_server.py")
15130 ;; This fails because of the Guix wrapper around pytest
15131 (delete-file "tests/unit/bokeh/io/test_util__io.py")
15133 ;; Fixture ipython not found.
15134 (delete-file "tests/unit/bokeh/application/handlers/test_notebook__handlers.py")
15135 (delete-file "tests/unit/bokeh/command/subcommands/test_info.py")
15137 ;; pd fixture not found.
15138 (delete-file "tests/unit/bokeh/models/test_mappers.py")
15139 (delete-file "tests/unit/bokeh/models/util/test_structure.py")
15140 (delete-file "tests/unit/bokeh/plotting/test__plot.py")
15141 (delete-file "tests/unit/bokeh/plotting/test__graph.py")
15142 (delete-file "tests/unit/bokeh/plotting/test_figure.py")
15143 (delete-file "tests/unit/bokeh/core/test_json_encoder.py")
15144 (delete-file "tests/unit/bokeh/core/property/test_bases.py")
15145 (delete-file "tests/unit/bokeh/core/property/test_container.py")
15146 (delete-file "tests/unit/bokeh/core/property/test_dataspec.py")
15147 (delete-file "tests/unit/bokeh/core/property/test_datetime.py")
15148 (delete-file "tests/unit/bokeh/core/property/test_pandas.py")
15150 ;; nx fixture not found.
15151 (delete-file "tests/unit/bokeh/plotting/test_graph.py")
15152 (delete-file "tests/unit/bokeh/models/test_graphs.py")
15153 (delete-file "tests/unit/bokeh/io/test_showing.py")
15154 (delete-file "tests/unit/bokeh/document/test_events__document.py")
15156 ;; These tests need external sample data
15157 (delete-file-recursively "tests/unit/bokeh/sampledata/")
15159 ;; Attempts to install something via npm.
15160 (delete-file "tests/unit/bokeh/test_ext.py")
15162 ;; More failures due to set up problems.
15163 (delete-file "tests/unit/bokeh/server/test_server__server.py")
15164 (delete-file "tests/unit/bokeh/server/test_tornado__server.py")
15165 (delete-file "tests/unit/bokeh/util/test_serialization.py")
15166 (delete-file "tests/unit/bokeh/util/test_hex.py")
15167 (delete-file "tests/unit/bokeh/models/test_sources.py")
15168 (delete-file "tests/unit/bokeh/embed/test_bundle.py")
15170 (invoke "pytest" "-v")))))))
15179 python-typing-extensions))
15181 (list python-beautifulsoup4
15189 (home-page "https://github.com/bokeh/bokeh")
15190 (synopsis "Interactive plots and applications in the browser from Python")
15192 "This package provides tools for interactive plots and applications in the
15193 browser from Python.")
15194 (license license:bsd-3)))
15196 (define-public python-boto
15198 (name "python-boto")
15202 (uri (pypi-uri "boto" version))
15205 "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga"))))
15206 (build-system python-build-system)
15208 ;; XXX: This package is unmaintained and has problems with newer versions
15209 ;; of Python 3 as well as test libraries. 'python-moto' still uses a
15210 ;; subset of this library, so keep it around for now, but disable tests.
15213 (list python-paramiko python-requests))
15214 (home-page "https://github.com/boto/boto")
15215 (synopsis "Python interfaces for Amazon Web Services")
15217 "This package provides various facilities for interacting with Amazon
15218 Web Services through Python.
15220 This software is unmaintained, and new projects should use @code{boto3} instead.")
15221 (license license:expat)))
15223 (define-public python-botocore
15224 ;; Note: When updating botocore, also make sure that boto3 and awscli
15227 (name "python-botocore")
15228 (version "1.24.35")
15232 (uri (pypi-uri "botocore" version))
15235 "0rv8mvhq5s373zdjs2yb45hzvqcqdh2lp2rbb21jjc8ciwnl5d9n"))))
15236 (build-system python-build-system)
15238 ;; FIXME: Many tests are failing.
15241 (list python-dateutil python-jmespath python-urllib3))
15242 (home-page "https://github.com/boto/botocore")
15243 (synopsis "Low-level interface to AWS")
15244 (description "Botocore is a Python library that provides a low-level
15245 interface to the Amazon Web Services (AWS) API.")
15246 (license license:asl2.0)))
15248 (define-public python-boto3
15250 (name "python-boto3")
15251 (version "1.21.35")
15252 (home-page "https://github.com/boto/boto3")
15255 (uri (git-reference (url home-page) (commit version)))
15256 (file-name (git-file-name name version))
15259 "1kdyf238rpfldnpzs0rdh3nhjn6hwfym4faskyhzlgzkf1smmbg1"))))
15262 (modify-phases %standard-phases
15263 (add-after 'unpack 'delete-network-tests
15264 ;; Deleting integration tests because they are trying to connect to AWS.
15266 (delete-file-recursively "tests/integration")))
15268 (lambda* (#:key tests? #:allow-other-keys)
15270 (invoke "pytest" "-v")))))))
15271 (build-system python-build-system)
15273 (list python-nose python-mock python-pytest))
15275 (list python-botocore python-jmespath python-s3transfer))
15276 (synopsis "AWS SDK for Python")
15278 "Boto3 is a Python library for writing programs that interact with
15279 @acronym{AWS,Amazon Web Services}.")
15280 (license license:asl2.0)))
15282 (define-public python-pyfiglet
15284 (name "python-pyfiglet")
15285 (version "0.8.post1")
15289 (uri (pypi-uri "pyfiglet" version))
15292 "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6"))))
15293 (build-system python-build-system)
15294 (home-page "https://github.com/pwaller/pyfiglet")
15295 (synopsis "Draw ASCII art big letters in Python")
15296 (description "This module lets you draw large letter from ordinary characters
15298 (license license:expat)))
15300 (define-public python-xdo
15302 (name "python-xdo")
15306 (uri (string-append
15307 "http://http.debian.net/debian/pool/main/p/python-xdo/"
15308 "python-xdo_" version ".orig.tar.gz"))
15311 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
15312 (build-system python-build-system)
15315 (modify-phases %standard-phases
15316 (add-before 'install 'patch-libxdo-path
15317 ;; Hardcode the path of dynamically loaded libxdo library.
15318 (lambda* (#:key inputs #:allow-other-keys)
15319 (let ((libxdo (string-append
15320 (assoc-ref inputs "xdotool")
15322 (libc (string-append
15323 (assoc-ref inputs "libc")
15324 "/lib/libc.so.6")))
15325 (substitute* "xdo/_xdo.py"
15326 (("find_library\\(\"xdo\"\\)")
15327 (simple-format #f "\"~a\"" libxdo))
15328 (("ctypes\\.util\\.find_library\\('libc'\\)")
15329 (simple-format #f "\"~a\"" libc)))
15331 #:tests? #f)) ; no tests provided
15335 `(("xdotool" ,xdotool)
15336 ("libX11" ,libx11)))
15337 (home-page "https://tracker.debian.org/pkg/python-xdo")
15338 (synopsis "Python library for simulating X11 keyboard/mouse input")
15339 (description "Provides bindings to libxdo for manipulating X11 via simulated
15340 input. (Note that this is mostly a legacy library; you may wish to look at
15341 python-xdo for newer bindings.)")
15342 (license license:bsd-3)))
15344 (define-public python-xdoctest
15346 (name "python-xdoctest")
15351 (uri (pypi-uri "xdoctest" version))
15353 (base32 "0bgbmb9nqv95f9gfxqifqff1qaz5fnanjqy4hv7ygrjp2kksgfvy"))))
15354 (build-system python-build-system)
15357 #~(modify-phases %standard-phases
15359 (lambda* (#:key tests? #:allow-other-keys)
15361 ;; A writable HOME is needed by the
15362 ;; 'import_module_from_path' test.
15363 (setenv "HOME" "/tmp")
15364 (invoke "pytest" "-vv")))))))
15365 (propagated-inputs (list python-six))
15366 (native-inputs (list python-pytest which))
15367 (home-page "https://github.com/Erotemic/xdoctest")
15368 (synopsis "Rewrite of the Python builtin doctest module")
15369 (description "This package provides a rewrite of the builtin doctest
15370 module which leverages the Python @acronym{AST, Abstract Syntax Tree} instead
15371 of @acronym{REGEXPs, regular expressions}.")
15372 (license license:asl2.0)))
15374 (define-public python-mako
15376 (name "python-mako")
15381 (uri (pypi-uri "Mako" version))
15384 "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1"))))
15385 (build-system python-build-system)
15387 `(#:phases (modify-phases %standard-phases
15389 (lambda* (#:key tests? #:allow-other-keys)
15391 (invoke "nosetests" "-v")
15392 (format #t "test suite not run~%"))
15395 (list python-markupsafe))
15397 (list python-mock python-nose))
15398 (home-page "https://www.makotemplates.org/")
15399 (synopsis "Templating language for Python")
15400 (description "Mako is a templating language for Python that compiles
15401 templates into Python modules.")
15402 (license license:expat)))
15404 (define-public python-waitress
15406 (name "python-waitress")
15411 (uri (pypi-uri "waitress" version))
15412 (patches (search-patches "python-waitress-fix-tests.patch"))
15415 "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k"))))
15416 (build-system python-build-system)
15417 (home-page "https://github.com/Pylons/waitress")
15418 (synopsis "Waitress WSGI server")
15419 (description "Waitress is meant to be a production-quality pure-Python WSGI
15420 server with very acceptable performance.")
15421 (license license:zpl2.1)))
15423 (define-public python-whichcraft
15425 (name "python-whichcraft")
15430 (uri (pypi-uri "whichcraft" version))
15433 "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc"))))
15434 (build-system python-build-system)
15436 (list python-pytest))
15437 (home-page "https://github.com/pydanny/whichcraft")
15438 (synopsis "Cross-platform cross-python shutil.which functionality")
15440 "This package provides a shim of the shutil.which function that's
15441 designed to work across multiple versions of Python.")
15442 (license license:bsd-3)))
15444 (define-public python-cookiecutter
15446 (name "python-cookiecutter")
15451 (uri (pypi-uri "cookiecutter" version))
15453 (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb"))))
15454 (build-system python-build-system)
15456 (list python-freezegun python-pytest python-pytest-catchlog
15457 python-pytest-cov python-pytest-mock))
15459 (list python-binaryornot
15467 python-text-unidecode
15468 python-whichcraft))
15469 (home-page "https://github.com/cookiecutter/cookiecutter")
15471 "Command-line utility that creates projects from project templates")
15473 "This package provides a command-line utility that creates projects from
15474 project templates, e.g. creating a Python package project from a Python package
15475 project template.")
15476 (license license:bsd-3)))
15478 (define-public python-pyquery
15480 (name "python-pyquery")
15485 (uri (pypi-uri "pyquery" version))
15488 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
15489 (build-system python-build-system)
15491 (list python-webob python-webtest))
15493 (list python-lxml python-cssselect))
15494 (home-page "https://github.com/gawel/pyquery")
15495 (synopsis "Make jQuery-like queries on xml documents")
15496 (description "pyquery allows you to make jQuery queries on xml documents.
15497 The API is as much as possible the similar to jQuery. pyquery uses lxml for
15498 fast xml and html manipulation.")
15499 (license license:bsd-3)))
15501 (define-public python-anyjson
15503 (name "python-anyjson")
15508 (uri (pypi-uri "anyjson" version))
15511 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
15512 (build-system python-build-system)
15514 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
15515 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
15516 ;; whatever) so this transformation needs to be done before the tests
15517 ;; can be run. Maybe we could add a build step to transform beforehand
15518 ;; but it could be annoying/difficult.
15519 ;; We can enable tests for the Python 2 version, though, and do below.
15521 (home-page "https://bitbucket.org/runeh/anyjson/")
15523 "Wraps best available JSON implementation in a common interface")
15525 "Anyjson loads whichever is the fastest JSON module installed
15526 and provides a uniform API regardless of which JSON implementation is used.")
15527 (license license:bsd-3)))
15529 (define-public python-amqp
15531 (name "python-amqp")
15536 (uri (pypi-uri "amqp" version))
15538 (base32 "1qmmffiy48nady7is8529vxcyqbq88v5zgawqr3fk4q8rkz166rc"))))
15539 (build-system python-build-system)
15543 #~(modify-phases %standard-phases
15545 (lambda* (#:key tests? #:allow-other-keys)
15547 (invoke "pytest" "-vv"
15548 "-c" "/dev/null" ;take control over pytest options
15549 ;; Integration tests require network connectivity.
15550 "--ignore" "t/integration")))))))
15551 (native-inputs (list python-pytest))
15552 (propagated-inputs (list python-vine))
15553 (home-page "https://github.com/celery/py-amqp")
15554 (synopsis "Low-level AMQP client for Python (fork of amqplib)")
15556 "This is a fork of amqplib which was originally written by Barry Pederson.
15557 It is maintained by the Celery project, and used by kombu as a pure python
15558 alternative when librabbitmq is not available.")
15559 (license license:lgpl2.1+)))
15561 (define-public python-beniget
15563 (name "python-beniget")
15565 (home-page "https://github.com/serge-sans-paille/beniget")
15569 (uri (pypi-uri "beniget" version))
15571 (base32 "035c4f78yllpw2c5p1w92520rilm7nnpsqh7yvi3qmfhi8xlnmbm"))))
15572 (build-system python-build-system)
15574 (list python-gast))
15575 (synopsis "Extract semantic information about static Python code")
15577 "Beniget is a collection of analyzers for Python @acronym{AST,
15578 Abstract Syntax Tree}. It is a building block for writing a static analyzer
15579 or compiler for Python.")
15580 (license license:bsd-3)))
15582 (define-public python-txamqp
15584 (name "python-txamqp")
15589 (uri (pypi-uri "txAMQP" version))
15592 "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4"))))
15593 (build-system python-build-system)
15595 (list python-six python-twisted))
15596 (home-page "https://github.com/txamqp/txamqp")
15597 (synopsis "Communicate with AMQP peers and brokers using Twisted")
15599 "This package provides a Python library for communicating with AMQP peers
15600 and brokers using the asynchronous networking framework Twisted. It contains
15601 all the necessary code to connect, send and receive messages to/from an
15602 AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted. It
15603 also includes support for using Thrift RPC over AMQP in Twisted
15605 (license license:asl2.0)))
15607 (define-public python-kombu
15609 (name "python-kombu")
15614 (uri (pypi-uri "kombu" version))
15616 (base32 "044ng79gj04668kf5fmy7fjkw8302xyapskkn65ym52zfbpf7kip"))))
15617 (build-system python-build-system)
15621 #~(modify-phases %standard-phases
15623 (lambda* (#:key tests? #:allow-other-keys)
15625 (invoke "pytest" "-vv"
15626 ;; The transport tests attempt to pass messages to
15627 ;; many different databases.
15628 "--ignore" "t/unit/transport")))))))
15630 (list python-case python-pyro4 python-pytest-sugar
15631 python-pytest python-pytz))
15633 (list python-amqp python-cached-property python-vine))
15634 (home-page "https://kombu.readthedocs.io")
15635 (synopsis "Message passing library for Python")
15636 (description "The aim of Kombu is to make messaging in Python as easy as
15637 possible by providing an idiomatic high-level interface for the AMQ protocol,
15638 and also provide proven and tested solutions to common messaging problems.
15639 AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
15640 message orientation, queuing, routing, reliability and security, for which the
15641 RabbitMQ messaging server is the most popular implementation.")
15642 (license license:bsd-3)))
15644 (define-public python-billiard
15646 (name "python-billiard")
15647 (version "3.6.4.0")
15651 (uri (pypi-uri "billiard" version))
15653 (base32 "0ismj2p8c66ykpss94rs0bfra5agxxmljz8r3gaq79r8valfb799"))))
15654 (build-system python-build-system)
15657 (modify-phases %standard-phases
15658 (add-after 'unpack 'remove-win-files
15660 (for-each delete-file-recursively
15661 ;; test_multiprocessing seem to be written in Python2.
15662 '("t/integration/tests/test_multiprocessing.py"
15663 "t/unit/test_win32.py"
15664 "billiard/popen_spawn_win32.py"
15665 "billiard/_win.py")))))))
15667 (list python-case python-psutil python-pytest))
15668 (home-page "https://github.com/celery/billiard")
15669 (synopsis "Python multiprocessing fork with improvements and bugfixes")
15671 "Billiard is a fork of the Python 2.7 multiprocessing package. The
15672 multiprocessing package itself is a renamed and updated version of R Oudkerk's
15673 pyprocessing package. This standalone variant is intended to be compatible with
15674 Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
15675 (license license:bsd-3)))
15677 (define-public python-celery
15679 (name "python-celery")
15684 (uri (pypi-uri "celery" version))
15686 (base32 "109lcqarrbmh95sk1dm4yxayq1h3i27f4w23ndk64mqgyfnqqffi"))))
15687 (build-system python-build-system)
15690 (modify-phases %standard-phases
15691 (add-after 'unpack 'relax-requirements
15693 (substitute* "requirements/default.txt"
15697 (lambda* (#:key tests? #:allow-other-keys)
15699 (invoke "python" "-m" "pytest" "t"
15700 "--ignore" "t/integration" ;hangs tests
15701 ;; The MongoDB backend test appears to expect an older
15702 ;; version of MongoDB which provided its own bson
15703 ;; module, fails with " AttributeError: module 'bson'
15704 ;; has no attribute 'encode'".
15705 "--ignore" "t/unit/backends/test_mongodb.py"
15707 "-k" "not test_check_privileges_no_fchown ")))))))
15716 python-pytest-celery
15717 python-pytest-subtests
15718 python-pytest-timeout
15721 (list python-billiard
15723 python-click-didyoumean
15724 python-click-plugins
15729 (home-page "https://celeryproject.org")
15730 (synopsis "Distributed Task Queue")
15731 (description "Celery is an asynchronous task queue/job queue based on
15732 distributed message passing. It is focused on real-time operation, but
15733 supports scheduling as well. The execution units, called tasks, are executed
15734 concurrently on a single or more worker servers using multiprocessing,
15735 Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
15736 synchronously (wait until ready).")
15737 (license license:bsd-3)))
15739 (define-public python-translitcodec
15741 (name "python-translitcodec")
15746 (uri (pypi-uri "translitcodec" version))
15749 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
15750 (build-system python-build-system)
15752 `(#:tests? #f)) ; no tests provided
15754 "https://github.com/claudep/translitcodec")
15756 "Unicode to 8-bit charset transliteration codec")
15758 "This package contains codecs for transliterating ISO 10646 texts into
15759 best-effort representations using smaller coded character sets (ASCII,
15761 (license license:expat)))
15763 (define-public python-anyqt
15765 (name "python-anyqt")
15770 (uri (pypi-uri "AnyQt" version))
15772 (base32 "0z7myf0mp1qx4gza6ncqyq9whk67vblmh9n3klk19dv4aakjml2f"))))
15773 (build-system python-build-system)
15775 `(#:tests? #f ;there are no tests
15777 (modify-phases %standard-phases
15778 (add-after 'unpack 'delete-files
15779 ;; Delete files related to other operating systems.
15781 (delete-file "AnyQt/QtMacExtras.py")
15782 (delete-file "AnyQt/QtWinExtras.py"))))))
15783 (home-page "https://github.com/ales-erjavec/anyqt")
15784 (synopsis "PyQt4/PyQt5 compatibility layer")
15785 (description "AnyQt is a PyQt4/PyQt5 compatibility layer.")
15786 (license license:gpl3)))
15788 (define-public python-pyqtgraph
15790 (name "python-pyqtgraph")
15795 (uri (pypi-uri "pyqtgraph" version))
15797 (base32 "0kc7ncv0lr3spni29i9g8nszyr4xinswqi2zzs6v8kqqi593pvyj"))))
15798 (build-system python-build-system)
15801 (modify-phases %standard-phases
15802 (add-before 'check 'set-home-and-qpa
15804 (setenv "HOME" "/tmp")
15805 (setenv "QT_QPA_PLATFORM" "offscreen")
15808 (lambda* (#:key inputs outputs #:allow-other-keys)
15809 (add-installed-pythonpath inputs outputs)
15810 (invoke "pytest" "-vv" "-k"
15812 ;; These tests try to download online data.
15813 "not test_PolyLineROI"
15814 " and not test_getArrayRegion_axisorder"
15815 " and not test_getArrayRegion"
15816 " and not test_PlotCurveItem"
15817 " and not test_NonUniformImage_colormap"
15818 " and not test_NonUniformImage_lut"
15819 " and not test_ImageItem_axisorder"
15820 " and not test_ImageItem"
15821 ;; The test_reload test fails and suggests adding
15822 ;; "--assert=plain" to the pytest command, but it
15823 ;; doesn't solve the failure.
15824 " and not test_reload")))))))
15826 (list python-pytest python-pytest-cov python-pytest-xdist))
15830 (list python-h5py python-numpy python-pyopengl python-scipy
15831 python-pyqt-without-qtwebkit))
15832 (home-page "http://www.pyqtgraph.org")
15833 (synopsis "Scientific graphics and GUI library for Python")
15835 "PyQtGraph is a Pure-python graphics library for PyQt5, PyQt6, PySide2
15836 and PySide6. It is intended for use in mathematics, scientific or engineering
15838 (license license:expat)))
15840 (define-public python-qasync
15842 (name "python-qasync")
15846 ;; There are no tests in the PyPI tarball.
15848 (uri (git-reference
15849 (url "https://github.com/CabbageDevelopment/qasync/")
15850 (commit (string-append "v" version))))
15851 (file-name (git-file-name name version))
15853 (base32 "1q9cllrwf94whr0f6mipa0hdq1rcyqvklwx19g35g2dav8f3xkjl"))))
15854 (build-system python-build-system)
15856 `(#:test-target "pytest"
15858 (modify-phases %standard-phases
15859 (add-before 'check 'set-qpa
15861 (setenv "QT_QPA_PLATFORM" "offscreen"))))))
15863 (list python-pytest python-pytest-runner))
15865 (list python-pyqt))
15866 (home-page "https://github.com/CabbageDevelopment/qasync")
15867 (synopsis "Implementation of the PEP 3156 Event-Loop with Qt")
15869 "@code{qasync} allows coroutines to be used in PyQt/PySide applications
15870 by providing an implementation of the PEP 3156 event-loop.")
15871 (license license:bsd-2)))
15873 (define-public python-editor
15875 (name "python-editor")
15880 (uri (pypi-uri "python-editor" version))
15883 "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai"))))
15884 (build-system python-build-system)
15886 '(#:tests? #f)) ;XXX: needs a TTY and an editor
15887 (home-page "https://github.com/fmoo/python-editor")
15888 (synopsis "Programmatically open an editor, capture the result")
15890 "python-editor is a library that provides the editor module for
15891 programmatically interfacing with your system's $EDITOR.")
15892 (license license:asl2.0)))
15894 (define-public python-multiprocessing-logging
15896 (name "python-multiprocessing-logging")
15898 (home-page "https://github.com/jruere/multiprocessing-logging")
15901 (uri (git-reference
15903 (commit (string-append "v" version))))
15904 (file-name (git-file-name name version))
15907 "1625wy3djlr3b2fpd3vi822f8gw6b75mnls5a4318dbi9za5pf0y"))))
15908 (build-system python-build-system)
15909 (synopsis "Manage logs from multiple processes")
15911 "This Python module implements a multiprocessing-aware @code{Handler}
15912 that, when set on the root @code{Logger}, will tunnel log records to the
15913 main process so that they are handled correctly.")
15914 (license license:lgpl3+)))
15916 (define-public python-vobject
15918 (name "python-vobject")
15919 (version "0.9.6.1")
15922 (uri (pypi-uri "vobject" version))
15925 "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn"))))
15926 (build-system python-build-system)
15928 '(;; The test suite relies on some non-portable Windows interfaces.
15931 (list python-dateutil python-pyicu))
15932 (synopsis "Parse and generate vCard and vCalendar files")
15933 (description "Vobject is intended to be a full featured Python package for
15934 parsing and generating vCard and vCalendar files. Currently, iCalendar files
15935 are supported and well tested. vCard 3.0 files are supported, and all data
15936 should be imported, but only a few components are understood in a sophisticated
15938 (home-page "https://eventable.github.io/vobject/")
15939 (license license:asl2.0)))
15941 (define-public python-munkres
15943 (name "python-munkres")
15947 (uri (pypi-uri "munkres" version))
15950 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w"))))
15951 (build-system python-build-system)
15952 (native-inputs (list python-pytest-6))
15953 (home-page "https://software.clapper.org/munkres/")
15954 (synopsis "Implementation of the Munkres algorithm")
15955 (description "The Munkres module provides an implementation of the Munkres
15956 algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
15957 useful for solving the Assignment Problem.")
15958 (license license:bsd-3)))
15960 (define-public python-whoosh
15962 (name "python-whoosh")
15967 (uri (pypi-uri "Whoosh" version))
15970 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
15971 (build-system python-build-system)
15972 (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python.
15974 (list python-pytest))
15975 (home-page "https://bitbucket.org/mchaput/whoosh")
15976 (synopsis "Full text indexing, search, and spell checking library")
15978 "Whoosh is a fast, pure-Python full text indexing, search, and spell
15979 checking library.")
15980 (license license:bsd-2)))
15982 (define-public python-codespell
15984 (name "python-codespell")
15989 (uri (pypi-uri "codespell" version))
15991 (base32 "1r9y714cz8m894rxp7pyvicr1lw2iid24vz6fxbl5wzy8ibgxlqr"))))
15992 (build-system python-build-system)
15994 (list python-chardet))
15996 (list python-check-manifest python-flake8 python-pytest
15997 python-pytest-cov python-pytest-dependency))
16000 (modify-phases %standard-phases
16002 (lambda* (#:key outputs tests? #:allow-other-keys)
16004 ;; Make installed executable available for running the tests.
16006 (string-append (assoc-ref outputs "out") "/bin"
16007 ":" (getenv "PATH")))
16008 (invoke "pytest" "-vv")))))))
16009 (home-page "https://github.com/codespell-project/codespell/")
16010 (synopsis "Spellchecker for code")
16011 (description "Codespell fixes common misspellings in text files.
16012 It's designed primarily for checking misspelled words in source code,
16013 but it can be used with other files as well. It does not check for word
16014 membership in a complete dictionary, but instead looks for a set of
16015 common misspellings. Therefore it should catch errors like \"adn\", but
16016 it will not catch \"adnasdfasdf\". This also means it shouldn't
16017 generate false-positives when you use a niche term it doesn't know
16021 ; for codespell and codespell_lib
16023 ; for dictionary*.txt
16024 license:cc-by-sa3.0))))
16026 (define-public python-pathlib
16028 (name "python-pathlib")
16032 (uri (pypi-uri "pathlib" version))
16035 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
16036 (build-system python-build-system)
16037 ;; The tests depend on the internal "test" module, which does not provide
16038 ;; a stable interface.
16039 (arguments `(#:tests? #f))
16040 (home-page "https://pathlib.readthedocs.org/")
16041 (synopsis "Object-oriented file system paths")
16042 (description "Pathlib offers a set of classes to handle file system paths.
16043 It offers the following advantages over using string objects:
16046 @item No more cumbersome use of os and os.path functions. Everything can
16047 be done easily through operators, attribute accesses, and method calls.
16048 @item Embodies the semantics of different path types. For example,
16049 comparing Windows paths ignores casing.
16050 @item Well-defined semantics, eliminating any inconsistencies or
16051 ambiguities (forward vs. backward slashes, etc.).
16054 Note: In Python 3.4, pathlib is now part of the standard library. For other
16055 Python versions please consider python-pathlib2 instead, which tracks the
16056 standard library module. This module (python-pathlib) isn't maintained
16058 (license license:expat)))
16060 (define-public python-jellyfish
16062 (name "python-jellyfish")
16066 (uri (pypi-uri "jellyfish" version))
16069 "0p2s6b30sfffx8sya2i8kz0i0riw9fq1fi0k89s8kdgrmjf0h1h5"))))
16070 (build-system python-build-system)
16072 `(#:tests? #f ; XXX: Tests cannot find C coded version.
16074 (modify-phases %standard-phases
16076 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
16078 (add-installed-pythonpath inputs outputs)
16079 (invoke "pytest" "-vv" "jellyfish/test.py")))))))
16081 (list python-pytest))
16082 (home-page "https://github.com/jamesturk/jellyfish")
16083 (synopsis "Approximate and phonetic matching of strings")
16084 (description "Jellyfish uses a variety of string comparison and phonetic
16085 encoding algorithms to do fuzzy string matching.")
16086 (license license:bsd-2)))
16088 (define-public python-pdfminer-six
16090 (name "python-pdfminer-six")
16091 (version "20201018")
16092 ;; There are no tests in the PyPI tarball.
16096 (uri (git-reference
16097 (url "https://github.com/pdfminer/pdfminer.six")
16099 (file-name (git-file-name name version))
16101 (base32 "1a2fxxnnjqbx344znpvx7cnv1881dk6585ibw01inhfq3w6yj2lr"))))
16102 (build-system python-build-system)
16105 (modify-phases %standard-phases
16106 ;; Tests write to the source tree.
16107 (add-after 'unpack 'make-git-checkout-writable
16109 (for-each make-file-writable (find-files "."))
16113 (invoke "make" "test"))))))
16115 (list python-chardet python-cryptography python-sortedcontainers))
16117 (list python-nose python-tox))
16118 (home-page "https://github.com/pdfminer/pdfminer.six")
16119 (synopsis "PDF parser and analyzer")
16120 (description "@code{pdfminer.six} is a community maintained fork of
16121 the original PDFMiner. It is a tool for extracting information from PDF
16122 documents. It focuses on getting and analyzing text data. Pdfminer.six
16123 extracts the text from a page directly from the sourcecode of the PDF. It
16124 can also be used to get the exact location, font or color of the text.")
16125 (license license:expat)))
16127 (define-public python-rarfile
16129 (name "python-rarfile")
16133 (uri (pypi-uri "rarfile" version))
16136 "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37"))))
16137 (build-system python-build-system)
16139 `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail.
16141 (modify-phases %standard-phases
16142 (add-after 'unpack 'patch
16143 (lambda* (#:key inputs #:allow-other-keys)
16144 (substitute* "rarfile.py"
16145 ;; Disable unrar and unar, which are unavailable on Guix.
16146 (("(unrar|unar)=True" all tool) (string-append tool "=False"))
16147 ;; Hardcode path to bsdtar
16149 (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\"")))
16152 (lambda* (#:key inputs tests? #:allow-other-keys)
16154 (invoke "pytest" "-vv")))))))
16155 (native-inputs (list python-pytest))
16156 (inputs (list libarchive))
16157 (home-page "https://github.com/markokr/rarfile")
16158 (synopsis "RAR archive reader for Python")
16159 (description "This is Python module for RAR archive reading. The interface
16160 is made as zipfile like as possible.")
16161 (license license:isc)))
16163 (define-public python-rich
16165 (name "python-rich")
16169 (uri (pypi-uri "rich" version))
16172 "149vjb4cpf9mz14iig0b6d8065dm8aslp6pc45g9ipmp1wf00ffj"))))
16173 (build-system python-build-system)
16176 (modify-phases %standard-phases
16178 (lambda* (#:key inputs tests? #:allow-other-keys)
16180 (copy-recursively (string-append
16181 (assoc-ref inputs "tests") "/tests")
16183 (invoke "python" "-m" "pytest" "-vv")))))))
16185 (list python-attrs python-colorama python-commonmark python-pygments
16186 python-typing-extensions))
16188 `(("python-pytest" ,python-pytest)
16190 ;; The release on pypi comes without tests. We can't build from this
16191 ;; checkout, though, because installation requires an invocation of
16195 (uri (git-reference
16196 (url "https://github.com/willmcgugan/rich")
16197 (commit (string-append "v" version))))
16198 (file-name (git-file-name name version))
16201 "17c3gljn8zv32xnpsgd3fqgqn4r7cdfqri41hridcpbhssdgkyp9"))))))
16202 (home-page "https://github.com/willmcgugan/rich")
16203 (synopsis "Render rich text and more to the terminal")
16205 "This is a Python package for rendering rich text, tables, progress bars,
16206 syntax highlighting, markdown and more to the terminal.")
16207 (license license:expat)))
16209 (define-public python-textual
16211 (name "python-textual")
16215 (uri (pypi-uri "textual" version))
16218 "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j"))))
16219 (build-system python-build-system)
16222 ;; The release on pypi comes without tests. We can't build
16223 ;; from this checkout, though, because installation requires
16224 ;; an invocation of poetry.
16227 (uri (git-reference
16228 (url "https://github.com/Textualize/textual")
16229 (commit (string-append "v" version))))
16230 (file-name (git-file-name name version))
16233 "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax")))))
16235 #~(modify-phases %standard-phases
16237 (lambda* (#:key tests? #:allow-other-keys)
16239 (copy-recursively #$(file-append tests "/tests")
16241 (invoke "python" "-m" "pytest" "-vv"))))))))
16243 (list python-rich python-typing-extensions))
16245 (list python-pytest))
16246 (home-page "https://github.com/Textualize/textual")
16247 (synopsis "Build text user interfaces in Python")
16248 (description "Textual is a @acronym{TUI, Text User Interface} framework
16249 for Python inspired by modern web development.")
16250 (license license:expat)))
16252 (define-public python-magic
16254 (name "python-magic")
16256 (home-page "https://github.com/ahupp/python-magic")
16260 (uri (git-reference (url home-page) (commit version)))
16261 (file-name (git-file-name name version))
16262 (patches (search-patches "python-magic-python-bytecode.patch"))
16265 "17jalhjbfd600lzfz296m0nvgp6c7vx1mgz82jbzn8hgdzknf4w0"))))
16266 (build-system python-build-system)
16268 '(#:phases (modify-phases %standard-phases
16269 ;; Replace a specific method call with a hard-coded
16270 ;; path to the necessary libmagic.so file in the
16271 ;; store. If we don't do this, then the method call
16272 ;; will fail to find the libmagic.so file, which in
16273 ;; turn will cause any application using
16274 ;; python-magic to fail.
16275 (add-before 'build 'hard-code-path-to-libmagic
16276 (lambda* (#:key inputs #:allow-other-keys)
16277 (let ((magic (search-input-file inputs "/lib/libmagic.so")))
16278 (substitute* "magic/loader.py"
16279 (("find_library\\('magic'\\)")
16280 (string-append "'" magic "'"))))))
16282 (lambda* (#:key tests? #:allow-other-keys)
16283 ;; The test suite mandates this variable.
16284 (setenv "LC_ALL" "en_US.UTF-8")
16286 (with-directory-excursion "test"
16287 (invoke "python" "./test.py")
16288 (invoke "python" "./libmagic_test.py"))
16289 (format #t "test suite not run~%")))))))
16293 ;; python-magic needs to be able to find libmagic.so.
16294 ;; Use a newer version because 5.39 returns bogus for some archives
16295 ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'.
16297 (synopsis "File type identification using libmagic")
16299 "This module uses ctypes to access the libmagic file type
16300 identification library. It makes use of the local magic database and
16301 supports both textual and MIME-type output. Note that this module and
16302 the python-file module both provide a \"magic.py\" file; these two
16303 modules, which are different and were developed separately, both serve
16304 the same purpose: to provide Python bindings for libmagic.")
16305 (license license:expat)))
16307 (define-public s3cmd
16314 (uri (git-reference
16315 (url "https://github.com/s3tools/s3cmd")
16316 (commit (string-append "v" version))))
16317 (file-name (git-file-name name version))
16319 (base32 "0rdgwwmmp8mdxc84bxq6k9a7v7z2qgc3df47djzs2b84gw81dglx"))))
16320 (build-system python-build-system)
16322 (list python-dateutil
16324 (home-page "https://s3tools.org/s3cmd")
16325 (synopsis "Command line tool for S3-compatible storage services")
16327 "S3cmd is a command line tool for uploading, retrieving and managing data
16328 in storage services that are compatible with the Amazon Simple Storage
16329 Service (S3) protocol, including S3 itself. It supports rsync-like backup,
16330 GnuPG encryption, and more. It also supports management of Amazon's
16331 CloudFront content delivery network.")
16332 (license license:gpl2+)))
16334 (define-public python-pkgconfig
16336 (name "python-pkgconfig")
16341 (uri (pypi-uri "pkgconfig" version))
16344 "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb"))))
16345 (build-system python-build-system)
16347 (list python-nose))
16352 (modify-phases %standard-phases
16353 (add-before 'build 'patch
16354 ;; Hard-code the path to pkg-config.
16356 (substitute* "pkgconfig/pkgconfig.py"
16358 (string-append "'" (which "pkg-config") "'")))))
16361 (invoke "nosetests" "test.py"))))))
16362 (home-page "https://github.com/matze/pkgconfig")
16363 (synopsis "Python interface for pkg-config")
16364 (description "This module provides a Python interface to pkg-config. It
16365 can be used to find all pkg-config packages, check if a package exists,
16366 check if a package meets certain version requirements, query CFLAGS and
16367 LDFLAGS and parse the output to build extensions with setup.py.")
16368 (license license:expat)))
16370 (define-public python-bz2file
16372 (name "python-bz2file")
16377 (uri (pypi-uri "bz2file" version))
16380 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
16381 (build-system python-build-system)
16383 `(#:tests? #f)) ; Tests use deprecated python modules.
16384 (home-page "https://github.com/nvawda/bz2file")
16385 (synopsis "Read and write bzip2-compressed files")
16387 "Bz2file is a Python library for reading and writing bzip2-compressed
16388 files. It contains a drop-in replacement for the I/O interface in the
16389 standard library's @code{bz2} module, including features from the latest
16390 development version of CPython that are not available in older releases.")
16391 (license license:asl2.0)))
16393 (define-public python-future
16395 (name "python-future")
16400 (uri (pypi-uri "future" version))
16403 "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi"))))
16404 (build-system python-build-system)
16405 ;; Many tests connect to the network or are otherwise flawed.
16406 ;; https://github.com/PythonCharmers/python-future/issues/210
16410 (modify-phases %standard-phases
16411 (replace 'sanity-check
16412 (let ((sanity-check (assoc-ref %standard-phases 'sanity-check)))
16413 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
16414 (let* ((files (find-files (site-packages inputs outputs)
16415 "top_level\\.txt"))
16416 (backups (map (lambda (f) (string-append f ".bak"))
16418 (for-each copy-file files backups)
16420 ;; Nobody be usin' winreg on Guix
16421 ;; Also, don't force users to have tkinter when they don't
16423 (("(winreg|tkinter)") ""))
16424 (apply sanity-check args)
16425 (for-each rename-file backups files))))))))
16426 (home-page "https://python-future.org")
16427 (synopsis "Single-source support for Python 3 and 2")
16429 "@code{python-future} is the missing compatibility layer between Python 2 and
16430 Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
16431 to support both Python 2 and Python 3 with minimal overhead.")
16432 (license license:expat)))
16434 (define-public python-cysignals
16436 (name "python-cysignals")
16441 (uri (pypi-uri "cysignals" version))
16444 "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2"))))
16445 (build-system python-build-system)
16447 (list python-cython python-sphinx))
16451 `(#:modules ((guix build python-build-system)
16452 ((guix build gnu-build-system) #:prefix gnu:)
16453 (guix build utils))
16454 ;; FIXME: Tests are executed after installation and currently fail
16455 ;; when not installing into standard locations; the author is working
16459 (modify-phases %standard-phases
16462 (assoc-ref gnu:%standard-phases 'configure)))))
16464 "https://github.com/sagemath/cysignals")
16466 "Handling of interrupts and signals for Cython")
16468 "The cysignals package provides mechanisms to handle interrupts (and
16469 other signals and errors) in Cython code, using two related approaches,
16470 for mixed Cython/Python code or external C libraries and pure Cython code,
16472 (license license:lgpl3+)))
16474 (define-public python-rope
16476 (name "python-rope")
16481 (uri (pypi-uri "rope" version))
16484 "0bkzwkllxxdxd3w70xiy137lqvnlmmaplsc2ya3s23ss4kq8y10k"))))
16485 (build-system python-build-system)
16488 `(modify-phases %standard-phases
16489 (add-after 'unpack 'disable-broken-test
16491 (substitute* "ropetest/contrib/autoimporttest.py"
16492 (("def test_search_module")
16493 "def __notest_search_module")
16494 (("def test_search_submodule")
16495 "def __notest_search_submodule")))))))
16497 (list python-pytest-timeout
16499 (home-page "https://github.com/python-rope/rope")
16500 (synopsis "Refactoring library for Python")
16501 (description "Rope is a refactoring library for Python. It facilitates
16502 the renaming, moving and extracting of attributes, functions, modules, fields
16503 and parameters in Python source code. These refactorings can also be applied
16504 to occurrences in strings and comments.")
16505 (license license:lgpl3+)))
16507 (define-public python-py3status
16509 (name "python-py3status")
16514 (uri (pypi-uri "py3status" version))
16516 (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262"))))
16517 (build-system python-build-system)
16522 (modify-phases %standard-phases
16523 ;; 'file' is used for detection of configuration file encoding
16524 ;; let's make link the dependency to particular input
16525 (add-before 'build 'patch-file-path
16526 (lambda* (#:key inputs #:allow-other-keys)
16527 (let ((file-path (assoc-ref inputs "file")))
16528 (substitute* "py3status/parse_config.py"
16529 (("\\[\"file\", \"-b\"")
16530 (string-append "['" file-path "/bin/file', '-b'")))
16532 #:tests? #f)) ; TODO: Requires many libraries not in Guix.
16533 (home-page "https://github.com/ultrabug/py3status")
16534 (synopsis "Extensible i3status wrapper written in Python")
16535 (description "py3status is an i3status wrapper which extends i3status
16536 functionality in a modular way, allowing you to extend your panel with your
16537 own code, responding to click events and updating clock every second.")
16538 (license license:bsd-3)))
16540 (define-public python-tblib
16542 (name "python-tblib")
16546 (uri (pypi-uri "tblib" version))
16549 "0i136n5pydmd202254wzrdbspkw0br0c9mbxhfs9hpfbahvyx6r2"))))
16550 (build-system python-build-system)
16553 (modify-phases %standard-phases
16556 (invoke "py.test" "-vv" "tests" "README.rst"))))))
16558 (list python-pytest python-six))
16559 (home-page "https://github.com/ionelmc/python-tblib")
16560 (synopsis "Traceback serialization library")
16562 "Traceback serialization allows you to:
16565 @item Pickle tracebacks and raise exceptions with pickled tracebacks in
16566 different processes. This allows better error handling when running code over
16567 multiple processes (imagine multiprocessing, billiard, futures, celery etc).
16569 @item Parse traceback strings and raise with the parsed tracebacks.
16571 (license license:bsd-3)))
16573 (define-public python-tftpy
16575 (name "python-tftpy")
16579 (method git-fetch) ;no tests in PyPI archive
16580 (uri (git-reference
16581 (url "https://github.com/msoulier/tftpy")
16583 (file-name (git-file-name name version))
16586 "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc"))))
16587 (build-system python-build-system)
16589 `(#:phases (modify-phases %standard-phases
16591 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
16593 ;; The default DEBUG logging level is way too verbose.
16594 (substitute* "t/test.py"
16595 (("logging\\.DEBUG")
16597 (invoke "python" "-m" "unittest" "t/test.py")))))))
16598 (home-page "http://tftpy.sourceforge.net/")
16599 (synopsis "Python trivial file transfer protocol (TFTP) library")
16600 (description "TFTPy is a trivial file transfer protocol (TFTP) Python
16601 library. It can be used to act both as a TFTP client or TFTP server.")
16602 (license license:expat)))
16604 (define-public python-greenlet
16606 (name "python-greenlet")
16610 (uri (pypi-uri "greenlet" version))
16613 "0jkln5bf6rq7dbvpv7ypin3pp9jqd2jr91yyxlnfcii3msj5w3z3"))))
16614 (build-system python-build-system)
16615 (home-page "https://greenlet.readthedocs.io/")
16616 (synopsis "Lightweight in-process concurrent programming")
16618 "Greenlet package is a spin-off of Stackless, a version of CPython
16619 that supports micro-threads called \"tasklets\". Tasklets run
16620 pseudo-concurrently (typically in a single or a few OS-level threads) and
16621 are synchronized with data exchanges on \"channels\".")
16622 (license (list license:psfl license:expat))))
16624 (define-public python-objgraph
16626 (name "python-objgraph")
16631 (uri (pypi-uri "objgraph" version))
16634 "19qmqsh984zq1rzzjy4vqnmviaqnymcyl8h7z99pnicbgwnm2adz"))))
16635 (build-system python-build-system)
16637 (list python-graphviz))
16639 (list python-mock graphviz))
16640 (home-page "https://mg.pov.lt/objgraph/")
16641 (synopsis "Draw Python object reference graphs with graphviz")
16643 "This package provides tools to draw Python object reference graphs with
16645 (license license:expat)))
16647 (define-public python-gevent
16649 (name "python-gevent")
16650 (version "21.12.0")
16653 (uri (pypi-uri "gevent" version))
16656 "0kh9mmq811mzfgj60n64icybjp4ryjmfmy1vg7x92yrniibn92zl"))
16657 (modules '((guix build utils)))
16660 ;; unbunding libev and c-ares
16661 (delete-file-recursively "deps")
16662 ;; Remove cythonized files.
16663 (with-directory-excursion "src/gevent"
16664 (for-each delete-file
16665 (append (list "resolver/cares.c"
16677 "_hub_primitives.c"
16679 "_greenlet_primitives.c"
16680 "_abstract_linkable.c")
16681 (find-files "." "\\.html$"))))))))
16682 (build-system python-build-system)
16684 `(#:modules ((ice-9 ftw)
16688 (guix build python-build-system))
16689 #:phases (modify-phases %standard-phases
16690 (add-before 'patch-source-shebangs 'patch-hard-coded-paths
16692 (substitute* "src/gevent/subprocess.py"
16693 (("/bin/sh") (which "sh")))
16694 (for-each (lambda (file)
16696 (("/bin/sh") (which "sh"))
16697 (("/bin/true") (which "true"))))
16698 (find-files "src/greentest" "\\.py$"))))
16699 (add-before 'build 'do-not-use-bundled-sources
16701 (setenv "GEVENTSETUP_EMBED" "0")
16703 ;; Prevent building bundled libev.
16704 (substitute* "setup.py"
16705 (("run_make=_BUILDING")
16706 "run_make=False"))))
16707 (add-before 'build 'add-greenlet-on-C_INCLUDE_PATH
16708 (lambda* (#:key inputs #:allow-other-keys)
16709 (let ((greenlet (string-append
16710 (assoc-ref inputs "python-greenlet")
16712 (match (scandir greenlet
16714 (string-prefix? "python" item)))
16716 (setenv "C_INCLUDE_PATH"
16717 (string-append greenlet "/" python ":"
16718 (or (getenv "C_INCLUDE_PATH")
16720 (add-before 'check 'pretend-to-be-CI
16722 ;; A few tests are skipped due to network constraints or
16723 ;; get longer timeouts when running in a CI environment.
16724 ;; Piggy-back on that, as we need the same adjustments.
16725 (setenv "TRAVIS" "1")
16726 (setenv "APPVEYOR" "1")))
16727 (add-before 'check 'adjust-tests
16729 (let ((disabled-tests
16730 '(;; These tests relies on networking which is
16731 ;; not available in the build container.
16732 "test__getaddrinfo_import.py"
16733 "test__server_pywsgi.py"
16734 ;; XXX: These tests borrow functionality from the
16735 ;; Python builtin 'test' module, but it is not
16736 ;; installed with the Guix Python distribution.
16741 "test_threading.py"
16742 "test__threading_2.py"
16743 ;; These tests rely on KeyboardInterrupts which do not
16744 ;; work inside the build container for some reason
16745 ;; (lack of controlling terminal?).
16746 "test_subprocess.py"
16747 "test__issues461_471.py"
16748 ;; TODO: Patch out the tests that use getprotobyname, etc
16749 ;; instead of disabling all the tests from these files.
16750 "test__resolver_dnspython.py"
16751 "test__doctests.py"
16754 "test__execmodules.py"
16755 ;; This test contains 'test_unlink', which
16756 ;; fails on i686 (see:
16757 ;; https://github.com/gevent/gevent/issues/1558).
16758 "test__core_stat.py")))
16759 (call-with-output-file "skipped_tests.txt"
16761 (format port "~a~%"
16762 (string-join disabled-tests "\n")))))))
16765 ;; Use the build daemons configured number of workers.
16766 (setenv "NWORKERS" (number->string (parallel-job-count)))
16768 (invoke "python" "-m" "gevent.tests" "-unone" "--config"
16769 "known_failures.py" "--ignore" "skipped_tests.txt"))))))
16771 (list python-greenlet python-zope-event python-zope-interface))
16773 (list python-cython
16775 python-dnspython python-psutil python-objgraph))
16777 (list c-ares libev))
16778 (home-page "https://www.gevent.org/")
16779 (synopsis "Coroutine-based network library")
16781 "@code{gevent} is a coroutine-based Python networking library that uses
16782 @code{greenlet} to provide a high-level synchronous API on top of the
16783 @code{libev} event loop.")
16784 (license license:expat)))
16786 (define-public python-fastimport
16788 (name "python-fastimport")
16793 (uri (pypi-uri "fastimport" version))
16795 (base32 "06gk14qgm9dxx3pzjn0ckdbywc8ial2bjfzddqwlr4bn1nnqkbll"))))
16796 (build-system python-build-system)
16797 (home-page "https://github.com/jelmer/python-fastimport")
16798 (synopsis "VCS fastimport parser and generator in Python")
16799 (description "This package provides a parser for and generator of the Git
16800 @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
16802 (license license:gpl2+)))
16804 (define-public python-twisted
16806 (name "python-twisted")
16810 (uri (pypi-uri "Twisted" version ".tar.bz2"))
16813 "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym"))))
16814 (build-system python-build-system)
16816 '(#:tests? #f ; FIXME: some tests fail
16818 (modify-phases %standard-phases
16819 ;; Remove scripts, because they depend on [conch]
16820 (add-after 'unpack 'remove-entrypoint
16822 (substitute* "src/twisted/python/_setup.py"
16823 (("\".+ = twisted\\.conch\\.scripts\\..+\",") "")))))))
16825 (list python-zope-interface
16831 (home-page "https://twistedmatrix.com/")
16832 (synopsis "Asynchronous networking framework written in Python")
16834 "Twisted is an extensible framework for Python programming, with special
16835 focus on event-based network programming and multiprotocol integration.")
16836 (license license:expat)))
16838 (define-public python-pika
16840 (name "python-pika")
16845 (uri (git-reference
16846 (url "https://github.com/pika/pika")
16848 (file-name (git-file-name name version))
16851 "0sqj3bg6jwign8vwvn337fbwy69sm684ns1vh5kbfnskq4him9i2"))))
16852 (build-system python-build-system)
16854 '(#:phases (modify-phases %standard-phases
16855 (add-after 'unpack 'disable-live-tests
16857 ;; Disable tests that require RabbitMQ, which is not
16858 ;; yet available in Guix.
16859 (substitute* "nose2.cfg"
16860 (("tests=tests/unit,tests/acceptance")
16861 "start-dir=tests/unit"))
16862 (with-directory-excursion "tests"
16863 (for-each delete-file
16864 '("unit/base_connection_tests.py"
16865 "unit/threaded_test_wrapper_test.py")))))
16867 (lambda* (#:key tests? #:allow-other-keys)
16869 (setenv "PYTHONPATH" (getcwd))
16870 (invoke "nose2" "-v")))))))
16874 ;; These are optional at runtime, and provided here for tests.
16878 (home-page "https://pika.readthedocs.org")
16879 (synopsis "Pure Python AMQP Client Library")
16881 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
16882 Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
16883 network support library.")
16884 (license license:bsd-3)))
16886 (define-public python-ply
16888 (name "python-ply")
16893 (uri (pypi-uri "ply" version))
16896 "18qx113g9bi1ac4indd5phma82zcdq601lxncp3vjn43m2mc3iq0"))))
16897 (build-system python-build-system)
16898 (home-page "http://www.dabeaz.com/ply/")
16899 (synopsis "Python Lex & Yacc")
16900 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
16901 It uses LR parsing and does extensive error checking.")
16902 (license license:bsd-3)))
16904 (define-public python-tabulate
16906 (name "python-tabulate")
16910 (uri (pypi-uri "tabulate" version))
16913 "19qkdz8xwk5jxa5xn53mnk76qnh4ysm81vzj664jw1b0azr167gb"))))
16914 (build-system python-build-system)
16916 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
16917 ;; and the latest release is not tagged in the upstream repository.
16919 (home-page "https://bitbucket.org/astanin/python-tabulate")
16920 (synopsis "Pretty-print tabular data")
16922 "Tabulate is a library and command-line utility to pretty-print tabular
16924 (license license:expat)))
16926 (define-public python-kazoo
16928 (name "python-kazoo")
16933 (uri (pypi-uri "kazoo" version))
16936 "1zpj5cc8624w6i0pxgcxqkjwbkm4pkrv19d7wh5df3jais32g3jq"))))
16937 (build-system python-build-system)
16938 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
16941 (home-page "https://kazoo.readthedocs.org")
16942 (synopsis "High-level Zookeeper client library")
16944 "Kazoo is a Python client library for the Apache Zookeeper distributed
16945 application service. It is designed to be easy to use and to avoid common
16946 programming errors.")
16947 (license license:asl2.0)))
16949 (define-public python-pykafka
16951 (name "python-pykafka")
16955 (uri (pypi-uri "pykafka" version))
16958 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
16959 (build-system python-build-system)
16960 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
16962 (list python-gevent python-kazoo python-tabulate))
16965 (home-page "https://pykafka.readthedocs.io/")
16966 (synopsis "Apache Kafka client for Python")
16968 "PyKafka is a client for the Apache Kafka distributed messaging system.
16969 It includes Python implementations of Kafka producers and consumers, which
16970 are optionally backed by a C extension built on librdkafka.")
16971 (license license:asl2.0)))
16973 (define-public python-wcwidth
16975 (name "python-wcwidth")
16979 (uri (pypi-uri "wcwidth" version))
16982 "1a1pzds3xzfylm5mnc5f6c1p8kiig0daqjc9gygd9rc3cj53x2zj"))))
16983 (build-system python-build-system)
16984 (home-page "https://github.com/jquast/wcwidth")
16985 (synopsis "Measure number of terminal column cells of wide-character codes")
16986 (description "Wcwidth measures the number of terminal column cells of
16987 wide-character codes. It is useful for those implementing a terminal emulator,
16988 or programs that carefully produce output to be interpreted by one. It is a
16989 Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
16990 specified in POSIX.1-2001 and POSIX.1-2008.")
16991 (license license:expat)))
16993 (define-public python-chai
16995 (name "python-chai")
16999 (uri (pypi-uri "chai" version))
17002 "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz"))
17003 (patches (search-patches "python-chai-drop-python2.patch"))))
17004 (build-system python-build-system)
17005 (home-page "https://github.com/agoragames/chai")
17006 (synopsis "Mocking framework for Python")
17008 "Chai provides an api for mocking, stubbing and spying your python
17009 objects, patterned after the Mocha library for Ruby.")
17010 (license license:bsd-3)))
17012 (define-public python-inflection
17014 (name "python-inflection")
17017 (origin (method url-fetch)
17018 (uri (pypi-uri "inflection" version))
17021 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
17022 (build-system python-build-system)
17024 (list python-pytest))
17025 (home-page "https://github.com/jpvanhal/inflection")
17026 (synopsis "Python string transformation library")
17028 "Inflection is a string transformation library. It singularizes
17029 and pluralizes English words, and transforms strings from CamelCase to
17030 underscored string.")
17031 (license license:expat)))
17033 (define-public python-pylev
17035 (name "python-pylev")
17039 (uri (pypi-uri "pylev" version))
17042 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
17043 (build-system python-build-system)
17044 (home-page "https://github.com/toastdriven/pylev")
17045 (synopsis "Levenshtein distance implementation in Python")
17046 (description "Pure Python Levenshtein implementation, based off the
17047 Wikipedia code samples at
17048 @url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
17049 (license license:bsd-3)))
17051 (define-public python-cleo
17053 (name "python-cleo")
17057 (uri (pypi-uri "cleo" version))
17060 "17q6wi3q280kxmxzb2iwnnqih2xbljn18v0bjx2ip18p079j43ix"))))
17061 (build-system python-build-system)
17063 (list ;; For testing
17064 python-mock python-pytest-mock python-pytest))
17066 (list python-backpack python-clikit python-pastel python-pylev))
17067 (home-page "https://github.com/sdispater/cleo")
17068 (synopsis "Command-line arguments library for Python")
17070 "Cleo allows you to create command-line commands with signature in
17071 docstring and colored output.")
17072 (license license:expat)))
17074 (define-public python-tomlkit
17076 (name "python-tomlkit")
17081 (uri (pypi-uri "tomlkit" version))
17083 (base32 "062n694sfv24ylda6nh8228y2q9hrvy554kqx84y7czsjfbg4mxc"))))
17084 (build-system python-build-system)
17086 (list python-pytest python-pyyaml))
17087 (home-page "https://github.com/sdispater/tomlkit")
17088 (synopsis "Style-preserving TOML library")
17090 "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that
17091 preserves all comments, indentations, whitespace and internal element ordering,
17092 and makes them accessible and editable via an intuitive API. It can also
17093 create new TOML documents from scratch using the provided helpers. Part of the
17094 implementation has been adapted, improved, and fixed from Molten.")
17095 (license license:expat)))
17097 (define-public python-shellingham
17099 (name "python-shellingham")
17104 (uri (pypi-uri "shellingham" version))
17106 (base32 "07hpndvcv9mf9hp54b4apzpwzmzfzl8ryaacsfdq4139im2w4ma8"))))
17107 (build-system python-build-system)
17108 (home-page "https://github.com/sarugaku/shellingham")
17109 (synopsis "Tool to detect surrounding shell")
17111 "Shellingham detects what shell the current Python executable is
17113 (license license:isc)))
17115 (define-public python-memcached
17117 (name "python-memcached")
17122 (uri (pypi-uri "python-memcached" version))
17125 "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2"))
17126 (patches (search-patches "python-memcached-syntax-warnings.patch"))))
17127 (build-system python-build-system)
17128 (propagated-inputs (list python-six))
17130 "https://github.com/linsomniac/python-memcached")
17131 (synopsis "Pure python memcached client")
17133 "This software is a pure Python interface to the memcached memory cache
17134 daemon. It is the client side software which allows storing values in one or
17135 more, possibly remote, memcached servers.")
17136 (license license:psfl)))
17138 (define-public python-mergedeep
17140 (name "python-mergedeep")
17145 (uri (git-reference
17146 (url "https://github.com/clarketm/mergedeep")
17147 (commit (string-append "v" version))))
17148 (file-name (git-file-name name version))
17151 "1msvvdzk33sxzgyvs4fs8dlsrsi7fjj038z83s0yw5h8m8d78469"))))
17152 (build-system python-build-system)
17153 (native-inputs (list python-pytest))
17154 (home-page "https://github.com/clarketm/mergedeep")
17155 (synopsis "Deep merge function for Python")
17156 (description "This package provides a deep merge function for Python,
17157 useful to combine multiple data objects as one.")
17158 (license license:expat)))
17160 (define-public python-clikit
17162 (name "python-clikit")
17167 (uri (pypi-uri "clikit" version))
17170 "0ngdkmb73gkp5y00q7r9k1cdlfn0wyzws2wrqlshc4hlkbdyabj4"))))
17171 (build-system python-build-system)
17172 (arguments '(#:tests? #f)) ; no test in the PyPI tarball
17174 (list python-crashtest python-pastel python-pylev))
17175 (home-page "https://github.com/sdispater/clikit")
17176 (synopsis "Group of utilities to build command line interfaces")
17178 "CliKit is a group of utilities to build testable command line
17180 (license license:expat)))
17182 (define-public python-msgpack-python
17184 (name "python-msgpack-python")
17189 (uri (pypi-uri "msgpack-python" version))
17192 "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p"))))
17193 (build-system python-build-system)
17194 (home-page "https://msgpack.org/")
17195 (synopsis "Package to deserialize messages in MessagePack binary format")
17197 "MessagePack is an efficient binary serialization format. It lets you
17198 exchange data among multiple languages like JSON. But it's faster and
17199 smaller. Small integers are encoded into a single byte, and typical short
17200 strings require only one extra byte in addition to the strings themselves.")
17201 (license license:asl2.0)))
17203 (define-public python-cattrs
17205 (name "python-cattrs")
17208 (method git-fetch) ;for tests
17209 (uri (git-reference
17210 (url "https://github.com/python-attrs/cattrs")
17211 (commit (string-append "v" version))))
17212 (file-name (git-file-name name version))
17215 "1n0h25gj6zd02kqyl040xpdvg4hpy1j92716sz0rg019xjqqijqb"))))
17216 (build-system pyproject-build-system)
17220 #~(modify-phases %standard-phases
17221 (add-after 'unpack 'adjust-for-older-attrs
17222 ;; Our older attrs package is using the 'attr' rather than 'attrs'
17224 ;; TODO: Remove after python-attrs is updated to >= 21.4.0.
17226 (substitute* (find-files "." "\\.py$")
17230 (lambda* (#:key tests? #:allow-other-keys)
17232 ;; Do not use the 'pytest' binary as it hard-codes an older
17233 ;; python-hypothesis version near the beginning of its
17234 ;; GUIX_PYTHONPATH.
17235 (invoke "python" "-m" "pytest" "-vv" "-c" "/dev/null" "tests"
17236 "-n" (number->string (parallel-job-count))
17237 ;; This test requires orjson, which needs the maturin
17238 ;; build system and new Rust dependencies.
17239 "--ignore" "tests/test_preconf.py")))))))
17241 (list python-hypothesis-next
17245 python-pymongo ;for the bson module
17247 python-pytest-xdist))
17250 python-exceptiongroup
17251 python-typing-extensions))
17252 (home-page "https://github.com/python-attrs/cattrs")
17253 (synopsis "Python library for structuring and unstructuring data")
17254 (description "@code{cattrs} is an Python library for structuring and
17255 unstructuring data. @code{cattrs} works best with @code{attrs} classes,
17256 @code{dataclasses} and the usual Python collections, but other kinds of
17257 classes can also be supported by manually registering converters.")
17258 (license license:expat)))
17260 (define-public python-cachy
17262 (name "python-cachy")
17267 (uri (pypi-uri "cachy" version))
17270 "1cb9naly8ampzlky7h74n5wj628l7jkpsh0c0jz0namlrvs82r8q"))))
17271 (build-system python-build-system)
17274 (modify-phases %standard-phases
17276 (lambda _ (invoke "pifpaf" "run" "memcached" "--port" "11211" "--"
17279 (list memcached python-fakeredis python-flexmock python-pifpaf
17282 (list python-memcached python-msgpack-python python-redis))
17283 (home-page "https://github.com/sdispater/cachy")
17284 (synopsis "Simple yet effective caching library")
17286 "Cachy provides a simple yet effective caching library. A simple but
17287 powerful API: thread-safety; decorator syntax; support for memcached, redis,
17288 database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.")
17289 (license license:expat)))
17291 (define-public poetry
17298 (uri (pypi-uri "poetry" version))
17301 "0rr54mvcfcv9cv6vw2122y28xvd2pwqpv2x8c8j5ayz3gwsy4rjw"))))
17302 (build-system python-build-system)
17304 `(#:tests? #f ;PyPI does not have tests
17306 (modify-phases %standard-phases
17307 (add-before 'build 'patch-setup-py
17309 (substitute* "setup.py"
17310 ;; Relax some of the requirements.
17311 (("(keyring>=21.2.0),<22.0.0" _ keyring) keyring)
17312 (("(packaging>=20.4),<21.0" _ packaging) packaging)))))))
17314 (list python-cachecontrol
17321 ; Use of deprecated version of msgpack reported upstream:
17322 ; https://github.com/python-poetry/poetry/issues/3607
17323 python-msgpack-transitional
17330 python-requests-toolbelt
17333 python-virtualenv))
17334 (home-page "https://python-poetry.org")
17335 (synopsis "Python dependency management and packaging made easy")
17336 (description "Poetry is a tool for dependency management and packaging
17337 in Python. It allows you to declare the libraries your project depends on and
17338 it will manage (install/update) them for you.")
17339 (license license:expat)))
17341 (define-public python-lark-parser
17343 (name "python-lark-parser")
17347 (uri (pypi-uri "lark-parser" version))
17350 "1kd61asrb3h9spgsj4bslfbgp8q4271sw3hblk6f2vbbblv8jxcy"))))
17351 (build-system python-build-system)
17352 (home-page "https://github.com/lark-parser/lark")
17353 (synopsis "Multi-language parser for Python")
17355 "Lark is a parser built with a focus on ergonomics, performance and
17356 resilience. Lark can parse all context-free languages. That means it is
17357 capable of parsing almost any programming language out there, and to
17358 some degree most natural languages too.")
17359 (license license:expat)))
17361 (define-public python-libcst
17363 (name "python-libcst")
17367 (uri (pypi-uri "libcst" version))
17370 "05zsc61gsd2pyb6wiyh58zczndxi6rm4d2jl94rpf5cv1fzw6ks8"))))
17371 (build-system python-build-system)
17374 (modify-phases %standard-phases
17375 (add-after 'unpack 'remove-failing-tests
17377 ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/346>.
17378 (delete-file "libcst/tests/test_fuzz.py")
17379 ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/347>.
17380 (delete-file "libcst/tests/test_pyre_integration.py")
17381 (delete-file "libcst/codemod/tests/test_codemod_cli.py")
17382 (delete-file "libcst/metadata/tests/test_full_repo_manager.py")
17383 (delete-file "libcst/metadata/tests/test_type_inference_provider.py")))
17384 (add-before 'check 'generate-test-data
17386 (invoke "python" "-m" "libcst.codegen.generate" "visitors")
17387 (invoke "python" "-m" "libcst.codegen.generate" "return_types")))
17389 (lambda* (#:key tests? #:allow-other-keys)
17391 (invoke "python" "-m" "unittest")))))))
17393 (list python-black python-isort))
17395 (list python-typing-extensions python-typing-inspect python-pyyaml))
17396 (home-page "https://github.com/Instagram/LibCST")
17397 (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python")
17399 "LibCST parses Python source code as a CST tree that keeps all
17400 formatting details (comments, whitespaces, parentheses, etc). It's useful
17401 for building automated refactoring (codemod) applications and linters.
17402 LibCST creates a compromise between an Abstract Syntax Tree (AST) and
17403 a traditional Concrete Syntax Tree (CST). By carefully reorganizing and
17404 naming node types and fields, LibCST creates a lossless CST that looks and
17405 feels like an AST.")
17406 (license (list license:expat
17407 ;; Some files unde libcst/_parser/ are under Python Software
17408 ;; Foundation license (see LICENSE file for details)
17410 ;; libcst/_add_slots.py
17413 (define-public python-libcst-minimal
17416 (inherit python-libcst)
17417 (name "python-libcst-minimal")
17418 (arguments '(#:tests? #f))
17419 (native-inputs '()))))
17421 (define-public python-typing-inspect
17423 (name "python-typing-inspect")
17427 (uri (pypi-uri "typing_inspect" version))
17430 "1dzs9a1pr23dhbvmnvms2jv7l7jk26023g5ysf0zvnq8b791s6wg"))
17431 (patches (search-patches "python-typing-inspect-fix.patch"))))
17432 (build-system python-build-system)
17434 (list python-mypy-extensions python-typing-extensions))
17435 (home-page "https://github.com/ilevkivskyi/typing_inspect")
17436 (synopsis "API for inspection of types in the Python @code{typing} module")
17438 "The @code{typing_inspect} module defines experimental API for runtime
17439 inspection of types defined in the Python standard typing module.")
17440 (license license:expat)))
17442 (define-public python-lazy-object-proxy
17444 (name "python-lazy-object-proxy")
17448 (uri (pypi-uri "lazy-object-proxy" version))
17451 "0hwh29m9wa582ramj30p4pysckdrmki1z1b8iaaxk6mpfx2kc8wp"))))
17453 (list python-setuptools-scm))
17454 (build-system python-build-system)
17455 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
17456 (synopsis "Lazy object proxy for python")
17458 "Lazy object proxy is an object that wraps a callable but defers the call
17459 until the object is actually required, and caches the result of said call.")
17460 (license license:bsd-2)))
17462 (define-public python-dnspython
17464 (name "python-dnspython")
17468 (uri (pypi-uri "dnspython" version ".zip"))
17471 "1m0xvyby8baaxp6pfm0fgq8d2pq5dd8qm8bzfbrs009jaw5pza74"))))
17472 (build-system python-build-system)
17474 `(#:tests? #f ; XXX: requires internet access
17476 (modify-phases %standard-phases
17477 (add-after 'unpack 'patch-getprotobyname-calls
17478 ;; These calls are problematic in the build environment as there is
17479 ;; no /etc/protocols. This breaks the sanity-check phase of any
17480 ;; package depnding on this one.
17482 (substitute* "dns/rdtypes/IN/WKS.py"
17483 (("socket.getprotobyname\\('tcp'\\)")
17485 (("socket.getprotobyname\\('udp'\\)")
17487 (native-inputs (list unzip))
17488 (home-page "https://www.dnspython.org")
17489 (synopsis "DNS toolkit for Python")
17491 "dnspython is a DNS toolkit for Python. It supports almost all record
17492 types. It can be used for queries, zone transfers, and dynamic updates.
17493 It supports TSIG authenticated messages and EDNS0.")
17494 (license license:expat)))
17496 (define-public python-dnspython-1.16
17498 (inherit python-dnspython)
17502 (uri (string-append "http://www.dnspython.org/kits/"
17503 version "/dnspython-" version ".tar.gz"))
17506 "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab"))))
17507 (native-inputs '())))
17509 (define-public python-py3dns
17511 (name "python-py3dns")
17516 (uri (pypi-uri "py3dns" version))
17519 "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz"))))
17520 (build-system python-build-system)
17521 ;; This package wants to read /etc/resolv.conf. We can't patch it without
17522 ;; removing functionality so we copy from Nix and "just don't build it".
17525 (modify-phases %standard-phases
17526 (add-after 'unpack 'patch-source
17528 (substitute* "setup.py"
17529 (("import DNS") "")
17530 (("DNS.__version__") (string-append "\"" ,version "\"")))
17532 #:tests? #f)) ; Also skip the tests.
17533 (home-page "https://launchpad.net/py3dns")
17534 (synopsis "Python 3 DNS library")
17535 (description "This Python 3 module provides a DNS API for looking up DNS
17536 entries from within Python 3 modules and applications. This module is a
17537 simple, lightweight implementation.")
17538 (license license:psfl)))
17540 (define-public python-email-validator
17542 (name "python-email-validator")
17545 (origin (method url-fetch)
17546 (uri (pypi-uri "email_validator" version))
17549 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
17550 (build-system python-build-system)
17553 (modify-phases %standard-phases
17554 (add-before 'build 'use-dnspython
17556 (substitute* "setup.py"
17557 (("dnspython3") "dnspython"))
17560 (list python-dnspython python-idna))
17561 (home-page "https://github.com/JoshData/python-email-validator")
17562 (synopsis "Email address validation library for Python")
17564 "This library validates email address syntax and deliverability.")
17565 (license license:cc0)))
17567 (define-public python-ukpostcodeparser
17569 (name "python-ukpostcodeparser")
17573 (uri (pypi-uri "UkPostcodeParser" version))
17576 "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk"))))
17577 (build-system python-build-system)
17580 (modify-phases %standard-phases
17582 (lambda* (#:key tests? #:allow-other-keys)
17584 ;; Tests for lowercase postcodes fail.
17585 (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k"
17586 (string-append "not test_091 "
17587 "and not test_097 "
17588 "and not test_098 "
17589 "and not test_125 "
17590 "and not test_131"))))))))
17592 (list python-pytest))
17593 (home-page "https://github.com/hamstah/ukpostcodeparser")
17594 (synopsis "UK Postcode parser for Python")
17596 "This library provides the @code{parse_uk_postcode} function for
17597 parsing UK postcodes.")
17598 (license license:expat)))
17600 (define-public python-faker
17602 (name "python-faker")
17606 (uri (pypi-uri "Faker" version))
17609 "04855dqvvi2mr739l5x3qf82rxq0a7spc8gl76k8xixmbw36328q"))))
17610 (build-system python-build-system)
17613 (modify-phases %standard-phases
17615 (lambda* (#:key tests? #:allow-other-keys)
17617 (invoke "python" "-m" "pytest" "-v")))))))
17619 (list python-freezegun
17622 python-ukpostcodeparser
17623 python-validators))
17624 (propagated-inputs (list python-dateutil))
17625 (home-page "https://github.com/joke2k/faker")
17626 (synopsis "Python package that generates fake data")
17628 "Faker is a Python package that generates fake data such as names,
17629 addresses, and phone numbers.")
17630 (license license:expat)))
17632 (define-public python-pyaml
17634 (name "python-pyaml")
17635 (version "21.10.1")
17638 (uri (pypi-uri "pyaml" version))
17641 "10w3frzqir5sbpglc9bwb8w414dsivmcvji07yxy61mz2gp9ylf6"))))
17642 (build-system python-build-system)
17644 (list python-unidecode))
17646 (list python-pyyaml))
17647 (home-page "https://github.com/mk-fg/pretty-yaml")
17648 (synopsis "YAML pretty-print library for Python")
17650 "pyaml is a PyYAML based python module to produce pretty and readable
17651 YAML-serialized data.")
17652 (license license:wtfpl2)))
17654 (define-public python-pyyaml-env-tag
17656 (name "python-pyyaml-env-tag")
17661 (uri (pypi-uri "pyyaml_env_tag" version))
17663 (base32 "1nsva88jsmwn0cb9jnrfiz4dvs9xakkpgfii7g1xwkx1pmsjc2bh"))))
17664 (build-system python-build-system)
17665 (propagated-inputs (list python-pyyaml))
17666 (home-page "https://github.com/waylan/pyyaml-env-tag")
17667 (synopsis "Custom YAML tag for environment variables")
17668 (description "This package provides a custom YAML tag for referencing
17669 environment variables in YAML files.")
17670 (license license:expat)))
17672 (define-public python-backpack
17674 (name "python-backpack")
17679 (uri (pypi-uri "backpack" version))
17682 "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1"))))
17683 (build-system python-build-system)
17685 (list python-pytest python-nose python-toml))
17687 (list python-simplejson))
17688 (home-page "https://github.com/sdispater/backpack")
17689 (synopsis "Utilities for working with Python collections")
17690 (description "Backpack provides some useful utilities for working with
17691 collections of data.")
17692 (license license:expat)))
17694 (define-public python-prompt-toolkit
17696 (name "python-prompt-toolkit")
17701 (uri (pypi-uri "prompt_toolkit" version))
17703 (base32 "19vf5cahp3imdpwhgvk55g3dvqmc6ga175r4vkq79kffx1h0yr5x"))))
17704 (build-system python-build-system)
17707 (modify-phases %standard-phases
17709 (lambda* (#:key tests? #:allow-other-keys)
17711 ;; HOME is needed for the test
17712 ;; "test_pathcompleter_can_expanduser".
17713 (setenv "HOME" "/tmp")
17714 (invoke "pytest" "-vv")))))))
17716 (list python-wcwidth))
17718 (list python-pytest))
17719 (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit")
17720 (synopsis "Library for building command line interfaces in Python")
17722 "Prompt-Toolkit is a library for building interactive command line
17723 interfaces in Python. It's like GNU Readline but it also features syntax
17724 highlighting while typing, out-of-the-box multi-line input editing, advanced
17725 code completion, incremental search, support for Chinese double-width
17726 characters, mouse support, and auto suggestions.")
17727 (license license:bsd-3)))
17729 (define-public python-proselint
17731 (name "python-proselint")
17736 (uri (pypi-uri "proselint" version))
17739 "0n1ahnq2mkgvh94g05xhc3l1fs3hh0ycskqlqivhhfdaq8ybdlkx"))))
17740 (build-system python-build-system)
17744 (modify-phases %standard-phases
17745 (add-after 'unpack 'set-home-directory
17747 (setenv "HOME" "/tmp"))))))
17749 (list python-click python-future python-six))
17750 (home-page "https://github.com/amperser/proselint")
17751 (synopsis "Linter for prose")
17752 (description "@code{python-proselint} is a linter for English prose, that
17753 scans through a file and detects issues.")
17754 (license license:bsd-3)))
17756 (define-public python-jedi
17758 (name "python-jedi")
17763 (uri (git-reference
17764 (url "https://github.com/davidhalter/jedi")
17765 (commit (string-append "v" version))
17766 (recursive? #true)))
17767 (file-name (git-file-name name version))
17770 "07drmi3ai49jw5n23ibkambcgijqcw073ihypjgxfnks5lv4yqy1"))
17771 (modules '((guix build utils)))
17773 ;; Adjust comprehension syntax for Python > 3.8.
17774 ;; From <https://github.com/davidhalter/jedi/issues/1824>.
17775 '(substitute* "test/completion/lambdas.py"
17777 "if (lambda: 3)")))))
17778 (build-system python-build-system)
17781 (modify-phases %standard-phases
17782 (add-after 'unpack 'fix-completion-test
17784 ;; This resolves a failure in the 'test_completion' test (see:
17785 ;; https://github.com/davidhalter/jedi/issues/1824).
17786 ;; TODO: Remove after a new release is made (currently: 0.18.1).
17787 (substitute* "test/completion/lambdas.py"
17788 (("\\[a for a in \\[1,2\\] if lambda: 3\\]\\[0\\]")
17789 "[a for a in [1,2] if (lambda: 3)][0]"))))
17791 (lambda* (#:key tests? #:allow-other-keys)
17793 (setenv "HOME" "/tmp")
17794 (invoke "python" "-m" "pytest" "-vv")))))))
17796 (list python-colorama python-docopt python-pytest))
17798 (list python-parso))
17799 (home-page "https://github.com/davidhalter/jedi")
17800 (synopsis "Autocompletion and static analysis library for Python")
17802 "Jedi is a static analysis tool for Python that can be used in Integrated
17803 Development Environments (@dfn{IDE}s) and text editors. It understands Python
17804 on a deeper level than many other static analysis frameworks for Python.
17806 Jedi understands docstrings and you can use Jedi autocompletion in your REPL
17808 (license license:expat)))
17810 (define-public ptpython
17816 (uri (pypi-uri "ptpython" version))
17819 "1mjfyr5gwrs1qbizh6nki0nv6hahmg8mhhqxi1qc6pfa4znlrzga"))))
17820 (build-system python-build-system)
17822 `(#:tests? #f)) ;there are no tests
17824 (list python-appdirs python-black python-jedi python-prompt-toolkit
17826 (home-page "https://github.com/jonathanslenders/ptpython")
17827 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
17829 "ptpython is a Python read-eval-print loop with IDE-like features.
17830 It supports syntax highlighting, multiline editing, autocompletion, mouse,
17831 color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
17833 (license license:bsd-3)))
17835 (define-public python-easyprocess
17837 (name "python-easyprocess")
17842 (uri (pypi-uri "EasyProcess" version))
17844 (base32 "115rzzr0hx4af4m6krf7dxn8851n4l8jfxahjzjc2r0zq2m8v57v"))))
17845 (build-system python-build-system)
17847 ;; Tests require pyvirtualdisplay, which requires this package.
17849 (home-page "https://github.com/ponty/easyprocess")
17850 (synopsis "Python subprocess interface")
17852 "@code{easyprocess} is an easy to use Python subprocess interface.")
17853 (license license:bsd-3)))
17855 (define-public python-entrypoint2
17857 (name "python-entrypoint2")
17862 (uri (pypi-uri "entrypoint2" version))
17864 (base32 "1qyxq54r2fbh09ab5sffbxajy8arbk6czxz5lq3ccr9qrypw6w27"))))
17865 (build-system python-build-system)
17867 `(#:test-target "pytest"))
17869 (list python-easyprocess python-pytest python-pytest-runner))
17870 (home-page "https://github.com/ponty/entrypoint2")
17871 (synopsis "Command-line interface for Python modules")
17873 "@code{entrypoint2} is an easy to use command-line interface for Python
17874 modules based on @code{argparse}. It translates function signature and
17875 documentation to argparse configuration.")
17876 (license license:bsd-3)))
17878 (define-public python-pyvirtualdisplay
17880 (name "python-pyvirtualdisplay")
17885 (uri (pypi-uri "PyVirtualDisplay" version))
17887 (base32 "1z2fzgiw3xv3m1d9ppn53g07zhnpj05addiz56sm6ircxibnjk4x"))))
17888 (build-system python-build-system)
17890 ;; Tests fail with:
17891 ;; FileNotFoundError: [Errno 2] No such file or directory: 'Xvnc'.
17894 (list python-entrypoint2 python-psutil python-pytest
17895 python-pytest-runner))
17897 (list python-easyprocess python-pillow))
17898 (home-page "https://github.com/ponty/pyvirtualdisplay")
17899 (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc")
17901 "@code{pyvirtualdisplay} is a Python wrapper for Xvfb, Xephyr and Xvnc.")
17902 (license license:bsd-3)))
17904 (define-public python-stem
17906 (name "python-stem")
17911 (uri (pypi-uri "stem" version))
17914 "1hk8alc0r4m669ggngdfvryndd0fbx0w62sclcmg55af4ak8xd50"))))
17915 (build-system python-build-system)
17918 (modify-phases %standard-phases
17919 (add-after 'unpack 'fix-tests
17920 ;; See https://github.com/torproject/stem/issues/56
17922 (substitute* "run_tests.py"
17923 (("test\\.task\\.MOCK_VERSION,")
17927 (invoke "./run_tests.py" "--unit")
17930 (list python-mock python-pycodestyle python-pyflakes))
17931 (home-page "https://stem.torproject.org/")
17933 "Python controller library that allows applications to interact with Tor")
17935 "Stem is a Python controller library for Tor. With it you can use Tor's
17936 control protocol to script against the Tor process and read descriptor data
17937 relays publish about themselves.")
17938 (license license:lgpl3)))
17940 (define-public python-pyserial
17942 (name "python-pyserial")
17947 (uri (pypi-uri "pyserial" version))
17950 "1nyd4m4mnrz8scbfqn4zpq8gnbl4x42w5zz62vcgpzqd2waf0xrw"))))
17951 (build-system python-build-system)
17953 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
17955 ;; (modify-phases %standard-phases
17958 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
17960 "https://github.com/pyserial/pyserial")
17961 (synopsis "Python Serial Port Bindings")
17962 (description "@code{pyserial} provide serial port bindings for Python. It
17963 supports different byte sizes, stop bits, parity and flow control with RTS/CTS
17964 and/or Xon/Xoff. The port is accessed in RAW mode.")
17965 (license license:bsd-3)))
17967 (define-public python-pyserial-asyncio
17969 (name "python-pyserial-asyncio")
17974 (uri (pypi-uri "pyserial-asyncio" version))
17976 (base32 "0cwd2cjz859v6jrm3y6hikfqjyhyfj5vhfjb8vvflvl6791yah8n"))))
17977 (build-system python-build-system)
17978 (propagated-inputs (list python-pyserial))
17979 (home-page "https://github.com/pyserial/pyserial-asyncio")
17980 (synopsis "Pyserial asynchronous I/O extension")
17981 (description "This package extends Pyserial with asynchronous I/O
17983 (license license:bsd-3)))
17985 (define-public python-pymodbus
17987 (name "python-pymodbus")
17992 (uri (git-reference
17993 (url "https://github.com/riptideio/pymodbus")
17994 (commit (string-append "v" version))))
17995 (file-name (git-file-name name version))
17998 "0kjjrx7xrlx0pf3y67hhr4xvqrly3xzmvf6ic5as61m6z19m7zd5"))))
17999 (build-system python-build-system)
18001 `(#:phases (modify-phases %standard-phases
18002 (add-after 'unpack 'disable-problematic-tests
18004 ;; The following test modules rely on Python's own
18005 ;; 'test' module, which is not distributed in the Python
18006 ;; package of Guix.
18007 (delete-file "test/test_client_async_asyncio.py")
18008 (delete-file "test/test_client_sync_diag.py")
18009 ;; The following test module requires the asynctest
18010 ;; library, abandoned without support for Python 3.9+
18012 ;; https://github.com/riptideio/pymodbus/issues/681).
18013 (delete-file "test/test_server_asyncio.py")))
18015 (lambda* (#:key tests? #:allow-other-keys)
18017 (invoke "python" "-m" "pytest")))))))
18026 (list python-pyserial
18031 python-prompt-toolkit
18033 python-pyserial-asyncio))
18034 (home-page "https://github.com/riptideio/pymodbus/")
18035 (synopsis "Modbus protocol stack in Python")
18036 (description "Pymodbus is a full Modbus protocol implementation using
18037 @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous
18038 communications core. It includes the following @emph{client} features:
18040 @item full read/write protocol on discrete and register
18041 @item most of the extended protocol (diagnostic/file/pipe/setting/information)
18042 @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
18043 @item asynchronous and synchronous versions
18044 @item payload builder/decoder utilities
18045 @item pymodbus read eval print loop (REPL).
18047 It also includes the following @emph{server} features:
18049 @item can function as a fully implemented Modbus server
18050 @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
18051 @item asynchronous and synchronous versions
18052 @item full server control context (device information, counters, etc)
18053 @item a number of backing contexts (database, redis, sqlite, a slave device).
18055 (license license:bsd-3)))
18057 (define-public python-exodriver
18059 (name "python-exodriver")
18063 (uri (git-reference
18064 (url "https://github.com/labjack/exodriver")
18065 (commit (string-append "v" version))))
18066 (file-name (git-file-name name version))
18069 "1ikjz8147p14s814yabdq821y691klnr2yg54zgsymcc97kvwp2q"))))
18070 (outputs (list "out"
18071 "doc")) ;544 KiB of examples
18072 (build-system gnu-build-system)
18075 #:tests? #f ;no test suite
18076 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
18077 (string-append "PREFIX=" #$output)
18081 #~(modify-phases %standard-phases
18082 (delete 'configure)
18084 (lambda* (#:key make-flags #:allow-other-keys #:rest args)
18085 (with-directory-excursion "liblabjackusb"
18086 (apply (assoc-ref %standard-phases 'build)
18087 `(,@args #:make-flags ,make-flags)))))
18089 (lambda* (#:key make-flags #:allow-other-keys #:rest args)
18090 (with-directory-excursion "liblabjackusb"
18091 (apply (assoc-ref %standard-phases 'install)
18092 `(,@args #:make-flags ,make-flags)))
18093 ;; Install udev rules.
18094 (install-file "90-labjack.rules"
18095 (string-append #$output "/lib/udev/rules.d"))
18096 ;; Install examples.
18097 (let ((doc (string-append #$output:doc "/share/doc/" #$name)))
18099 (copy-recursively "examples"
18100 (string-append doc "/examples"))))))))
18101 (inputs (list libusb))
18102 (home-page "https://github.com/labjack/exodriver")
18103 (synopsis "USB driver for LabJack data acquisition instruments")
18104 (description "This package provides @code{liblabjackusb}, a USB library for low-level
18105 communication with the U3, U6, UE9, Digit, T4 and T7 LabJack data acquisition
18106 instruments. A udev rule is also included to allow unprivileged users to
18107 communicate with the instruments via USB.")
18108 (license license:expat))) ;see README
18110 (define-public python-labjack
18112 (name "python-labjack")
18116 (uri (pypi-uri "LabJackPython" version))
18119 "013bjqdi05vlbdqprr6kqi8gs4qhqc7rnyp1klw8k6fng77rpdzz"))))
18120 (build-system python-build-system)
18123 #:tests? #f ;no test suite
18125 #~(modify-phases %standard-phases
18126 (add-after 'unpack 'patch-liblabjackusb.so
18127 (lambda* (#:key inputs #:allow-other-keys)
18128 (substitute* (find-files "." "\\.py$")
18129 (("ctypes.CDLL\\(\"liblabjackusb.so\"")
18130 (format #f "ctypes.CDLL(~s"
18131 (search-input-file inputs
18132 "lib/liblabjackusb.so")))))))))
18133 ;; exodriver is provided as a regular input, as only its shared object is
18134 ;; used, not its Python API.
18135 (inputs (list python-exodriver))
18136 (home-page "https://labjack.com/support/software/examples/ud/labjackpython")
18137 (synopsis "Python library for LabJack U3, U6, UE9 and U12")
18138 (description "This Python library allows communicating with the U3, U6,
18139 UE9 and U12 LabJack data acquisition (DAQ) modules.")
18140 (license license:expat))) ;see setup.py
18142 (define-public python-kivy-garden
18144 (name "python-kivy-garden")
18149 (uri (pypi-uri "kivy-garden" version))
18151 (base32 "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2"))))
18152 (build-system python-build-system)
18154 '(#:phases (modify-phases %standard-phases
18155 (add-after 'install 'remove-bat-file
18156 (lambda* (#:key outputs #:allow-other-keys)
18157 (let ((out (assoc-ref outputs "out")))
18159 (string-append out "/bin/garden.bat"))))))))
18161 (list python-requests))
18162 (home-page "https://github.com/kivy-garden/garden")
18163 (synopsis "Garden tool for Kivy flowers")
18165 "This package provides the @command{garden} command to install packages
18166 for Kivy, the multitouch application platform.")
18167 (license license:expat)))
18169 (define-public python-kivy
18171 (name "python-kivy")
18176 (uri (pypi-uri "Kivy" version))
18177 (file-name (string-append name "-" version ".tar.gz"))
18180 "1cq4djfn7h8560mvz94dydsldg2jpp5w9rby7nafgmbh7fxg65is"))))
18181 (build-system python-build-system)
18183 `(#:tests? #f ; Tests require many optional packages
18185 (modify-phases %standard-phases
18186 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
18187 (lambda* (#:key inputs #:allow-other-keys)
18188 (setenv "KIVY_SDL2_PATH"
18189 (search-input-directory inputs "/include/SDL2"))))
18190 (add-before 'build 'set-home
18192 ;; 'kivy/__init__.py' wants to create $HOME/.kivy.
18193 (setenv "HOME" (getcwd)))))))
18195 (list pkg-config python-cython))
18199 (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
18203 (home-page "https://kivy.org")
18204 (synopsis "Multitouch application framework")
18206 "Kivy is a software library for rapid development of hardware-accelerated
18207 multitouch applications.")
18208 (license license:expat)))
18210 (define-public python-kivymd
18212 (name "python-kivymd")
18213 (version "0.104.2")
18217 (uri (pypi-uri "kivymd" version))
18219 (base32 "04lwy6j0agrdwa4a6dl6qs97nx9ysmscmm8psvdzjpyj8aa1zg4p"))))
18220 (build-system python-build-system)
18222 `(#:tests? #f ;tests require network
18224 (modify-phases %standard-phases
18225 (add-before 'sanity-check 'set-home
18227 ;; 'kivy/__init__.py' wants to create $HOME/.kivy.
18228 (setenv "HOME" (getcwd)))))))
18229 (native-inputs (list python-docutils))
18231 (list python-kivy python-pillow python-pygments python-kivy-garden))
18232 (home-page "https://github.com/kivymd/KivyMD")
18233 (synopsis "Material Design compliant widgets for use with Kivy")
18235 "This package provides Kivy widgets that approximate Google's Material
18236 Design spec without sacrificing ease of use or application performance.")
18237 (license license:expat)))
18239 (define-public python-asynckivy
18241 (name "python-asynckivy")
18247 (pypi-uri "asynckivy" version))
18249 (base32 "0ivjvch8yn3k1ybfp7c1nm8mhc0ymg7d04mq54lly7yjvg0jvcni"))))
18250 (build-system python-build-system)
18253 (modify-phases %standard-phases
18254 (add-before 'check 'set-home
18256 ;; 'kivy/__init__.py' wants to create $HOME/.kivy.
18257 (setenv "HOME" (getcwd)))))))
18258 (propagated-inputs (list python-kivy python-asyncgui))
18259 (home-page "https://github.com/gottadiveintopython/asynckivy")
18260 (synopsis "Async library for Kivy")
18262 "This package provides async versions of Kivy functions to avoid the
18263 callback-heavy mode of interaction typical in some Kivy applications.")
18264 (license license:expat)))
18266 (define-public python-asyncgui
18268 (name "python-asyncgui")
18272 (uri (pypi-uri "asyncgui" version))
18275 "0614130afg2qc1qq4p82piskvvx6lpjl4nlsakbjzdyd78xywnb7"))))
18276 (build-system python-build-system)
18277 (home-page "https://github.com/gottadiveintopython/asyncgui")
18278 (synopsis "Enables async/await without an event loop")
18279 (description "This package provides support for async/await applications
18280 without requiring an event loop, useful for creative responsive GUIs.")
18281 (license license:expat)))
18283 (define-public python-binaryornot
18285 (name "python-binaryornot")
18289 (uri (pypi-uri "binaryornot" version))
18292 "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m"))))
18293 (build-system python-build-system)
18296 (modify-phases %standard-phases
18297 (add-after 'unpack 'patch-tests
18299 ;; TypeError: binary() got an unexpected keyword argument
18301 (substitute* "tests/test_check.py"
18302 (("average_size=512") ""))
18305 (list python-chardet python-hypothesis))
18306 (home-page "https://github.com/audreyr/binaryornot")
18307 (synopsis "Package to check if a file is binary or text")
18308 (description "Ultra-lightweight pure Python package to check if a file is
18310 (license license:bsd-3)))
18312 (define-public binwalk
18319 (uri (git-reference
18320 (url "https://github.com/ReFirmLabs/binwalk")
18321 (commit (string-append "v" version))))
18322 (file-name (git-file-name name version))
18324 (base32 "0phqyqv34vhh80dgipiggs4n3iq2vfjk9ywx2c5d8g61vzgbd2g8"))
18325 (modules '((guix build utils)))
18328 (for-each delete-file
18329 (list "testing/tests/input-vectors/firmware.zip"
18330 "testing/tests/test_firmware_zip.py"))))))
18331 (build-system python-build-system)
18334 (modify-phases %standard-phases
18335 (add-before 'check 'set-home
18337 (setenv "HOME" ""))))))
18339 (list python-coverage python-nose))
18340 (home-page "https://github.com/ReFirmLabs/binwalk")
18341 (synopsis "Firmware analysis tool")
18342 (description "Binwalk is a tool for analyzing, reverse engineering, and
18343 extracting firmware images")
18344 (license license:expat)))
18346 (define-public python-binwalk
18347 (deprecated-package "python-binwalk" binwalk))
18349 (define-public python-bson
18351 (name "python-bson")
18355 (method git-fetch) ;for tests
18356 (uri (git-reference
18357 (url "https://github.com/py-bson/bson")
18359 (file-name (git-file-name name version))
18362 "1vpy4rsvm3hhawvbg9rbw4j36ck8qylkhm8cjy0q6imvinkd2als"))))
18363 (build-system python-build-system)
18366 (modify-phases %standard-phases
18368 (lambda* (#:key tests? #:allow-other-keys)
18370 (invoke "./test.py")))))))
18371 (propagated-inputs (list python-dateutil python-six))
18372 (home-page "https://github.com/py-bson/bson")
18373 (synopsis "BSON (Binary JSON) codec for Python")
18374 (description "@code{bson} is a Python library implementing a BSON (Binary
18376 (license license:asl2.0)))
18378 (define-public python-nltk
18380 (name "python-nltk")
18384 (uri (pypi-uri "nltk" version ".zip"))
18387 "1sq32lwgij9h8rsksymnxxr7bqfw3vgx5ijw4azbj6k2xnmmdmap"))))
18388 (build-system python-build-system)
18390 '(;; The tests require some extra resources to be downloaded.
18391 ;; TODO Try packaging these resources.
18394 (list python-click python-joblib python-regex python-tqdm))
18397 (home-page "http://nltk.org/")
18398 (synopsis "Natural Language Toolkit")
18399 (description "It provides interfaces to over 50 corpora and lexical
18400 resources such as WordNet, along with a suite of text processing libraries
18401 for classification, tokenization, stemming, tagging, parsing, and semantic
18402 reasoning, wrappers for natural language processing libraries.")
18403 (license license:asl2.0)))
18405 ;; Versions >=3.5 breaks backward-compatibility,
18406 ;; so we keep version 3.4.x around for a while.
18407 (define-public python-nltk-3.4
18409 (inherit python-nltk)
18414 (uri (pypi-uri "nltk" version ".zip"))
18416 (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y"))))
18417 (propagated-inputs (list python-six))))
18419 (define-public python-pymongo
18421 (name "python-pymongo")
18425 (uri (pypi-uri "pymongo" version))
18428 "1m9hc2a4kgg10xy3g5x00z4a7rrk9s0rbf5qfypwnhq0kdfg5f6p"))))
18429 (build-system python-build-system)
18431 (list python-certifi))
18432 (home-page "https://github.com/mongodb/mongo-python-driver")
18433 (synopsis "Python driver for MongoDB")
18434 (description "Python driver for MongoDB.")
18435 (license license:asl2.0)))
18437 (define-public python-consul
18439 (name "python-consul")
18444 (uri (pypi-uri "python-consul" version))
18447 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
18448 (build-system python-build-system)
18450 '(#:tests? #f)) ; The tests are not distributed
18452 (list python-requests python-six))
18453 (home-page "https://github.com/cablehead/python-consul")
18454 (synopsis "Python client for Consul")
18456 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
18457 discovery, monitoring and configuration.")
18458 (license license:expat)))
18460 (define-public python-schematics
18462 (name "python-schematics")
18467 (uri (git-reference
18468 (url "https://github.com/schematics/schematics")
18469 (commit (string-append "v" version))))
18470 (file-name (git-file-name name version))
18472 (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd"))))
18473 (build-system python-build-system)
18477 ;; The tests require a bunch of not very nice packages with fixed
18478 ;; version requirements (e.g. python-coveralls).
18480 (home-page "https://github.com/schematics/schematics")
18481 (synopsis "Python Data Structures for Humans")
18482 (description "Python Data Structures for Humans.")
18483 (license license:bsd-3)))
18485 (define-public python-odfpy
18487 (name "python-odfpy")
18491 (uri (pypi-uri "odfpy" version))
18494 "1v1qqk9p12qla85yscq2g413l3qasn6yr4ncyc934465b5p6lxnv"))))
18497 (modify-phases %standard-phases
18500 (invoke "pytest" "-vv"))))))
18501 (build-system python-build-system)
18503 (list python-pytest))
18505 (list python-defusedxml))
18506 (home-page "https://github.com/eea/odfpy")
18507 (synopsis "Python API and tools to manipulate OpenDocument files")
18508 (description "Collection of libraries and utility programs written in
18509 Python to manipulate OpenDocument 1.2 files.")
18511 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
18512 ;; number of files with other licenses.
18513 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
18515 (define-public python-natsort
18517 (name "python-natsort")
18521 (uri (pypi-uri "natsort" version))
18524 "00y49bfsi7rrsd1s42gc2w95a6arl9ipdsx2493hr0v54fj07ih0"))))
18525 (build-system python-build-system)
18528 (modify-phases %standard-phases
18529 (add-after 'unpack 'remove-test-hypothesis-deadlines
18531 (substitute* "tests/test_utils.py"
18532 (("from hypothesis import given")
18533 "from hypothesis import given, settings")
18534 (("( +)@given" all spaces)
18535 (string-append spaces "@settings(deadline=None)\n" all)))))
18537 (lambda* (#:key tests? #:allow-other-keys)
18539 (invoke "pytest" "-v")))))))
18541 (list python-hypothesis python-pytest-cov python-pytest-mock
18543 (propagated-inputs ; TODO: Add python-fastnumbers.
18544 (list python-pyicu))
18545 (home-page "https://github.com/SethMMorton/natsort")
18546 (synopsis "Natural sorting for python and shell")
18548 "Natsort lets you apply natural sorting on lists instead of
18549 lexicographical. If you use the built-in @code{sorted} method in python on a
18550 list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, @code{a10}]},
18551 it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, @code{a4},
18552 @code{a9}]}. Natsort provides a function @code{natsorted} that identifies
18553 numbers and sorts them separately from strings. It can also sort version
18554 numbers, real numbers, mixed types and more, and comes with a shell command
18555 @command{natsort} that exposes this functionality in the command line.")
18556 (license license:expat)))
18558 (define-public glances
18565 (uri (pypi-uri "Glances" version))
18567 (base32 "020vb38qrb0m3sdr7xjr43cmcfxpnyg4hmb97wgxsa9zvwsjwa5x"))
18568 (modules '((guix build utils)))
18571 ;; Glances phones PyPI for weekly update checks by default.
18572 ;; Disable these. The user can re-enable them if desired.
18573 (substitute* "glances/outdated.py"
18574 (("^(.*)self\\.load_config\\(config\\)\n" line indentation)
18575 (string-append indentation
18576 "self.args.disable_check_update = True\n"
18579 (build-system python-build-system)
18581 (list python-future python-psutil))
18582 (home-page "https://github.com/nicolargo/glances")
18583 (synopsis "Cross-platform curses-based monitoring tool")
18585 "Glances is a curses-based monitoring tool for a wide variety of platforms.
18586 Glances uses the PsUtil library to get information from your system. It
18587 monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
18588 (license license:lgpl3+)))
18590 (define-public python-graphql-core
18592 (name "python-graphql-core")
18597 (uri (pypi-uri "graphql-core" version))
18600 "0fjv5w2wvgdr8gb27v241bavliipyir9fdz48rsgc3xapm644mn0"))))
18601 (build-system python-build-system)
18603 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
18605 (modify-phases %standard-phases
18606 (add-after 'unpack 'patch-hardcoded-version
18607 (lambda _ (substitute*
18609 (("'gevent==1.1rc1'") "'gevent'"))
18612 (list python-gevent python-mock python-pytest-mock))
18614 (list python-promise python-six))
18615 (home-page "https://github.com/graphql-python/graphql-core")
18616 (synopsis "GraphQL implementation for Python")
18618 "GraphQL implementation for Python. GraphQL is a data query language and
18619 runtime designed and used to request and deliver data to mobile and web apps.
18620 This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
18622 (license license:expat)))
18624 (define-public python-graphql-relay
18626 (name "python-graphql-relay")
18631 (uri (pypi-uri "graphql-relay" version))
18634 "1d70vwam9gjhx7fqzsa03x7lc6ivcqki5r9pk8m7rslmb7pagmbh"))))
18635 (build-system python-build-system)
18638 (modify-phases %standard-phases
18640 (lambda* (#:key tests? #:allow-other-keys)
18642 (invoke "pytest" "tests")))))))
18646 python-pytest-asyncio))
18648 (list python-graphql-core))
18649 (home-page "https://github.com/graphql-python/graphql-relay-py")
18650 (synopsis "Relay implementation for Python")
18652 "This is a library to allow the easy creation of Relay-compliant servers
18653 using the GraphQL Python reference implementation of a GraphQL server. It
18654 should be noted that the code is a exact port of the original
18655 @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
18657 (license license:expat)))
18659 (define-public python-graphene
18661 (name "python-graphene")
18666 (uri (pypi-uri "graphene" version))
18669 "08m1n2ydk48c18cvl8474v3pwwacjl1vgq61m9qs00122mp0cj5g"))))
18670 (build-system python-build-system)
18672 (list python-graphql-core python-graphql-relay python-aniso8601
18673 python-promise python-six))
18675 `(#:tests? #f)) ; no tests/ in the PyPI tarball
18676 (home-page "https://graphene-python.org/")
18677 (synopsis "GraphQL Framework for Python")
18679 "Graphene is a Python library for building GraphQL schemas/types.
18680 A GraphQL schema describes your data model, and provides a GraphQL server
18681 with an associated set of resolve methods that know how to fetch data.")
18682 (license license:expat)))
18684 (define-public python-random2
18686 (name "python-random2")
18690 (uri (pypi-uri "random2" version ".zip"))
18693 "01y0s4747plsx8fdnxy0nz83dp69naddz58m81r9h0s1qfm31b9l"))
18695 (search-patches "python-random2-getrandbits-test.patch"))))
18696 (build-system python-build-system)
18697 (native-inputs (list unzip))
18698 (home-page "http://pypi.python.org/pypi/random2")
18699 (synopsis "Python 3 version of the Python 2 @code{random} module")
18701 "This package provides a Python 3 ported version of Python 2.7’s
18702 @code{random} module. It has also been back-ported to work in Python 2.6.
18704 In Python 3, the implementation of @code{randrange()} was changed, so that
18705 even with the same seed you get different sequences in Python 2 and 3.
18707 This package closes that gap, allowing stable random number generation
18708 between the different Python versions.")
18709 (license license:psfl)))
18711 (define-public python-snowballstemmer
18713 (name "python-snowballstemmer")
18717 (uri (pypi-uri "snowballstemmer" version))
18720 "0ligk61idlz8kkgd5hpip5whm172riwglb6xydii7h62yhysqfyz"))))
18721 (build-system python-build-system)
18723 `(;; No tests exist
18725 (home-page "https://github.com/shibukawa/snowball_py")
18726 (synopsis "Snowball stemming library collection for Python")
18727 (description "This package provides 16 word stemmer algorithms generated
18728 from Snowball algorithms. It includes the 15 original ones plus the Poerter
18730 (license license:bsd-3)))
18732 (define-public python-setproctitle
18734 (name "python-setproctitle")
18739 (uri (pypi-uri "setproctitle" version))
18742 "1zbp6kyzfbrmbh9j3idai0mnpa28zn5db3k5l07jc3c3gj89gyxr"))))
18743 (build-system python-build-system)
18746 (modify-phases %standard-phases
18748 (lambda* (#:key tests? #:allow-other-keys)
18749 (setenv "PYTHON" (or (which "python3") (which "python")))
18750 (setenv "PYCONFIG" (if (which "python3-config")
18751 "python3-config --embed"
18753 (substitute* "tests/conftest.py"
18756 (invoke "pytest" "tests/")))))))
18758 (list procps python-pytest)) ; required for tests
18759 (home-page "https://github.com/dvarrazzo/py-setproctitle")
18761 "Setproctitle implementation for Python to customize the process title")
18762 (description "The library allows a process to change its title (as displayed
18763 by system tools such as @code{ps} and @code{top}).
18765 Changing the title is mostly useful in multi-process systems, for example when a
18766 master process is forked: changing the children's title allows identifying the
18767 task each process is busy with. The technique is used by PostgreSQL and the
18768 OpenSSH Server for example.")
18769 (license license:bsd-3)))
18771 (define-public python-validictory
18773 (name "python-validictory")
18778 (uri (pypi-uri "validictory" version))
18781 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
18782 (build-system python-build-system)
18785 (modify-phases %standard-phases
18786 (add-after 'unpack 'bootstrap
18787 ;; Move the tests out of the package directory to avoid
18790 (rename-file "validictory/tests" "tests")
18791 (delete-file "tests/__init__.py")))
18794 (invoke "py.test" "-vv" ))))))
18796 (list python-pytest))
18798 "https://github.com/jamesturk/validictory")
18799 (synopsis "General purpose Python data validator")
18800 (description "It allows validation of arbitrary Python data structures.
18802 The schema format is based on the JSON Schema
18803 proposal (http://json-schema.org), so combined with json the library is also
18804 useful as a validator for JSON data.")
18805 (license license:expat)))
18807 (define-public python-pyelftools
18809 (name "python-pyelftools")
18811 (home-page "https://github.com/eliben/pyelftools")
18815 (uri (git-reference (url home-page)
18816 (commit (string-append "v" version))))
18817 (file-name (git-file-name name version))
18819 (base32 "1z4fx39c9rds0bd4d2fjjq7n05b1nfxl36pmy523x8knm38l4gpr"))
18821 ;; Delete bundled readelf executable.
18822 '(delete-file "test/external_tools/readelf"))))
18823 (build-system python-build-system)
18825 '(#:phases (modify-phases %standard-phases
18827 (lambda* (#:key tests? #:allow-other-keys)
18829 ;; Taken from tox.ini.
18830 (invoke "python" "test/run_all_unittests.py")
18831 (invoke "python" "test/run_examples_test.py")
18832 (invoke "python" "test/run_readelf_tests.py")))))))
18834 "Analyze binary and library file information")
18835 (description "This Python library provides interfaces for parsing and
18836 analyzing two binary and library file formats ; the Executable and Linking
18837 Format (ELF), and debugging information in the Debugging With Attributed
18838 Record Format (DWARF).")
18839 (license license:public-domain)))
18841 (define-public python-pefile
18843 (name "python-pefile")
18844 (version "2022.5.30")
18847 (uri (git-reference
18848 (url "https://github.com/erocarrera/pefile")
18849 (commit (string-append "v" version))))
18850 (file-name (git-file-name name version))
18853 "1qj90a0s2gd5hn2zggypqc1077inid5dcl1fp5973b04kf2b9z8a"))))
18854 (build-system python-build-system)
18855 (propagated-inputs (list python-future))
18856 (home-page "https://github.com/erocarrera/pefile")
18857 (synopsis "Portable Executable (PE) file parser")
18858 (description "This python library provides interfaces for parsing and
18859 working with Portable Executable (PE) files. It makes to most information
18860 from the header, as well as section details and data available.")
18861 (license license:expat)))
18863 (define-public python-pyev
18865 (name "python-pyev")
18870 (uri (pypi-uri "pyev" version))
18873 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
18874 (build-system python-build-system)
18876 `(#:tests? #f ; no test suite
18878 (modify-phases %standard-phases
18879 (add-after 'unpack 'patch
18880 (lambda* (#:key inputs #:allow-other-keys)
18881 (let ((libev (search-input-file inputs "/lib/libev.so.4")))
18882 (substitute* "setup.py"
18883 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
18884 (string-append "libev_dll_name = \"" libev "\"")))))))))
18887 (home-page "https://github.com/gabrielfalcao/pyev")
18888 (synopsis "Python libev interface")
18889 (description "Pyev provides a Python interface to libev.")
18890 (license license:gpl3)))
18892 (define-public python-imagesize
18894 (name "python-imagesize")
18899 (uri (pypi-uri "imagesize" version))
18902 "1cd24x0vqbd6c8ym1n21qc0aj54mfb7rzdqglmwk9xxixajbbxmi"))))
18903 (build-system python-build-system)
18904 (home-page "https://github.com/shibukawa/imagesize_py")
18905 (synopsis "Gets image size of files in various formats in Python")
18907 "This package allows determination of image size from
18908 PNG, JPEG, JPEG2000 and GIF files in pure Python.")
18909 (license license:expat)))
18911 (define-public python-termstyle
18913 (name "python-termstyle")
18918 (uri (pypi-uri "termstyle" version))
18921 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
18922 (build-system python-build-system)
18925 (modify-phases %standard-phases
18928 (invoke "python" "test3.py"))))))
18929 (home-page "https://github.com/gfxmonk/termstyle")
18930 (synopsis "Console text coloring for Python")
18931 (description "This package provides console text coloring for Python.")
18932 (license license:bsd-3)))
18934 (define-public python-argcomplete
18936 (name "python-argcomplete")
18941 (uri (pypi-uri "argcomplete" version))
18944 "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss"))
18945 (patches (search-patches "python-argcomplete-1.11.1-fish31.patch"))))
18946 (build-system python-build-system)
18948 (list python-coverage
18954 bash)) ;full Bash for 'test_file_completion'
18955 (home-page "https://github.com/kislyuk/argcomplete")
18956 (synopsis "Shell tab completion for Python argparse")
18957 (description "argcomplete provides extensible command line tab completion
18958 of arguments and options for Python scripts using @code{argparse}. It's
18959 particularly useful for programs with many options or sub-parsers that can
18960 dynamically suggest completions ; for example, when browsing resources over the
18962 (license license:asl2.0)))
18964 (define-public python-csscompressor
18966 (name "python-csscompressor")
18971 (uri (pypi-uri "csscompressor" version))
18974 "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg"))))
18975 (build-system python-build-system)
18978 (modify-phases %standard-phases
18981 (invoke "py.test"))))))
18983 (list python-pytest))
18984 (home-page "https://github.com/sprymix/csscompressor")
18985 (synopsis "Python port of YUI CSS Compressor")
18987 "This package provides a python port of YUI CSS Compressor.")
18988 (license license:bsd-3)))
18990 (define-public python-rcssmin
18992 (name "python-rcssmin")
18997 (uri (pypi-uri "rcssmin" version))
19000 "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya"))))
19001 (build-system python-build-system)
19004 (modify-phases %standard-phases
19007 (invoke "python" "run_tests.py" "tests"))))))
19008 (home-page "http://opensource.perlig.de/rcssmin/")
19009 (synopsis "CSS Minifier")
19010 (description "The minifier is based on the semantics of the YUI compressor,
19011 which itself is based on the rule list by Isaac Schlueter.")
19012 (license license:asl2.0)))
19014 (define-public python-rjsmin
19016 (name "python-rjsmin")
19021 (uri (pypi-uri "rjsmin" version))
19024 "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi"))
19025 (modules '((guix build utils)))
19028 (for-each delete-file (find-files "bench" "\\.js$"))
19030 (build-system python-build-system)
19032 '(#:tests? #f ; Not all test files included.
19034 (modify-phases %standard-phases
19036 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
19037 (add-installed-pythonpath inputs outputs)
19039 (invoke "py.test" "-vv" "tests")
19042 (list python-pytest))
19043 (home-page "http://opensource.perlig.de/rjsmin/")
19044 (synopsis "Javascript Minifier")
19045 (description "@code{rJSmin} is a javascript minifier written in Python. The
19046 minifier is based on the semantics of jsmin.c by Douglas Crockford. The module
19047 is a re-implementation aiming for speed, so it can be used at runtime (rather
19048 than during a preprocessing step).")
19049 (license license:asl2.0)))
19051 (define-public python-xopen
19053 (name "python-xopen")
19058 (uri (pypi-uri "xopen" version))
19061 "1xrlcnd6fri3w97zzzp6vyk4l21yq1lc8r4wksi06hgpkbh4jdq0"))))
19062 (build-system python-build-system)
19064 (list python-setuptools-scm))
19065 (home-page "https://github.com/marcelm/xopen/")
19066 (synopsis "Open compressed files transparently")
19067 (description "This module provides an @code{xopen} function that works like
19068 Python's built-in @code{open} function, but can also deal with compressed files.
19069 Supported compression formats are gzip, bzip2 and, xz, and are automatically
19070 recognized by their file extensions. The focus is on being as efficient as
19071 possible on all supported Python versions.")
19072 (license license:expat)))
19074 (define-public python-cheetah
19076 (name "python-cheetah")
19081 (uri (pypi-uri "Cheetah3" version))
19084 "0ar5dqjnqaw0c17mymd6xgd81jn9br9fblawr0x438v1571bkaya"))))
19085 (build-system python-build-system)
19087 `(#:phases (modify-phases %standard-phases
19088 (add-after 'unpack 'use-absolute-python
19090 (substitute* "Cheetah/CheetahWrapper.py"
19091 (("#!/usr/bin/env python")
19092 (string-append "#!" (which "python"))))))
19093 (add-after 'unpack 'fix-tests
19095 (substitute* "Cheetah/Tests/ImportHooks.py"
19096 (("os.path.dirname\\(__file__\\)")
19097 (string-append "'" (getcwd) "/Cheetah/Tests'")))))
19100 (setenv "TMPDIR" "/tmp")
19101 (substitute* "Cheetah/Tests/Test.py"
19102 (("unittest.TextTestRunner\\(\\)")
19103 "unittest.TextTestRunner(verbosity=2)"))
19105 (invoke "python" "Cheetah/Tests/Test.py"))))))
19107 (list python-markdown)) ;optional
19108 (home-page "https://cheetahtemplate.org/")
19109 (synopsis "Template engine")
19110 (description "Cheetah is a text-based template engine and Python code
19113 Cheetah can be used as a standalone templating utility or referenced as
19114 a library from other Python applications. It has many potential uses,
19115 but web developers looking for a viable alternative to ASP, JSP, PHP and
19116 PSP are expected to be its principle user group.
19120 @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
19122 @item Cleanly separates content, graphic design, and program code.
19123 @item Blends the power and flexibility of Python with a simple template language
19124 that non-programmers can understand.
19125 @item Gives template writers full access to any Python data structure, module,
19126 function, object, or method in their templates.
19127 @item Makes code reuse easy by providing an object-orientated interface to
19128 templates that is accessible from Python code or other Cheetah templates.
19129 One template can subclass another and selectively reimplement sections of it.
19130 @item Provides a simple, yet powerful, caching mechanism that can dramatically
19131 improve the performance of a dynamic website.
19132 @item Compiles templates into optimized, yet readable, Python code.
19134 (license (license:x11-style "file://LICENSE"))))
19136 (define-public python-dulwich
19138 (name "python-dulwich")
19139 (version "0.20.30")
19143 (uri (list (string-append "https://www.dulwich.io/releases/"
19144 "dulwich-" version ".tar.gz")
19145 (pypi-uri "dulwich" version)))
19148 "0hafaff30bmkj30b8pwpwsy3fz5h6c1pn98ihqcvl5zndflr1h22"))))
19149 (build-system python-build-system)
19152 (modify-phases %standard-phases
19153 (add-before 'check 'fix-tests
19154 (lambda* (#:key inputs #:allow-other-keys)
19155 (substitute* '("dulwich/tests/test_repository.py"
19156 "dulwich/tests/test_porcelain.py"
19157 "dulwich/tests/test_hooks.py")
19158 (("/bin/sh") (search-input-file inputs "/bin/sh")))
19159 (setenv "TEST_RUNNER" "unittest")
19160 (setenv "PYTHONHASHSEED" "random"))))))
19162 (list python-fastimport python-urllib3))
19164 (list python-mock python-geventhttpclient python-gpg
19166 (home-page "https://www.dulwich.io/")
19167 (synopsis "Git implementation in Python")
19168 (description "Dulwich is an implementation of the Git file formats and
19169 protocols written in pure Python.")
19170 ;; Can be used with either license.
19171 (license (list license:asl2.0 license:gpl2+))))
19173 (define-public python-pbkdf2
19175 (name "python-pbkdf2")
19180 (uri (pypi-uri "pbkdf2" version))
19183 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
19184 (build-system python-build-system)
19187 (modify-phases %standard-phases
19190 (invoke "python" "test/test_pbkdf2.py"))))))
19192 (list python-pycrypto)) ; optional
19193 (home-page "https://www.dlitz.net/software/python-pbkdf2/")
19194 (synopsis "Password-based key derivation")
19195 (description "This module implements the password-based key derivation
19196 function, PBKDF2, specified in RSA PKCS#5 v2.0.
19198 PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
19199 is part of the RSA Public Key Cryptography Standards series. The provided
19200 implementation takes a password or a passphrase and a salt value (and
19201 optionally a iteration count, a digest module, and a MAC module) and provides
19202 a file-like object from which an arbitrarily-sized key can be read.")
19203 (license license:expat)))
19205 (define-public python-qrcode
19207 (name "python-qrcode")
19212 (uri (pypi-uri "qrcode" version))
19214 (base32 "0y35jlwfvkgn9341lzshyaqgpp61vysjh107vhdd96ya83r6ynip"))))
19215 (build-system python-build-system)
19217 ;; FIXME: Tests require packaging 'pymaging'.
19220 (list python-lxml ; for SVG output
19221 python-pillow)) ; for PNG output
19222 (home-page "https://github.com/lincolnloop/python-qrcode")
19223 (synopsis "QR Code image generator")
19224 (description "This package provides a pure Python QR Code generator
19225 module. It uses the Python Imaging Library (PIL) to allow for the generation
19228 In addition this package provides a command line tool to generate QR codes and
19229 either write these QR codes to a file or do the output as ascii art at the
19231 (license license:bsd-3)))
19233 (define-public python-rst2ansi
19235 (name "python-rst2ansi")
19240 (uri (pypi-uri "rst2ansi" version))
19243 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
19244 (build-system python-build-system)
19246 (list python-docutils))
19247 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
19248 (synopsis "Convert RST to ANSI-decorated console output")
19250 "Python module dedicated to rendering RST (reStructuredText) documents
19251 to ansi-escaped strings suitable for display in a terminal.")
19252 (license license:expat)))
19254 (define-public python-ansi2html
19256 (name "python-ansi2html")
19261 (uri (pypi-uri "ansi2html" version))
19264 "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
19265 (build-system python-build-system)
19267 (list python-mock python-nose))
19270 (home-page "https://github.com/ralphbean/ansi2html")
19271 (synopsis "Convert ANSI-decorated console output to HTML")
19273 "@command{ansi2html} is a Python library and command line utility for
19274 converting text with ANSI color codes to HTML or LaTeX.")
19275 (license license:gpl3+)))
19277 (define-public python-easy-ansi
19279 (name "python-easy-ansi")
19284 (uri (git-reference
19285 (url "https://gitlab.com/joeysbytes/easy-ansi")
19286 (commit (string-append "v" version))))
19287 (file-name (git-file-name name version))
19289 (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3"))))
19290 (build-system python-build-system)
19291 (home-page "https://gitlab.com/joeysbytes/easy-ansi")
19292 (synopsis "Terminal framework API")
19294 "Easy ANSI is a terminal framework API to give you an easy way to use
19295 colors, cursor control movements, and line/box drawing. It is not meant as a
19296 replacement to more full-featured frameworks (such as curses or urwid), but as
19297 a tool to quickly create nice-looking screens in your terminal window. You
19298 can even create animations with the cursor controls.")
19299 (license license:expat)))
19301 (define-public python-ddt
19303 (name "python-ddt")
19308 (uri (pypi-uri "ddt" version))
19311 "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4"))))
19312 (build-system python-build-system)
19314 (list python-pytest))
19316 (list python-pyyaml))
19317 (home-page "https://github.com/datadriventests/ddt")
19318 (synopsis "Data-Driven Tests")
19320 "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by
19321 running it with different test data, and make it appear as multiple test
19323 (license license:expat)))
19325 (define-public python-pycountry
19327 (name "python-pycountry")
19332 (uri (pypi-uri "pycountry" version))
19335 "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj"))))
19336 (build-system python-build-system)
19337 (home-page "https://bitbucket.org/flyingcircus/pycountry")
19338 (synopsis "ISO databases for languages, countries, currencies, etc.")
19340 "@code{pycountry} provides the ISO databases for the standards:
19342 @item 639-3 (Languages)
19343 @item 3166 (Countries)
19344 @item 3166-3 (Deleted Countries)
19345 @item 3166-2 (Subdivisions of countries)
19346 @item 4217 (Currencies)
19347 @item 15924 (Scripts)
19349 It includes a copy from Debian’s pkg-isocodes and makes the data accessible
19350 through a Python API.")
19351 (license license:lgpl2.1+)))
19353 (define-public python-pycountry@20.7.3
19355 (inherit python-pycountry)
19356 (name "python-pycountry")
19361 (uri (pypi-uri "pycountry" version))
19363 (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241"))))))
19365 (define-public python-pycosat
19367 (name "python-pycosat")
19372 (uri (pypi-uri "pycosat" version ".zip"))
19375 "1vg0f2fwcybpdqv92z0hwdl603n2safh3fqvjjxkksd78r4qg6ac"))))
19376 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
19377 (build-system python-build-system)
19380 (home-page "https://github.com/ContinuumIO/pycosat")
19381 (synopsis "Bindings to picosat (a SAT solver)")
19383 "This package provides efficient Python bindings to @code{picosat} on
19384 the C level. When importing pycosat, the @code{picosat} solver becomes part
19385 of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
19386 Problem} (SAT) solver.")
19387 (license license:expat)))
19389 (define-public python-pypeg2
19391 (name "python-pypeg2")
19396 (uri (pypi-uri "pyPEG2" version))
19399 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
19400 (build-system python-build-system)
19401 (propagated-inputs (list python-lxml))
19403 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
19405 (home-page "https://fdik.org/pyPEG/")
19406 (synopsis "Parsing Expression Grammars in Python")
19407 (description "PyPEG is an intrinsic parser interpreter framework for
19408 Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
19409 parse many formal languages.")
19410 (license license:gpl2)))
19412 (define-public python-incremental
19414 (name "python-incremental")
19419 (uri (pypi-uri "incremental" version))
19422 "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv"))))
19423 (build-system python-build-system)
19424 (home-page "https://github.com/hawkowl/incremental")
19425 (synopsis "Library for versioning Python projects")
19426 (description "Incremental is a small library that versions your Python
19428 (license license:expat)))
19430 (define-public python-invoke
19432 (name "python-invoke")
19433 (home-page "https://www.pyinvoke.org/")
19437 (uri (pypi-uri "invoke" version))
19440 "1lsql9daabfr31c7syva5myc5bka45k57ygs9fliv63qrwp1wk9p"))))
19441 (build-system python-build-system)
19443 ;; XXX: Requires many dependencies that are not yet in Guix.
19446 (modify-phases %standard-phases
19447 (add-after 'unpack 'delete-python2-code
19449 (delete-file-recursively "invoke/vendor/yaml2")))
19450 (add-after 'unpack 'fix-bash-path
19451 (lambda* (#:key inputs #:allow-other-keys)
19452 (let ((bash (assoc-ref inputs "bash")))
19453 (substitute* "invoke/config.py"
19454 (("shell = \"/bin/bash\"")
19455 (string-append "shell = \"" bash "/bin/bash\"")))))))))
19457 `(("bash" ,bash-minimal)))
19458 (synopsis "Pythonic task execution")
19460 "Invoke is a Python task execution tool and library, drawing inspiration
19461 from various sources to arrive at a powerful and clean feature set. It is
19462 evolved from the Fabric project, but focuses on local and abstract concerns
19463 instead of servers and network commands.")
19464 (license license:bsd-3)))
19466 (define-public python-automat
19468 (name "python-automat")
19472 (uri (pypi-uri "Automat" version))
19475 "0cyzrcqiibwdsp4y0djkllnzab8m5faa4s0d1kpi23k1fhy80ybr"))))
19476 (build-system python-build-system)
19477 ;; We disable the tests because they require python-twisted, while
19478 ;; python-twisted depends on python-automat. Twisted is optional, but the
19479 ;; tests fail if it is not available. Also see
19480 ;; <https://github.com/glyph/automat/issues/71>.
19484 (modify-phases %standard-phases
19485 ;; Remove script, because it depends on python-twisted.
19486 (add-after 'unpack 'remove-entrypoint
19488 (substitute* "setup.py"
19489 (("\"automat-visualize = automat._visualize:tool\"") "")))))))
19491 (list python-m2r python-setuptools-scm python-graphviz))
19493 (list python-six python-attrs))
19494 (home-page "https://github.com/glyph/Automat")
19495 (synopsis "Self-service finite-state machines")
19496 (description "Automat is a library for concise, idiomatic Python
19497 expression of finite-state automata (particularly deterministic finite-state
19499 (license license:expat)))
19501 (define-public python-m2r
19503 (name "python-m2r")
19507 (uri (pypi-uri "m2r" version))
19510 "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z"))
19511 (modules '((guix build utils)))
19513 ;; Adjust test regex for Python 3.10 compatibility.
19514 ;; Taken from upstream pull request:
19515 ;; https://github.com/miyakogi/m2r/pull/62
19516 '(substitute* "tests/test_cli.py"
19517 (("self.assertIn\\('optional arguments:', message\\)")
19518 "self.assertRegex(message, r'option(s|al arguments):')")))))
19519 (build-system python-build-system)
19521 (list python-docutils python-mistune))
19523 (list python-pygments python-mock))
19524 (home-page "https://github.com/miyakogi/m2r")
19525 (synopsis "Markdown to reStructuredText converter")
19526 (description "M2R converts a markdown file including reST markups to valid
19528 (license license:expat)))
19530 (define-public python-constantly
19532 (name "python-constantly")
19536 (uri (pypi-uri "constantly" version))
19539 "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq"))))
19540 (build-system python-build-system)
19541 (home-page "https://github.com/twisted/constantly")
19542 (synopsis "Symbolic constants in Python")
19543 (description "Constantly is a Python library that provides symbolic
19544 constant support. It includes collections and constants with text, numeric,
19545 and bit flag values.")
19546 (license license:expat)))
19548 (define-public python-attrs
19550 (name "python-attrs")
19554 (uri (pypi-uri "attrs" version))
19557 "1yzmwi5d197p0qhl7rl4xi9q1w8mk9i3zn6hrl22knbcrb1slspg"))))
19558 (build-system python-build-system)
19560 `(#:phases (modify-phases %standard-phases
19561 (add-after 'unpack 'remove-test-hypothesis-deadlines
19563 (substitute* "tests/test_make.py"
19564 (("assume, given") "assume, given, settings")
19565 (("( +)@given" all spaces)
19566 (string-append spaces "@settings(deadline=None)\n" all)))))
19568 (lambda* (#:key tests? #:allow-other-keys)
19570 (invoke "pytest")))))))
19572 (list python-coverage python-hypothesis python-pympler python-pytest
19574 (home-page "https://github.com/python-attrs/attrs/")
19575 (synopsis "Attributes without boilerplate")
19576 (description "@code{attrs} is a Python package with class decorators that
19577 ease the chores of implementing the most common attribute-related object
19579 (license license:expat)))
19581 (define-public python-attrs-bootstrap
19583 (inherit python-attrs)
19584 (name "python-attrs-bootstrap")
19585 (native-inputs `())
19586 (arguments `(#:tests? #f))))
19588 (define-public python-cliapp
19590 (name "python-cliapp")
19591 (version "1.20180812.1")
19595 (uri (string-append
19596 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
19597 version ".tar.gz"))
19600 "1c1jlblbns8qhiaqjpg4xi6lip8xwfc5w643p43rg543havaj45x"))))
19601 (build-system python-build-system)
19603 `(;; XXX: The tests only do style and coverage checks, which
19604 ;; fails due to deprecation warnings, etc.
19607 (list python-coverage-test-runner python-pep8))
19609 (list python-pyaml))
19610 (home-page "https://liw.fi/cliapp/")
19611 (synopsis "Python framework for command line programs")
19612 (description "@code{cliapp} is a Python framework for command line
19613 programs. It contains the typical stuff such programs need to do, such
19614 as parsing the command line for options, and iterating over input files.")
19615 (license license:gpl2+)))
19617 (define-public python-ttystatus
19619 (name "python-ttystatus")
19624 (uri (git-reference
19625 (url "http://git.liw.fi/ttystatus")
19626 ;; There are no tags after ttystatus-0.36.
19627 (commit "e9fc573326c5d1348f5fe56263b4f7a8c32f58c9")))
19629 (base32 "0v49q839nrwdm19c83wfmj6n2kw80xslwq9k0n5509r2h7wzjiqj"))
19630 (file-name (git-file-name name version))))
19631 (build-system python-build-system)
19633 (list python-coverage-test-runner python-pep8))
19636 (modify-phases %standard-phases
19637 ;; check phase needs to be run before the build phase. If not,
19638 ;; coverage-test-runner looks for tests for the built source files,
19641 (add-before 'build 'check
19642 (lambda _ (invoke "make" "check"))))))
19643 (home-page "https://liw.fi/ttystatus/")
19644 (synopsis "Python library for showing progress reporting and
19645 status updates on terminals")
19646 (description "@code{ttystatus} is a Python library for showing progress
19647 reporting and status updates on terminals, for command line programs.
19648 Output is automatically adapted to the width of the terminal: truncated
19649 if it does not fit, and resized if the terminal size changes.")
19650 (license license:gpl3+)))
19652 (define-public python-astroid
19654 (name "python-astroid")
19659 (uri (git-reference
19660 (url "https://github.com/PyCQA/astroid")
19661 (commit (string-append "v" version))))
19662 (file-name (git-file-name name version))
19664 (base32 "19iiys4233cicpm48fd7lrkm31kk47qiv44wvk952rqbcn4rd2dh"))))
19665 (build-system python-build-system)
19667 (list python-lazy-object-proxy python-typing-extensions python-wrapt))
19669 (list python-pytest python-pytest-runner))
19670 (home-page "https://github.com/PyCQA/astroid")
19671 (synopsis "Python source code base representation")
19672 (description "@code{python-astroid} provides a common base representation
19673 of Python source code for projects such as pychecker, pyreverse, pylint, etc.
19674 It provides a compatible representation which comes from the _ast module. It
19675 rebuilds the tree generated by the builtin _ast module by recursively walking
19676 down the AST and building an extended ast. The new node classes have
19677 additional methods and attributes for different usages. They include some
19678 support for static inference and local name scopes. Furthermore, astroid
19679 builds partial trees by inspecting living objects.")
19680 (license license:lgpl2.1+)))
19682 (define-public python-isbnlib
19684 (name "python-isbnlib")
19689 (uri (pypi-uri "isbnlib" version))
19692 "0iin0x2xqwyphyyzd0mzrq5v5xm7b6dlbb294k4dywra5qvbrgzm"))))
19693 (build-system python-build-system)
19694 (arguments '(#:tests? #f)) ; No test
19695 (home-page "https://github.com/xlcnd/isbnlib")
19696 (synopsis "Python library to work with ISBN strings")
19697 (description "@code{python-isbnlib} is a (pure) python library that provides
19698 several useful methods and functions to validate, clean, transform, hyphenate and
19699 get metadata for ISBN strings. Its origin was as the core of isbntools. This short
19700 version, is suitable to be include as a dependency in other projects.")
19701 (license license:lgpl3+)))
19703 (define-public python-isort
19705 (name "python-isort")
19710 (uri (git-reference
19711 ;; Tests pass only from the Github sources
19712 (url "https://github.com/timothycrosley/isort")
19714 (file-name (git-file-name name version))
19715 (modules '((guix build utils)))
19716 (snippet '(for-each delete-file (find-files "." "\\.whl$")))
19719 "09spgl2k9xrprr5gbpfc91a8p7mx7a0c64ydgc91b3jhrmnd9jg1"))))
19720 (build-system python-build-system)
19723 (modify-phases %standard-phases
19724 (add-after 'unpack 'loosen-requirements
19726 ;; Permit newer versions of black.
19727 (substitute* "example_isort_formatting_plugin/pyproject.toml"
19730 ;; A foretaste of what our future python-build-system will need to
19734 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
19736 (lambda* (#:key outputs #:allow-other-keys)
19737 (let ((out (assoc-ref outputs "out"))
19738 (whl (car (find-files "dist" "\\.whl$"))))
19739 (invoke "pip" "--no-cache-dir" "--no-input"
19740 "install" "--no-deps" "--prefix" out whl))))
19741 (add-after 'install 'install-example-plugins
19742 (lambda* (#:key outputs #:allow-other-keys)
19743 (let ((out (assoc-ref outputs "out")))
19744 ;; Patch to use the core poetry API.
19745 (substitute* '("example_isort_formatting_plugin/pyproject.toml"
19746 "example_isort_sorting_plugin/pyproject.toml"
19747 "example_shared_isort_profile/pyproject.toml")
19749 "poetry-core>=1.0.0")
19750 (("poetry.masonry.api")
19751 "poetry.core.masonry.api"))
19752 ;; Build the example plugins.
19753 (for-each (lambda (source-directory)
19754 (invoke "python" "-m" "build" "--wheel"
19755 "--no-isolation" "--outdir=dist"
19757 '("example_isort_formatting_plugin"
19758 "example_isort_sorting_plugin"
19759 "example_shared_isort_profile"))
19760 ;; Install them to temporary storage, for the test.
19761 (setenv "HOME" (getcwd))
19762 (let ((example-whls (find-files "dist" "^example.*\\.whl$")))
19763 (apply invoke "pip" "--no-cache-dir" "--no-input"
19764 "install" "--user" "--no-deps" example-whls)))))
19766 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
19768 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
19769 (setenv "PATH" (string-append (getenv "PATH") ":" bin)))
19770 (add-installed-pythonpath inputs outputs)
19771 (invoke "pytest" "-vv" "tests/unit/"
19772 "-k" "not test_gitignore" ;requires git
19773 "--ignore=tests/unit/test_deprecated_finders.py")))))))
19777 python-hypothesmith
19778 python-libcst-minimal
19785 (home-page "https://github.com/PyCQA/isort")
19786 (synopsis "Python utility/library to sort python imports")
19787 (description "@code{python-isort} is a python utility/library to sort
19788 imports alphabetically, and automatically separated into sections. It
19789 provides a command line utility, a python library and plugins for various
19791 (license license:expat)))
19793 (define-public python-configparser
19795 (name "python-configparser")
19800 (uri (pypi-uri "configparser" version))
19803 "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7"))))
19805 (list python-setuptools-scm))
19806 (build-system python-build-system)
19807 (home-page "https://github.com/jaraco/configparser/")
19808 (synopsis "Backport of configparser from python 3.5")
19809 (description "@code{python-configparser} is a backport of
19810 @code{configparser} from Python 3.5 so that it can be used directly
19811 in other versions.")
19812 (license license:expat)))
19814 (define-public python-iniconfig
19816 (name "python-iniconfig")
19821 (uri (pypi-uri "iniconfig" version))
19824 "0ckzngs3scaa1mcfmsi1w40a1l8cxxnncscrxzjjwjyisx8z0fmw"))))
19825 (build-system python-build-system)
19826 (home-page "https://github.com/RonnyPfannschmidt/iniconfig")
19827 (synopsis "Simple INI-file parser")
19828 (description "The @code{iniconfig} package provides a small and simple
19829 INI-file parser module having a unique set of features ; @code{iniconfig}
19831 @item maintains the order of sections and entries ;
19832 @item supports multi-line values with or without line-continuations ;
19833 @item supports \"#\" comments everywhere ;
19834 @item raises errors with proper line-numbers ;
19835 @item raises an error when two sections have the same name.
19837 (license license:expat)))
19839 (define-public python-mamba
19841 (name "python-mamba")
19845 (uri (pypi-uri "mamba" version))
19848 "15m4dpnpv9m60pdaygvwgi43fwqaivs3qxfxhspwrp47sbgwdkvm"))))
19849 (build-system python-build-system)
19850 (arguments `(#:tests? #f)) ; No test
19852 (list python-clint python-coverage))
19853 (home-page "https://nestorsalceda.com/mamba/")
19854 (synopsis "Test runner for Python")
19856 "Mamba is a Behaviour-Driven Development tool for Python developers.
19857 Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.")
19858 (license license:expat)))
19860 (define-public python-mando
19862 (name "python-mando")
19866 (uri (pypi-uri "mando" version))
19869 "001mikga36i811pbc95rb45m2kzivkx4xb0fn3pzl4xnnjcskfhq"))))
19870 (build-system python-build-system)
19873 #~(modify-phases %standard-phases
19875 (lambda* (#:key tests? #:allow-other-keys)
19877 (invoke "pytest" "-vv")))))))
19879 (list python-rst2ansi python-six))
19881 (list python-pytest))
19882 (home-page "https://mando.readthedocs.org/")
19884 "Wrapper around argparse, allowing creation of complete CLI applications")
19886 "This package is a wrapper around argparse, allowing you to write complete CLI
19887 applications in seconds while maintaining all the flexibility.")
19888 (license license:expat)))
19890 (define-public python-mwclient
19892 (name "python-mwclient")
19897 ;; The PyPI version wouldn't contain tests.
19898 (uri (git-reference
19899 (url "https://github.com/mwclient/mwclient")
19900 (commit (string-append "v" version))))
19901 (file-name (git-file-name name version))
19903 (base32 "120snnsh9n5svfwkyj1w9jrxf99jnqm0jk282yypd3lpyca1l9hj"))))
19904 (build-system python-build-system)
19906 (list python-requests-oauthlib python-six))
19908 (list python-mock python-pytest python-pytest-cov
19909 python-pytest-runner python-responses))
19910 (home-page "https://github.com/btongminh/mwclient")
19911 (synopsis "MediaWiki API client")
19912 (description "This package provides a MediaWiki API client.")
19913 (license license:expat)))
19915 (define-public python-kneed
19917 (name "python-kneed")
19922 (uri (pypi-uri "kneed" version))
19924 (base32 "0vkwi0pr7nfkp3c46hnmx0275yx68v96v10rmspv0wis33x6f39l"))))
19925 (build-system python-build-system)
19927 (list python-matplotlib python-numpy python-scipy))
19928 (home-page "https://github.com/arvkevi/kneed")
19929 (synopsis "Knee-point detection in Python")
19930 (description "This package implements the kneedle algorithm. Given a set
19931 of x and y values, kneed will return the knee point of the function. The knee
19932 point is the point of maximum curvature.")
19933 (license license:bsd-3)))
19935 (define-public python-utils
19937 (name "python-utils")
19941 (uri (pypi-uri "python-utils" version))
19944 "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj"))))
19945 (build-system python-build-system)
19948 (modify-phases %standard-phases
19950 (lambda* (#:key inputs outputs #:allow-other-keys)
19951 (add-installed-pythonpath inputs outputs)
19952 (delete-file "pytest.ini")
19953 (invoke "pytest" "-vv"))))))
19955 `(("pytest-runner" ,python-pytest-runner)
19956 ("pytest" ,python-pytest)
19957 ("six" ,python-six)))
19958 (home-page "https://github.com/WoLpH/python-utils")
19959 (synopsis "Convenient utilities not included with the standard Python install")
19961 "Python Utils is a collection of small Python functions and classes which
19962 make common patterns shorter and easier.")
19963 (license license:bsd-2)))
19965 (define-public python-diff-match-patch
19967 (name "python-diff-match-patch")
19968 (version "20121119")
19972 (uri (pypi-uri "diff-match-patch" version))
19975 "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
19976 (build-system python-build-system)
19977 (home-page "https://code.google.com/p/google-diff-match-patch")
19978 (synopsis "Synchronize plain text")
19979 (description "Diff Match and Patch libraries offer robust algorithms to
19980 perform the operations required for synchronizing plain text.")
19981 (license license:asl2.0)))
19983 (define-public python-icdiff
19985 (name "python-icdiff")
19989 (uri (git-reference
19990 (url "https://github.com/jeffkaufman/icdiff")
19991 (commit (string-append "release-" version))))
19992 (file-name (git-file-name name version))
19995 "14gr9j2h7sfw47pwfzspm4zinywhqmzm4a0qz5c2k9wbixz120a4"))))
19996 (build-system python-build-system)
19997 (home-page "https://www.jefftk.com/icdiff")
19998 (synopsis "Improved colored diff")
19999 (description "This package provides colored diff functions that highlight
20000 parts of the lines that were modified.")
20001 (license license:psfl)))
20003 (define-public python-dirsync
20005 (name "python-dirsync")
20010 (uri (pypi-uri "dirsync" version))
20013 "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy"))))
20014 (build-system python-build-system)
20017 (home-page "https://github.com/tkhyn/dirsync")
20018 (synopsis "Advanced directory tree synchronisation tool")
20019 (description "Advanced directory tree synchronisation tool.")
20020 (license license:expat)))
20022 (define-public python-levenshtein
20024 (name "python-levenshtein")
20029 (uri (pypi-uri "python-Levenshtein" version))
20032 "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw"))))
20033 (build-system python-build-system)
20034 (home-page "https://github.com/ztane/python-Levenshtein")
20035 (synopsis "Fast computation of Levenshtein distance and string similarity")
20037 "The Levenshtein Python C extension module contains functions for fast computation of
20039 @item Levenshtein (edit) distance, and edit operations
20040 @item string similarity
20041 @item approximate median strings, and generally string averaging
20042 @item string sequence and set similarity
20044 It supports both normal and Unicode strings.")
20045 (license license:gpl2+)))
20047 (define-public python-scandir
20049 (name "python-scandir")
20054 (uri (pypi-uri "scandir" version))
20056 (base32 "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd"))))
20057 (build-system python-build-system)
20059 `(#:phases (modify-phases %standard-phases
20062 (invoke "python" "test/run_tests.py"))))))
20063 (home-page "https://github.com/benhoyt/scandir")
20064 (synopsis "Directory iteration function")
20066 "Directory iteration function like os.listdir(), except that instead of
20067 returning a list of bare filenames, it yields DirEntry objects that include
20068 file type and stat information along with the name. Using scandir() increases
20069 the speed of os.walk() by 2-20 times (depending on the platform and file
20070 system) by avoiding unnecessary calls to os.stat() in most cases.
20072 This package is part of the Python standard library since version 3.5.")
20073 (license license:bsd-3)))
20075 (define-public python-factory-boy
20077 (name "python-factory-boy")
20082 (uri (pypi-uri "factory_boy" version))
20084 (base32 "0pm5lbvnwm0kg5i6z611rg907yw1gy551f2advmpaz041ixjg3d9"))))
20085 (build-system python-build-system)
20087 ;; Tests are not included in the tarball.
20089 (propagated-inputs (list python-faker))
20090 (home-page "https://github.com/benhoyt/scandir")
20091 (synopsis "Versatile test fixtures replacement")
20092 (description "Factory_boy is a fixtures replacement based on thoughtbot’s
20093 factory_girl. As a fixtures replacement tool, it aims to replace static, hard
20094 to maintain fixtures with easy-to-use factories for complex object. Instead
20095 of building an exhaustive test setup with every possible combination of corner
20096 cases, factory_boy allows you to use objects customized for the current test,
20097 while only declaring the test-specific fields.")
20098 (license license:expat)))
20100 (define-public python-translate-toolkit
20102 (name "python-translate-toolkit")
20107 (uri (pypi-uri "translate-toolkit" version ".tar.gz"))
20109 (base32 "0m4cpsp7x7h5m5agg4ybscf7y86wla46q2lvxpi2myplb6qlgcli"))))
20110 (build-system python-build-system)
20112 (list python-pytest python-sphinx))
20115 python-beautifulsoup4
20117 python-diff-match-patch
20124 ;; TODO: tests are not run, because they end with
20125 ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
20127 ;; during test setup.
20130 #~(modify-phases %standard-phases
20131 ;; translate-toolkit has many optional dependencies (see
20132 ;; optional.txt), which the sanity check does not understand.
20133 (delete 'sanity-check))))
20134 (home-page "https://toolkit.translatehouse.org")
20135 (synopsis "Tools and API for translation and localization engineering")
20137 "Tools and API for translation and localization engineering. It contains
20138 several utilities, as well as an API for building localization tools.")
20139 (license license:gpl2+)))
20142 (define-public python-packaging
20143 (package/inherit python-packaging-bootstrap
20144 (name "python-packaging")
20146 `(#:phases (modify-phases %standard-phases
20148 (lambda* (#:key tests? #:allow-other-keys)
20150 (invoke "pytest" "-vv")
20151 (format #t "test suite not run~%")))))))
20153 `(("python-pretend" ,python-pretend)
20154 ("python-pytest" ,python-pytest)))
20156 `(("python-pyparsing" ,python-pyparsing)
20157 ("python-six" ,python-six)))
20158 (home-page "https://github.com/pypa/packaging")
20159 (synopsis "Core utilities for Python packages")
20160 (description "Packaging is a Python module for dealing with Python packages.
20161 It offers an interface for working with package versions, names, and dependency
20163 ;; From 'LICENSE': This software is made available under the terms of
20164 ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD.
20165 ;; Contributions to this software is made under the terms of *both* these
20167 (license (list license:asl2.0 license:bsd-2))))
20169 ;; TODO(staging): merge with python-packaging-bootstrap.
20170 (define-public python-packaging-next
20172 (inherit python-packaging)
20177 (uri (pypi-uri "packaging" version))
20180 "1sygirdrqgv4f1ckh9nhpcw1yfidrh3qjl86wq8vk6nq4wlw8iyx"))))))
20182 (define-public python-relatorio
20184 (name "python-relatorio")
20189 (uri (pypi-uri "relatorio" version))
20192 "09nhrz80dfm60nssbvjgz4czzy4yzfa8gxczcdlzbgcnnvm914vb"))))
20193 (build-system python-build-system)
20195 (list python-lxml python-genshi))
20197 (list python-magic))
20198 (home-page "https://relatorio.tryton.org/")
20199 (synopsis "Templating library able to output ODT and PDF files")
20200 (description "Relatorio is a templating library which provides a way to
20201 easily output ODT, ODS, PNG, SVG and several other kinds of files. Support
20202 for more filetypes can be easily added by creating plugins for them.")
20203 (license license:gpl3+)))
20205 (define-public python-radon
20207 (name "python-radon")
20212 (uri (pypi-uri "radon" version))
20215 "1vmf56zsf3paa1jadjcjghiv2kxwiismyayq42ggnqpqwm98f7fb"))))
20216 (build-system python-build-system)
20218 `(#:phases (modify-phases %standard-phases
20219 (add-after 'unpack 'relax-requirements
20221 (substitute* "setup.py"
20224 (("mando>=0\\.6,<0\\.7")
20226 (("colorama==0.4.1")
20227 "colorama>=0.4.1"))))
20230 (invoke "python" "radon/tests/run.py"))))))
20231 (propagated-inputs (list python-colorama python-mando))
20232 (native-inputs (list python-pytest python-pytest-mock))
20233 (home-page "https://radon.readthedocs.org/")
20234 (synopsis "Code Metrics in Python")
20235 (description "Radon is a Python tool which computes various code metrics.
20236 Supported metrics are:
20238 @item raw metrics: SLOC, comment lines, blank lines, &c.
20239 @item Cyclomatic Complexity (i.e., McCabe’s Complexity)
20240 @item Halstead metrics (all of them)
20241 @item the Maintainability Index (a Visual Studio metric)
20243 (license license:expat)))
20245 (define-public python-sure
20247 (name "python-sure")
20252 (uri (pypi-uri "sure" version))
20255 "1and0drq8w9iplsic22n2h7hkpyq03a1mbqk4sgcdqhqzdqm539w"))))
20256 (build-system python-build-system)
20258 (list python-mock python-six))
20260 (list python-nose))
20261 (home-page "https://github.com/gabrielfalcao/sure")
20262 (synopsis "Automated testing library in python for python")
20264 "Sure is a python library that leverages a DSL for writing assertions.
20265 Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
20266 (license license:gpl3+)))
20268 (define-public python-misaka
20270 (name "python-misaka")
20275 (uri (pypi-uri "misaka" version))
20278 "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2"))))
20279 (build-system python-build-system)
20281 `(;; Line 37 of setup.py calls self.run_command('develop')
20282 ;; in the 'check' phase. This command seems to be trying
20284 ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
20285 ;; for which it does not have the permission to write.
20288 (list python-cffi))
20289 (home-page "https://github.com/FSX/misaka")
20290 (synopsis "Python binding for Hoedown")
20292 "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
20293 library written in C. It features a fast HTML renderer and functionality to make custom
20294 renderers (e.g. man pages or LaTeX).")
20295 (license license:expat)))
20297 (define-public python-jsonpointer
20299 (name "python-jsonpointer")
20304 (uri (pypi-uri "jsonpointer" version))
20307 "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
20308 (build-system python-build-system)
20309 (home-page "https://github.com/stefankoegl/python-json-pointer")
20310 (synopsis "Identify specific nodes in a JSON document")
20311 (description "@code{jsonpointer} allows you to access specific nodes
20312 by path in a JSON document (see RFC 6901).")
20313 (license license:bsd-3)))
20315 (define-public python-jsonpatch
20317 (name "python-jsonpatch")
20322 ;; pypi version lacks tests.js
20323 (uri (git-reference
20324 (url "https://github.com/stefankoegl/python-json-patch")
20325 (commit (string-append "v" version))))
20326 (file-name (git-file-name name version))
20329 "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr"))))
20330 (build-system python-build-system)
20332 (list python-jsonpointer))
20333 (home-page "https://github.com/stefankoegl/python-json-patch")
20334 (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
20335 (description "@code{jsonpatch} is a library and program that allows
20336 applying JSON Patches according to RFC 6902.")
20337 (license license:bsd-3)))
20339 (define-public python-jsonpatch-0.4
20340 (package (inherit python-jsonpatch)
20341 (name "python-jsonpatch")
20346 (uri (git-reference
20347 (url "https://github.com/stefankoegl/python-json-patch")
20348 (commit (string-append "v" version))))
20349 (file-name (git-file-name name version))
20352 "1fq02y57kinyknxjcav0slcb0k9mwdffqw2hnlhdkpj7palh2mwk"))))))
20354 (define-public python-rfc3986
20356 (name "python-rfc3986")
20360 (uri (pypi-uri "rfc3986" version))
20363 "17dvx15m3r49bmif5zlli8kzjd6bys6psixzbp14sd5367d9h8qi"))))
20364 (build-system python-build-system)
20367 (modify-phases %standard-phases
20370 (invoke "pytest" "-v"))))))
20372 (list python-pytest))
20373 (home-page "https://rfc3986.readthedocs.io/")
20374 (synopsis "Parse and validate URI references")
20376 "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including
20377 validation and authority parsing. This module also supports RFC@tie{}6874
20378 which adds support for zone identifiers to IPv6 addresses.")
20379 (license license:asl2.0)))
20381 (define-public python-rfc3987
20383 (name "python-rfc3987")
20388 (uri (pypi-uri "rfc3987" version))
20391 "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
20392 (build-system python-build-system)
20393 (home-page "https://pypi.org/project/rfc3987/")
20394 (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
20395 (description "@code{rfc3987} provides routines for parsing and
20396 validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
20397 (license license:gpl3+)))
20399 ;; The latest commit contains fixes for building with both python3 and python2.
20400 (define-public python-rfc6555
20401 (let ((commit "1a181b432312731f6742a5eb558dae4761d32361")
20404 (name "python-rfc6555")
20405 (version (git-version "0.0.0" revision commit))
20408 (uri (git-reference
20409 (url "https://github.com/sethmlarson/rfc6555")
20411 (file-name (git-file-name name version))
20414 "1bxl17j9vs69cshcqnlwamr03hnykxqnwz3mdgi6x3s2k4q18npp"))))
20415 (build-system python-build-system)
20418 (modify-phases %standard-phases
20420 (lambda* (#:key tests? #:allow-other-keys)
20422 ;; Other tests require network access.
20423 (invoke "pytest" "tests/test_ipv6.py")
20426 (list python-pytest))
20427 (home-page "https://pypi.org/project/rfc6555/")
20428 (synopsis "Python implementation of RFC 6555")
20430 "Python implementation of the Happy Eyeballs Algorithm described in RFC
20431 6555. Provided with a single file and dead-simple API to allow easy vendoring
20432 and integration into other projects.")
20433 (license license:asl2.0))))
20435 (define-public python-bagit
20437 (name "python-bagit")
20442 (uri (pypi-uri "bagit" version))
20445 "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j"))))
20446 (build-system python-build-system)
20448 (list python-setuptools-scm python-coverage python-mock))
20449 (home-page "https://libraryofcongress.github.io/bagit-python/")
20450 (synopsis "Create and validate BagIt packages")
20451 (description "Bagit is a Python library and command line utility for working
20452 with BagIt style packages. BagIt is a minimalist packaging format for digital
20454 (license license:cc0)))
20456 (define-public python-prov
20458 (name "python-prov")
20463 (uri (pypi-uri "prov" version))
20466 "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn"))))
20467 (build-system python-build-system)
20469 (list python-dateutil python-lxml python-networkx python-rdflib-5))
20471 (list graphviz python-pydot))
20472 (home-page "https://github.com/trungdong/prov")
20474 "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)")
20476 "This package provides a library for W3C Provenance Data Model supporting
20477 PROV-O (RDF), PROV-XML, PROV-JSON import/export.")
20478 (license license:expat)))
20480 (define-public python-arcp
20482 (name "python-arcp")
20487 (uri (pypi-uri "arcp" version))
20490 "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw"))))
20491 (build-system python-build-system)
20493 (list python-pytest))
20494 (home-page "http://arcp.readthedocs.io/")
20496 "Archive and Package URI parser and generator")
20498 "@acronym{arcp, Archive and Package} provides functions for creating
20499 @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files
20500 packaged in an archive or package, like a ZIP file. arcp URIs can be used to
20501 consume or reference hypermedia resources bundled inside a file archive or an
20502 application package, as well as to resolve URIs for archive resources within a
20503 programmatic framework. This URI scheme provides mechanisms to generate a
20504 unique base URI to represent the root of the archive, so that relative URI
20505 references in a bundled resource can be resolved within the archive without
20506 having to extract the archive content on the local file system. An arcp URI can
20507 be used for purposes of isolation (e.g. when consuming multiple archives),
20508 security constraints (avoiding \"climb out\" from the archive), or for
20509 externally identiyfing sub-resources referenced by hypermedia formats.")
20510 (license license:asl2.0)))
20512 (define-public python-shellescape
20514 (name "python-shellescape")
20519 (uri (git-reference
20520 (url "https://github.com/chrissimpkins/shellescape")
20521 (commit (string-append "v" version))))
20522 (file-name (git-file-name name version))
20525 "0wzccxk139qx1lb2g70f5b2yh9zq15nr2mgvqdbfabg5zm0vf1qw"))))
20526 (build-system python-build-system)
20529 (modify-phases %standard-phases
20531 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
20533 (add-installed-pythonpath inputs outputs)
20534 (invoke "python" "tests/test_shellescape.py"))
20537 (list python-pytest))
20538 (home-page "https://github.com/chrissimpkins/shellescape")
20540 "Shell escape a string to safely use it as a token in a shell command")
20542 "The shellescape Python module defines the @code{shellescape.quote()}
20543 function that returns a shell-escaped version of a Python string. This is a
20544 backport of the @code{shlex.quote()} function from Python 3.8 that makes it
20545 accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.")
20546 (license license:expat)))
20548 (define-public python-validators
20550 (name "python-validators")
20554 (uri (pypi-uri "validators" version))
20557 "19lypf7hm7p203ay3v8zmckc5rv6889zkfdm16nki1972f99mk9p"))))
20558 (build-system python-build-system)
20560 '(#:phases (modify-phases %standard-phases
20563 (invoke "pytest" "-vv"))))))
20565 (list python-decorator python-six))
20567 (list python-flake8 python-isort python-pytest))
20568 (home-page "https://github.com/kvesteri/validators")
20569 (synopsis "Data validation library")
20571 "This package contains validators for different things such as email
20572 addresses, IP addresses, URLs, hashes and more. It has been designed to
20573 be easy to use and not require defining a schema or form just to validate
20575 (license license:expat)))
20577 (define-public python-validate-email
20579 (name "python-validate-email")
20584 (uri (pypi-uri "validate_email" version))
20587 "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
20588 (build-system python-build-system)
20589 (home-page "https://github.com/syrusakbary/validate_email")
20590 (synopsis "Verifies if an email address is valid and really exists")
20591 (description "@code{validate_email} can be used to verify if an email
20592 address is valid and really exists.")
20593 (license license:lgpl3+)))
20595 (define-public python-flex
20597 (name "python-flex")
20602 (uri (pypi-uri "flex" version))
20605 "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
20606 (build-system python-build-system)
20615 python-validate-email))
20616 (home-page "https://github.com/pipermerriam/flex")
20617 (synopsis "Validates Swagger schemata")
20618 (description "@code{flex} can be used to validate Swagger schemata.")
20619 (license license:bsd-3)))
20621 (define-public python-marshmallow
20623 (name "python-marshmallow")
20628 (uri (pypi-uri "marshmallow" version))
20631 "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk"))))
20632 (build-system python-build-system)
20634 (list python-dateutil python-simplejson))
20636 (list python-pytest python-pytz))
20637 (home-page "https://github.com/marshmallow-code/marshmallow")
20638 (synopsis "Convert complex datatypes to and from native
20640 (description "@code{marshmallow} provides a library for converting
20641 complex datatypes to and from native Python datatypes.")
20642 (license license:expat)))
20644 (define-public python-marshmallow-jsonapi
20646 (name "python-marshmallow-jsonapi")
20651 (uri (pypi-uri "marshmallow-jsonapi" version))
20653 (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x"))))
20654 (build-system python-build-system)
20656 (list python-marshmallow))
20660 python-flake8-bugbear
20666 (home-page "https://github.com/marshmallow-code/marshmallow-jsonapi")
20667 (synopsis "JSON:API 1.0 formatting with Marshmallow")
20669 "The marshmallow-jsonapi package provides a simple way to produce
20670 @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework.
20671 It includes optional utilities to integrate with Flask.")
20672 (license license:expat)))
20674 (define-public python-apispec
20676 (name "python-apispec")
20681 (uri (pypi-uri "apispec" version))
20684 "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in"))))
20685 (build-system python-build-system)
20687 '(#:phases (modify-phases %standard-phases
20690 (invoke "pytest" "-vv"
20691 ;; Disable validation tests since they require
20692 ;; the optional 'prance' library which is not
20694 "-k" "not openapi_tools_validate"))))))
20696 (list python-pyyaml))
20698 (list python-pytest python-marshmallow))
20699 (home-page "https://github.com/marshmallow-code/apispec")
20700 (synopsis "Swagger/OpenAPI specification generator")
20701 (description "@code{python-apispec} is a pluggable API specification
20702 generator. It currently supports the OpenAPI specification, formerly known
20704 (license license:expat)))
20706 (define-public python-flasgger
20708 (name "python-flasgger")
20713 (uri (git-reference
20714 (url "https://github.com/rochacbruno/flasgger")
20716 (file-name (git-file-name name version))
20718 (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
20719 (build-system python-build-system)
20722 (modify-phases %standard-phases
20724 (lambda* (#:key inputs outputs #:allow-other-keys)
20725 (substitute* "Makefile"
20726 (("flake8 flasgger --ignore=F403")
20727 "flake8 flasgger --ignore=E731,F403"))
20728 (invoke "py.test"))))))
20730 (list python-flask python-pyyaml python-jsonschema python-mistune
20733 (list python-decorator
20735 python-flask-restful
20741 (home-page "https://github.com/rochacbruno/flasgger/")
20742 (synopsis "Extract Swagger specs from your Flask project")
20743 (description "@code{python-flasgger} allows extracting Swagger specs
20744 from your Flask project. It is a fork of Flask-Swagger.")
20745 (license license:expat)))
20747 (define-public python-swagger-spec-validator
20749 (name "python-swagger-spec-validator")
20754 (uri (pypi-uri "swagger-spec-validator" version))
20757 "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
20758 (build-system python-build-system)
20760 (list python-jsonschema python-pyyaml python-six))
20762 "https://github.com/Yelp/swagger_spec_validator")
20763 (synopsis "Validation of Swagger specifications")
20764 (description "@code{swagger_spec_validator} provides a library for
20765 validating Swagger API specifications.")
20766 (license license:asl2.0)))
20768 (define-public python-apache-libcloud
20770 (name "python-apache-libcloud")
20775 (uri (pypi-uri "apache-libcloud" version))
20778 "1b28j265kvibgxrgxx0gwfm6cmv252c8ph1j2vb0cpms8ph5if5v"))))
20779 (build-system python-build-system)
20782 (modify-phases %standard-phases
20783 (add-after 'unpack 'patch-ssh
20784 (lambda* (#:key inputs #:allow-other-keys)
20785 (substitute* "libcloud/compute/ssh.py"
20787 (string-append "'" (search-input-file inputs "/bin/ssh")
20789 (add-after 'unpack 'patch-tests
20791 (substitute* "libcloud/test/compute/test_ssh_client.py"
20792 (("^class ShellOutSSHClientTests")
20793 "@unittest.skip(\"Guix container doesn't have ssh service\")
20794 class ShellOutSSHClientTests"))))
20795 (add-before 'check 'copy-secret
20797 (copy-file "libcloud/test/secrets.py-dist"
20798 "libcloud/test/secrets.py"))))))
20802 (list python-paramiko python-requests))
20804 (list python-lockfile python-mock python-pytest python-pytest-runner
20805 python-requests-mock))
20806 (home-page "https://libcloud.apache.org/")
20807 (synopsis "Unified Cloud API")
20808 (description "@code{libcloud} is a Python library for interacting with
20809 many of the popular cloud service providers using a unified API.")
20810 (license license:asl2.0)))
20812 (define-public python-smmap
20814 (name "python-smmap")
20819 (uri (pypi-uri "smmap" version))
20821 (base32 "0ijlnv60y8f41py1wnn5n1a1i81cxd9dfpdhr0k3cgkrcbz8850p"))))
20822 (build-system python-build-system)
20824 (list python-nosexcover))
20825 (home-page "https://github.com/Byron/smmap")
20826 (synopsis "Python sliding window memory map manager")
20827 (description "@code{smmap} is a pure Python implementation of a sliding
20828 window memory map manager.")
20829 (license license:bsd-3)))
20831 (define-public python-regex
20833 (name "python-regex")
20834 (version "2022.1.18")
20837 (uri (pypi-uri "regex" version))
20840 "05ir92d0cmv8wkafn3r05j5q47l6shg7cpdblp2a8m407b02vwwp"))))
20841 (build-system python-build-system)
20844 (modify-phases %standard-phases
20846 (lambda* (#:key inputs outputs #:allow-other-keys)
20847 (add-installed-pythonpath inputs outputs)
20848 (invoke "python" "-c"
20849 "from regex.test_regex import test_main ; test_main()"))))))
20850 (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
20851 (synopsis "Alternative regular expression module")
20852 (description "This regular expression implementation is backwards-
20853 compatible with the standard @code{re} module, but offers additional
20854 functionality like full case-folding for case-insensitive matches in Unicode.")
20855 (license license:psfl)))
20857 (define-public python-pyopengl
20859 (name "python-pyopengl")
20864 (uri (pypi-uri "PyOpenGL" version))
20867 "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1"))))
20868 (build-system python-build-system)
20870 (list mesa freeglut glu))
20872 `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no
20873 ;attribute 'OSMesa'
20875 (modify-phases %standard-phases
20876 (add-before 'build 'fix-paths
20877 (lambda* (#:key inputs outputs #:allow-other-keys)
20878 (substitute* '("OpenGL/platform/ctypesloader.py")
20879 (("filenames_to_try = \\[\\]") "filenames_to_try = [name]"))
20880 (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py")
20882 (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'"))
20884 (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'"))
20886 (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',"))
20888 (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'"))
20890 (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'")))
20891 ;; Not providing libgle. It seems to be very old.
20893 (home-page "http://pyopengl.sourceforge.net")
20894 (synopsis "Standard OpenGL bindings for Python")
20896 "PyOpenGL is the most common cross platform Python binding to OpenGL and
20897 related APIs. The binding is created using the standard @code{ctypes}
20899 (license license:bsd-3)))
20901 (define-public python-pyopengl-accelerate
20903 (inherit python-pyopengl)
20904 (name "python-pyopengl-accelerate")
20909 (uri (pypi-uri "PyOpenGL-accelerate" version))
20912 "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j"))))
20914 (list mesa python-numpy)) ; for cython module
20915 ; numpy_formathandler, thus not propagated
20919 (modify-phases %standard-phases
20920 (delete 'fix-paths))))
20921 (synopsis "Acceleration code for PyOpenGL")
20923 "This is the Cython-coded accelerator module for PyOpenGL.")))
20925 (define-public python-rencode
20927 (name "python-rencode")
20932 (uri (pypi-uri "rencode" version))
20935 "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv"))))
20936 (build-system python-build-system)
20939 (modify-phases %standard-phases
20940 (add-before 'check 'delete-bogus-test
20941 ;; This test requires /home/aresch/Downloads, which is not provided by
20942 ;; the build environment.
20944 (delete-file "rencode/t.py")
20946 (native-inputs (list pkg-config python-cython))
20947 (home-page "https://github.com/aresch/rencode")
20948 (synopsis "Serialization of heterogeneous data structures")
20950 "The @code{rencode} module is a data structure serialization library,
20951 similar to @code{bencode} from the BitTorrent project. For complex,
20952 heterogeneous data structures with many small elements, r-encoding stake up
20953 significantly less space than b-encodings. This version of rencode is a
20954 complete rewrite in Cython to attempt to increase the performance over the
20955 pure Python module.")
20956 (license license:bsd-3)))
20958 (define-public python-pysocks
20960 (name "python-pysocks")
20965 (uri (pypi-uri "PySocks" version))
20968 "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z"))))
20969 (build-system python-build-system)
20970 (arguments `(#:tests? #f))
20971 (home-page "https://github.com/Anorov/PySocks")
20972 (synopsis "SOCKS client module")
20973 (description "@code{pysocks} is an updated and semi-actively maintained
20974 version of @code{SocksiPy} with bug fixes and extra features.")
20975 (license license:bsd-3)))
20977 (define-public python-pydiff
20979 (name "python-pydiff")
20984 (uri (pypi-uri "pydiff" version))
20987 "1als83h9w0gab24ipyna6khm390qmpnpkc5jksmdbs2xc8hp2z44"))))
20988 (build-system python-build-system)
20989 (home-page "https://github.com/myint/pydiff")
20990 (synopsis "Library to diff two Python files at the bytecode level")
20992 "@code{pydiff} makes it easy to look for actual code changes while
20993 ignoring formatting changes.")
20994 (license license:expat)))
20996 (define-public python-pydub
20998 (name "python-pydub")
21003 (uri (pypi-uri "pydub" version))
21006 "03ykn2kp6qglsrzqi5h79z5cp3kl9mknasv0d6jv5jj9k77362lq"))))
21007 (build-system python-build-system)
21010 (modify-phases %standard-phases
21011 (add-after 'unpack 'fix-ffmpeg-path
21012 (lambda* (#:key inputs #:allow-other-keys)
21013 (let ((ffmpeg (assoc-ref inputs "ffmpeg")))
21014 (substitute* '("pydub/utils.py")
21015 (("return \"ffmpeg\"")
21016 (string-append "return \"" ffmpeg "/bin/ffmpeg\""))
21017 (("return \"ffplay\"")
21018 (string-append "return \"" ffmpeg "/bin/ffplay\""))
21019 (("return \"ffprobe\"")
21020 (string-append "return \"" ffmpeg "/bin/ffprobe\""))
21021 (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff"))
21023 (home-page "https://pydub.com")
21027 (list python-scipy))
21028 (synopsis "Manipulate audio with a high level interface in Python")
21030 "@code{pydub} makes it easy to manipulate audio in Python. It relies on
21031 @code{ffmpeg} to open various audio formats.")
21032 (license license:expat))) ; MIT license
21034 (define-public python-tqdm
21036 (name "python-tqdm")
21041 (uri (pypi-uri "tqdm" version))
21044 "1r7i9kswpnrx4ppfvzz6discb04j1rqkqxdwa2sc2la900m6hksz"))))
21045 (build-system python-build-system)
21047 '(#:phases (modify-phases %standard-phases
21050 (invoke "pytest" "-vv"
21051 "-o" "asyncio_mode=auto"
21052 "-k" "not perf"))))))
21054 (list python-pytest python-pytest-asyncio python-pytest-timeout
21055 python-setuptools-scm python-toml))
21056 (home-page "https://github.com/tqdm/tqdm")
21057 (synopsis "Fast, extensible progress meter")
21059 "Make loops show a progress bar on the console by just wrapping any
21060 iterable with @code{|tqdm(iterable)|}. Offers many options to define
21061 design and layout.")
21062 (license (list license:mpl2.0 license:expat))))
21064 (define-public python-pkginfo
21066 (name "python-pkginfo")
21071 (uri (pypi-uri "pkginfo" version))
21073 (base32 "0z46w559hrl79gf7navgzimj21ma821wka27jh58fvyqilqs8kd8"))))
21074 (build-system python-build-system)
21076 (list python-wheel))
21077 (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk")
21078 (synopsis "Query metadatdata from sdists, bdists, and installed packages")
21080 "API to query the distutils metadata written in @file{PKG-INFO} inside a
21081 source distriubtion (an sdist) or a binary distribution (e.g., created by
21082 running bdist_egg). It can also query the EGG-INFO directory of an installed
21083 distribution, and the *.egg-info stored in a \"development checkout\" (e.g,
21084 created by running @code{python setup.py develop}).")
21085 (license license:expat)))
21087 (define-public python-twine
21089 (name "python-twine")
21094 (uri (pypi-uri "twine" version))
21096 (base32 "11rpd653zcgzkq3sgwkzs3mpxl3r5rij59745ni84ikv8smjmlm3"))))
21097 (build-system python-build-system)
21102 python-readme-renderer
21104 python-requests-toolbelt))
21105 (home-page "https://github.com/pypa/twine")
21106 (synopsis "Collection of utilities for interacting with PyPI")
21108 "@code{twine} currently supports registering projects and uploading
21109 distributions. It authenticates the user over HTTPS, allows them to pre-sign
21110 their files and supports any packaging format (including wheels).")
21111 (license license:asl2.0)))
21113 (define-public python-linecache2
21115 (name "python-linecache2")
21120 (uri (pypi-uri "linecache2" version))
21123 "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
21124 (build-system python-build-system)
21126 `(;; The tests depend on unittest2, and our version is a bit too old.
21129 `(("python-pbr" ,python-pbr-minimal)))
21131 "https://github.com/testing-cabal/linecache2")
21132 (synopsis "Backports of the linecache module")
21134 "The linecache module allows one to get any line from any file, while
21135 attempting to optimize internally, using a cache, the common case where many
21136 lines are read from a single file.")
21137 (license license:psfl)))
21139 (define-public python-traceback2
21141 (name "python-traceback2")
21146 (uri (pypi-uri "traceback2" version))
21149 "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
21150 (build-system python-build-system)
21152 `(;; python-traceback2 and python-unittest2 depend on one another.
21155 `(("python-pbr" ,python-pbr-minimal)))
21157 (list python-linecache2 python-six))
21159 "https://github.com/testing-cabal/traceback2")
21160 (synopsis "Backports of the traceback module")
21162 "This module provides a standard interface to extract, format and print
21163 stack traces of Python programs. It exactly mimics the behavior of the Python
21164 interpreter when it prints a stack trace.")
21165 (license license:psfl)))
21167 (define-public python-ratelimiter
21169 (name "python-ratelimiter")
21174 (uri (pypi-uri "ratelimiter" version))
21177 "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p"))))
21178 (build-system python-build-system)
21180 '(#:tests? #f)) ; There are no tests in the pypi archive.
21181 (home-page "https://github.com/RazerM/ratelimiter")
21182 (synopsis "Simple rate limiting object")
21184 "The @code{ratelimiter} module ensures that an operation will not be
21185 executed more than a given number of times during a given period.")
21186 (license license:asl2.0)))
21188 (define-public python-jsonrpclib-pelix
21190 (name "python-jsonrpclib-pelix")
21195 (uri (pypi-uri "jsonrpclib-pelix" version))
21198 "0f83z5zi7w32vprhk1dyc94ir1bh4hdd57bjdbwkq9ykng8qilhl"))))
21199 (build-system python-build-system)
21201 `(#:tests? #f)) ; no tests in PyPI tarball
21202 (home-page "https://github.com/tcalmant/jsonrpclib/")
21203 (synopsis "JSON-RPC 2.0 client library for Python")
21205 "This library implements the JSON-RPC v2.0
21206 specification (backwards-compatible) as a client library for Python. This
21207 version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote
21209 (license license:asl2.0)))
21211 (define-public python-setuptools-scm-git-archive
21213 (name "python-setuptools-scm-git-archive")
21218 (uri (pypi-uri "setuptools_scm_git_archive" version))
21221 "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
21222 (build-system python-build-system)
21224 '(#:phases (modify-phases %standard-phases
21225 (add-after 'unpack 'dont-install-defunct-egginfo
21227 ;; When a ".git" directory is missing, the setup.py
21228 ;; script invokes setuptools.setup twice, once with
21229 ;; "0" as the version. Prevent that.
21230 (substitute* "setup.py"
21231 (("if not isdir\\('\\.git'\\):")
21234 (list python-pytest))
21236 (list python-setuptools-scm))
21237 (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
21238 (synopsis "Setuptools_scm plugin for git archives")
21240 "The setuptools_scm_git_archive package is a plugin to
21241 setuptools_scm, which supports obtaining versions from git archives that
21242 belong to tagged versions.")
21243 (license license:expat)))
21245 (define-public python-setuptools-git
21247 (name "python-setuptools-git")
21252 (uri (pypi-uri "setuptools-git" version))
21255 "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z"))))
21256 (build-system python-build-system)
21259 (modify-phases %standard-phases
21260 ;; This is needed for tests.
21261 (add-after 'unpack 'configure-git
21263 (setenv "HOME" "/tmp")
21264 (invoke "git" "config" "--global" "user.email" "guix")
21265 (invoke "git" "config" "--global" "user.name" "guix")
21268 `(("git" ,git-minimal)))
21269 (home-page "https://github.com/msabramo/setuptools-git")
21270 (synopsis "Setuptools revision control system plugin for Git")
21272 "This package provides a plugin for Setuptools for revision control with
21274 (license license:bsd-3)))
21276 (define-public python-setuptools-rust
21278 (name "python-setuptools-rust")
21283 (uri (pypi-uri "setuptools-rust" version))
21285 (base32 "1lb57qx1azklgzmalflq960agvwci4bwddw0zvlc9zy00fsvkbd0"))))
21286 (build-system python-build-system)
21287 (arguments '(#:tests? #f)) ;no tests
21289 (list python-setuptools-scm))
21291 (list python-semantic-version python-typing-extensions))
21292 (home-page "https://github.com/PyO3/setuptools-rust")
21293 (synopsis "Setuptools plugin for Rust extensions")
21295 "@code{setuptools-rust} is a plugin for @code{setuptools} to build
21296 Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.")
21297 (license license:expat)))
21299 (define-public python-pyclipper
21301 (name "python-pyclipper")
21302 (version "1.3.0.post3")
21306 (uri (pypi-uri "pyclipper" version))
21308 (base32 "0vqzbmq2di1jaj6230m5i1ld0mg6wdb1c6r6i5zli54varavr7v3"))
21309 (modules '((guix build utils)))
21312 ;; This file is generated by Cython.
21313 (delete-file "src/pyclipper/_pyclipper.cpp") #t))))
21314 (build-system python-build-system)
21317 (modify-phases %standard-phases
21318 (add-before 'build 'cythonize-sources
21320 (with-directory-excursion "src/pyclipper"
21321 (invoke "cython" "--cplus" "_pyclipper.pyx")))))))
21323 (list python-cython python-setuptools-scm
21324 python-pytest python-pytest-runner))
21325 (home-page "https://github.com/greginvm/pyclipper")
21326 (synopsis "Wrapper for Angus Johnson's Clipper library")
21328 "Pyclipper is a Cython wrapper for the C++ translation of the
21329 Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).")
21330 (license license:expat)))
21332 (define-public python-tempdir
21334 (name "python-tempdir")
21339 (uri (pypi-uri "tempdir" version))
21342 "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
21343 (build-system python-build-system)
21344 (home-page "https://pypi.org/project/tempdir/")
21346 ;; the package has no tests
21348 (synopsis "Python library for managing temporary directories")
21350 "This library manages temporary directories that are automatically
21351 deleted with all their contents when they are no longer needed. It is
21352 particularly convenient for use in tests.")
21353 (license license:expat)))
21355 (define-public python-tempora
21357 (name "python-tempora")
21362 (uri (pypi-uri "tempora" version))
21364 (base32 "09wirlk5vmxlhl9rnxp7g5qz2nsd6b0gnzk5fczbz0s8lsbz386b"))))
21365 (build-system pyproject-build-system)
21367 ;; Do not test the myproject.toml build as it tries to pull
21368 ;; dependencies from the Internet.
21369 (list #:test-flags #~'("-vv" "-k" "not project")))
21371 (list python-freezegun
21373 python-pytest-black
21374 python-pytest-checkdocs
21376 python-pytest-enabler
21377 python-pytest-flake8
21378 python-pytest-freezegun
21380 python-setuptools-scm
21381 python-types-freezegun
21382 python-types-pytz))
21383 (propagated-inputs (list python-jaraco-functools python-pytz))
21384 (home-page "https://github.com/jaraco/tempora")
21385 (synopsis "Python date and time objects and routines")
21386 (description "The @code{tempora} Python library contains miscellaneous
21387 date and time related utilities and constants, routines for measuring,
21388 profiling, and getting datetime-aware @acronym{UTC, Coordinated Universal
21389 Time} values as well as an event scheduler.")
21390 (license license:expat)))
21392 (define-public python-activepapers
21394 (name "python-activepapers")
21399 (uri (pypi-uri "ActivePapers.Py" version))
21402 "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8"))))
21403 (build-system python-build-system)
21405 `(#:modules ((ice-9 ftw)
21408 (guix build python-build-system))
21411 (modify-phases %standard-phases
21412 (add-after 'unpack 'delete-python2-code
21414 (for-each delete-file
21415 '("lib/activepapers/builtins2.py"
21416 "lib/activepapers/standardlib2.py"
21417 "lib/activepapers/utility2.py"))))
21420 ;; Deactivate the test cases that download files
21421 (setenv "NO_NETWORK_ACCESS" "1")
21422 ;; For some strange reason, some tests fail if nosetests runs all
21423 ;; test modules in a single execution. They pass if each test
21424 ;; module is run individually.
21425 (for-each (lambda (filename)
21426 (invoke "nosetests"
21427 (string-append "tests/" filename)))
21430 (string-suffix? ".py" filename)))))))))
21432 (list python-tempdir python-nose))
21434 (list python-h5py))
21435 (home-page "https://www.activepapers.org/")
21436 (synopsis "Executable papers for scientific computing")
21438 "ActivePapers is a tool for working with executable papers, which
21439 combine data, code, and documentation in single-file packages,
21440 suitable for publication as supplementary material or on repositories
21441 such as figshare or Zenodo.")
21442 (license license:bsd-3)))
21444 (define-public python-semver
21446 (name "python-semver")
21451 (uri (pypi-uri "semver" version))
21454 "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
21455 (build-system python-build-system)
21457 `(#:phases (modify-phases %standard-phases
21460 (delete-file "setup.cfg")
21461 (invoke "py.test"))))))
21463 (list python-pytest))
21464 (home-page "https://github.com/k-bx/python-semver")
21465 (synopsis "Python helper for Semantic Versioning")
21466 (description "This package provides a Python library for
21467 @url{Semantic Versioning, http://semver.org/}.")
21468 (license license:bsd-3)))
21470 (define-public python-pyro4
21472 (name "python-pyro4")
21477 (uri (pypi-uri "Pyro4" version))
21479 (base32 "0gsjg869y4gpy265s1gj1f2qy6jn5iz8r2bwwnq78r1r5yi15zib"))))
21480 (build-system python-build-system)
21482 '(#:tests? #f)) ;FIXME: Some tests require network access.
21484 (list python-cloudpickle python-dill python-msgpack))
21486 (list python-serpent))
21487 (home-page "https://pyro4.readthedocs.io")
21488 (synopsis "Distributed object middleware for Python")
21490 "Pyro enables you to build applications in which objects can talk to each
21491 other over the network. You can just use normal Python method calls to call
21492 objects on other machines, also known as remote procedure calls (RPC).")
21493 (license license:expat)))
21495 (define-public python-phonenumbers
21497 (name "python-phonenumbers")
21502 (uri (pypi-uri "phonenumbers" version))
21505 "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1"))))
21506 (build-system python-build-system)
21508 "https://github.com/daviddrysdale/python-phonenumbers")
21510 "Python library for dealing with international phone numbers")
21512 "This package provides a Python port of Google's libphonenumber library.")
21513 (license license:asl2.0)))
21515 (define-public python-heapdict
21517 (name "python-heapdict")
21522 (uri (pypi-uri "HeapDict" version))
21525 "1dnd7v9adqd21bf4ih2wzn9a7b41m0nccb0vbxny9n037rxzb5c4"))))
21526 (build-system python-build-system)
21527 (home-page "http://stutzbachenterprises.com/")
21528 (synopsis "Heap with decrease-key and increase-key operations")
21530 "heapdict implements the MutableMapping ABC, meaning it works pretty much
21531 like a regular Python @code{dict}. It’s designed to be used as a priority
21533 (license license:bsd-3)))
21535 (define-public python-zict
21537 (name "python-zict")
21542 (uri (pypi-uri "zict" version))
21545 "05pd1hyhqvpw87rnbvl3vdyf619snpyccbswaxisdj17frwnjacf"))))
21546 (build-system python-build-system)
21548 (list python-heapdict))
21550 (list python-pytest))
21551 (home-page "https://zict.readthedocs.io/en/latest/")
21552 (synopsis "Composable mutable mapping tools")
21553 (description "This package provides abstract @code{MutableMapping} classes
21554 that consume and build on other @code{MutableMappings}. Several of these can
21555 be composed with one another to form intuitive interfaces over complex storage
21556 systems policies.")
21557 (license license:bsd-3)))
21559 (define-public python-send2trash
21561 (name "python-send2trash")
21564 (origin (method git-fetch)
21565 ;; Source tarball on PyPI doesn't include tests.
21566 (uri (git-reference
21567 (url "https://github.com/arsenetar/send2trash")
21569 (file-name (git-file-name name version))
21572 "1k7dfypaaq4f36fbciaasv72j6wgjihw8d88axmz9c329bz8v5qx"))))
21573 (build-system python-build-system)
21576 (modify-phases %standard-phases
21577 (add-before 'check 'pre-check
21579 (setenv "HOME" "/tmp")))
21581 (lambda* (#:key tests? #:allow-other-keys)
21583 (invoke "pytest" "-vv")))))))
21584 (native-inputs (list python-pytest))
21585 (home-page "https://github.com/arsenetar/send2trash")
21586 (synopsis "Send files to the user's @file{~/Trash} directory")
21587 (description "This package provides a Python library to send files to the
21588 user's @file{~/Trash} directory.")
21589 (license license:bsd-3)))
21591 (define-public python-pyfavicon
21593 (name "python-pyfavicon")
21598 (uri (pypi-uri "pyfavicon" version))
21600 (base32 "15wfpa99hvcfsv8j0m8iprmydi2p4qkhm86qfx485244y0ia5mgx"))))
21601 (build-system python-build-system)
21603 ;; There are no tests in the PyPI tarball and the tests from the
21604 ;; repository require online data.
21607 (list python-aiohttp python-beautifulsoup4 python-pillow))
21608 (home-page "https://github.com/bilelmoussaoui/pyfavicon")
21609 (synopsis "Async favicon fetcher")
21611 "@code{pyfavicon} is an async favicon fetcher.")
21612 (license license:expat)))
21614 (define-public python-yamllint
21616 (name "python-yamllint")
21621 (uri (pypi-uri "yamllint" version))
21623 (base32 "090krlxj7az0d9yl8i20vjrqi66dfxx7y5xakjhxzsfp7qmldnc7"))))
21624 (build-system python-build-system)
21626 (list python-pathspec python-pyyaml python-setuptools))
21627 (home-page "https://github.com/adrienverge/yamllint")
21628 (synopsis "Linter for YAML files")
21630 "Yamllint is a linter for YAML files. yamllint does not only check for
21631 syntax validity, but for weirdnesses like key repetition and cosmetic problems
21632 such as lines length, trailing spaces, indentation, etc.")
21633 (license license:gpl3+)))
21635 (define-public python-yapf
21637 (name "python-yapf")
21642 (uri (pypi-uri "yapf" version))
21645 "1pj3xzblmbssshi889b6n9hwqbjpabw6j0fimlng2sshd3226bki"))))
21646 (build-system python-build-system)
21647 (home-page "https://github.com/google/yapf")
21648 (synopsis "Formatter for Python code")
21649 (description "YAPF is a formatter for Python code. It's based off of
21650 @dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm
21651 takes the code and reformats it to the best formatting that conforms to the
21652 style guide, even if the original code didn't violate the style guide.")
21653 (license license:asl2.0)))
21655 (define-public python-yq
21662 (uri (pypi-uri "yq" version))
21665 "1wklgs3d9si475nffw9agq5kgk8bdicbsmlj4sx4kiw64ji4ma1h"))))
21666 (build-system python-build-system)
21669 (modify-phases %standard-phases
21670 (add-after 'unpack 'patch
21671 (lambda* (#:key inputs #:allow-other-keys)
21672 (substitute* "yq/__init__.py"
21673 (("Popen\\(\\[\"jq")
21676 (assoc-ref inputs "jq")
21680 (list python-argcomplete python-pyyaml python-xmltodict python-toml jq))
21682 (list python-coverage python-flake8 python-setuptools-scm python-wheel))
21683 (home-page "https://github.com/kislyuk/yq")
21684 (synopsis "Command-line YAML/XML processor")
21686 "This package provides @command{yq} and @command{xq} for processing YAML
21687 and XML respectively. The processing is done through @command{jq}, @command{jq}
21688 filters can be used to process the data as it passes through.")
21689 (license license:asl2.0)))
21691 (define-public python-gyp
21692 (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
21695 (name "python-gyp")
21696 ;; Google does not release versions,
21697 ;; based on second most recent commit date.
21698 (version (git-version "0.0.0" revision commit))
21701 ;; Google does not release tarballs,
21702 ;; git checkout is needed.
21704 (uri (git-reference
21705 (url "https://chromium.googlesource.com/external/gyp")
21707 (file-name (git-file-name name version))
21710 "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9"))))
21711 (build-system python-build-system)
21712 (home-page "https://gyp.gsrc.io/")
21713 (synopsis "GYP is a Meta-Build system")
21715 "GYP builds build systems for large, cross platform applications.
21716 It can be used to generate XCode projects, Visual Studio projects, Ninja build
21717 files, and Makefiles.")
21718 (license license:bsd-3))))
21720 (define-public python-whatever
21722 (name "python-whatever")
21727 (uri (git-reference
21728 (url "https://github.com/Suor/whatever")
21730 (file-name (git-file-name name version))
21732 (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5"))))
21733 (build-system python-build-system)
21736 (modify-phases %standard-phases
21739 (invoke "py.test"))))))
21741 (list python-pytest))
21742 (home-page "https://github.com/Suor/whatever")
21743 (synopsis "Make anonymous functions by partial application of operators")
21744 (description "@code{whatever} provides an easy way to make anonymous
21745 functions by partial application of operators.")
21746 (license license:bsd-3)))
21748 (define-public python-funcy
21750 (name "python-funcy")
21755 (uri (git-reference
21756 (url "https://github.com/Suor/funcy")
21759 (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
21760 (file-name (git-file-name name version))))
21761 (build-system python-build-system)
21764 (modify-phases %standard-phases
21767 (invoke "py.test"))))))
21769 (list python-pytest python-whatever))
21770 (home-page "https://github.com/Suor/funcy")
21771 (synopsis "Functional tools")
21772 (description "@code{funcy} is a library that provides functional tools.
21775 @item merge - Merges collections of the same type
21776 @item walk - Type-preserving map
21777 @item select - Selects a part of a collection
21778 @item take - Takes the first n items of a collection
21779 @item first - Takes the first item of a collection
21780 @item remove - Predicated-removes items of a collection
21781 @item concat - Concatenates two collections
21782 @item flatten - Flattens a collection with subcollections
21783 @item distinct - Returns only distinct items
21784 @item split - Predicated-splits a collection
21785 @item split_at - Splits a collection at a given item
21786 @item group_by - Groups items by group
21787 @item pairwise - Pairs off adjacent items
21788 @item partial - Partially-applies a function
21789 @item curry - Curries a function
21790 @item compose - Composes functions
21791 @item complement - Complements a predicate
21792 @item all_fn - \"all\" with predicate
21794 (license license:bsd-3)))
21796 (define-public python-isoweek
21798 (name "python-isoweek")
21803 (uri (pypi-uri "isoweek" version))
21806 "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk"))))
21807 (build-system python-build-system)
21808 (home-page "https://github.com/gisle/isoweek")
21809 (synopsis "Objects representing a week")
21810 (description "The @code{isoweek} module provide the class Week that
21811 implements the week definition of ISO 8601. This standard also defines
21812 a notation for identifying weeks; yyyyWww (where the W is a literal).
21813 Week instances stringify to this form.")
21814 (license license:bsd-3)))
21816 (define-public python-pyzbar
21818 (name "python-pyzbar")
21822 ;; There's no source tarball on PyPI.
21824 (uri (git-reference
21825 (url "https://github.com/NaturalHistoryMuseum/pyzbar")
21826 (commit (string-append "v" version))))
21827 (file-name (git-file-name name version))
21829 (base32 "1fqlfg5p2v9lzzzi0si2sz54lblprk6jjjhjw54b64lp58c1yhsl"))))
21830 (build-system python-build-system)
21833 (modify-phases %standard-phases
21834 (add-after 'unpack 'remove-failing-test
21836 ;; This tests if find_library was called once, but we remove
21837 ;; the call in the stage below to make the library find libzbar.
21838 (delete-file "pyzbar/tests/test_zbar_library.py")
21840 (add-before 'build 'set-library-file-name
21841 (lambda* (#:key inputs #:allow-other-keys)
21842 (let ((libzbar (assoc-ref inputs "zbar")))
21843 (substitute* "pyzbar/zbar_library.py"
21844 (("find_library\\('zbar'\\)")
21845 (string-append "'" libzbar "/lib/libzbar.so.0'")))
21848 (list pkg-config python-numpy python-pillow))
21851 (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/")
21852 (synopsis "Read one-dimensional barcodes and QR codes")
21854 "Read one-dimensional barcodes and QR codes using the zbar library.
21860 @item Works with PIL / Pillow images, OpenCV / numpy ndarrays, and raw bytes
21861 @item Decodes locations of barcodes
21862 @item No dependencies, other than the zbar library itself
21864 (license license:expat)))
21866 (define-public python-tokenize-rt
21868 (name "python-tokenize-rt")
21873 (uri (pypi-uri "tokenize-rt" version))
21876 "1yjvbz7rvrz31zjyax1cgy3xhf4wb3j18jwnj4bnl77ca4gliyiw"))))
21877 (build-system python-build-system)
21878 (home-page "https://github.com/asottile/tokenize-rt")
21879 (synopsis "Wrapper around the stdlib tokenize which roundtrips")
21881 "This Python library is a wrapper around @code{tokenize} from the Python
21882 standard library. It provides two additional tokens @code{ESCAPED_NL} and
21883 @code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens}
21884 and @code{tokens_to_src} to roundtrip.")
21885 (license license:expat)))
21887 (define-public python-future-fstrings
21889 (name "python-future-fstrings")
21894 (uri (pypi-uri "future_fstrings" version))
21897 "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47"))))
21898 (build-system python-build-system)
21900 (list python-tokenize-rt))
21901 (home-page "https://github.com/asottile/future-fstrings")
21902 (synopsis "Backport of fstrings to Python < 3.6")
21904 "This package provides a UTF-8 compatible encoding
21905 @code{future_fstrings}, which performs source manipulation. It decodes the
21906 source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
21907 @code{f} strings.")
21908 (license license:expat)))
21910 (define-public python-typed-ast
21912 (name "python-typed-ast")
21917 (uri (git-reference
21918 (url "https://github.com/python/typed_ast")
21921 (base32 "1xfcs5246c8v5600aaa8zs7ii4sxb62q6r3sb2fgazyjx97wrxd9"))
21922 (file-name (git-file-name name version))))
21923 (build-system python-build-system)
21926 (modify-phases %standard-phases
21929 (invoke "pytest"))))))
21930 (native-inputs (list python-pytest))
21931 (home-page "https://github.com/python/typed_ast")
21932 (synopsis "Fork of Python @code{ast} modules with type comment support")
21933 (description "This package provides a parser similar to the standard
21934 @code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast}
21935 include PEP 484 type comments and are independent of the version of Python
21936 under which they are run. The @code{typed_ast} parsers produce the standard
21937 Python AST (plus type comments), and are both fast and correct, as they are
21938 based on the CPython 2.7 and 3.7 parsers.")
21939 ;; See the file "LICENSE" for the details.
21940 (license (list license:psfl
21942 license:expat)))) ;ast27/Parser/spark.py
21944 (define-public python-typer
21946 (name "python-typer")
21951 (uri (git-reference
21952 (url "https://github.com/tiangolo/typer")
21954 (file-name (git-file-name name version))
21956 (base32 "1knv353qhkl2imav3jfp6bgq47m8wkkqhq1dzmqg2sv8rsy7zgl7"))))
21957 (build-system python-build-system)
21960 ,#~(modify-phases %standard-phases
21961 ;; Unfortunately, this doesn't seem to be enough to fix these two
21962 ;; tests, but we'll patch this anyway.
21963 (add-after 'unpack 'patch-shell-reference
21965 (substitute* "tests/test_completion/test_completion.py"
21966 (("\"bash\"") (string-append "\"" (which "bash") "\""))
21968 (string-append "\"" (which "bash") "\"")))))
21971 (invoke "flit" "build")))
21973 (lambda* (#:key inputs outputs #:allow-other-keys)
21974 (add-installed-pythonpath inputs outputs)
21977 (format #true wheel)
21978 (invoke "python" "-m" "pip" "install"
21979 wheel (string-append "--prefix=" #$output)))
21980 (find-files "dist" "\\.whl$"))))
21982 (lambda* (#:key tests? #:allow-other-keys)
21984 (setenv "HOME" "/tmp") ; some tests need it
21986 ;; This is for completion tests
21987 (with-output-to-file "/tmp/.bashrc"
21988 (lambda _ (display "# dummy")))
21990 (setenv "GUIX_PYTHONPATH"
21991 (string-append (getcwd) ":"
21992 (getenv "GUIX_PYTHONPATH")))
21993 (let ((disabled-tests (list "test_show_completion"
21994 "test_install_completion")))
21995 (invoke "python" "-m" "pytest" "tests/"
21997 (string-append "not "
21998 (string-join disabled-tests
21999 " and not "))))))))))
22001 (list python-click))
22003 (list python-coverage python-flit python-pytest python-rich
22004 python-shellingham))
22005 (home-page "https://github.com/tiangolo/typer")
22007 "Typer builds CLI based on Python type hints")
22009 "Typer is a library for building CLI applications. It's based on
22010 Python 3.6+ type hints.")
22012 (license license:expat)))
22014 (define-public python-typeguard
22016 (name "python-typeguard")
22021 (uri (pypi-uri "typeguard" version))
22023 (base32 "1i5qzcyw2715h1g1hvj7fxykck2bkxyshpngjr3nfcx1lf6smv80"))))
22024 (build-system python-build-system)
22028 #~(modify-phases %standard-phases
22030 (lambda* (#:key tests? #:allow-other-keys)
22032 (invoke "pytest" "-vv" "-k"
22033 ;; XXX: These fail when installed as a library:
22034 ;; https://github.com/agronholm/typeguard/issues/176
22035 "not usefixtures and not test_cached_module")))))))
22037 (list python-mypy python-pytest python-typing-extensions))
22038 (home-page "https://github.com/agronholm/typeguard")
22039 (synopsis "Run-time type checker for Python")
22041 "@code{typeguard} provides run-time type checking for functions defined
22042 with PEP 484 argument (and return) type annotations.")
22043 (license license:expat)))
22045 (define-public python-typing-extensions
22047 (name "python-typing-extensions")
22050 ;; The test script is missing from the PyPI archive.
22052 (uri (git-reference
22053 (url "https://github.com/python/typing")
22055 (file-name (git-file-name name version))
22058 "0a35fh5wk9s538x0w3dz95y0avnhd2srzyv9s1a372711n8hdl4p"))))
22059 (build-system python-build-system)
22062 #:tests? #f ;requires Python's test module, not available in Guix
22064 #~(modify-phases %standard-phases
22065 (add-after 'unpack 'enter-source-directory
22067 (chdir "typing_extensions")))
22068 ;; XXX: PEP 517 manual build copied from python-isort.
22071 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
22073 (lambda* (#:key tests? #:allow-other-keys)
22075 (invoke "python" "src/test_typing_extensions.py"))))
22078 (let ((whl (car (find-files "dist" "\\.whl$"))))
22079 (invoke "pip" "--no-cache-dir" "--no-input"
22080 "install" "--no-deps" "--prefix" #$output whl)))))))
22081 (native-inputs (list python-pypa-build python-flit-core))
22082 (home-page "https://github.com/python/typing/typing_extensions")
22083 (synopsis "Experimental type hints for Python")
22085 "The typing_extensions module contains additional @code{typing} hints not
22086 yet present in the of the @code{typing} standard library.
22087 Included are implementations of:
22090 @item ContextManager
22101 @item TYPE_CHECKING
22102 @item AsyncGenerator
22104 (license license:psfl)))
22106 (define-public python-typing-extensions-next
22108 (inherit python-typing-extensions)
22109 (name "python-typing-extensions")
22113 (uri (git-reference
22114 (url "https://github.com/python/typing")
22116 (file-name (git-file-name name version))
22119 "1bbry1rg7q5ppkgzdk4nwl7q1w8bbhajm4q68wb9dm6rf7hg1023"))))))
22121 (define-public bpython
22128 (uri (pypi-uri "bpython" version))
22130 (base32 "0ah5giynavyh70yc0jqgmjaajv3xg5j2y7k9i3q8mi47r2mph04z"))))
22131 (build-system python-build-system)
22134 (modify-phases %standard-phases
22135 (add-after 'unpack 'remove-failing-test
22137 ;; Remove failing test. FIXME: make it pass
22138 (delete-file "bpython/test/test_args.py")
22140 (add-after 'wrap 'add-aliases
22141 ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc.
22142 (lambda* (#:key outputs #:allow-other-keys)
22143 (let ((out (assoc-ref outputs "out")))
22146 (symlink old (string-append out "/bin/" new)))
22147 '("bpython" "bpython-curses" "bpython-urwid" "bpdb")
22148 '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3")))
22151 (list python-pygments
22158 ;; optional dependencies
22159 python-urwid ; for bpython-urwid only
22163 (list python-sphinx python-mock python-tox python-wheel))
22164 (home-page "https://bpython-interpreter.org/")
22165 (synopsis "Fancy interface to the Python interpreter")
22166 (description "Bpython is a fancy interface to the Python
22167 interpreter. bpython's main features are
22170 @item in-line syntax highlighting,
22171 @item readline-like autocomplete with suggestions displayed as you type,
22172 @item expected parameter list for any Python function,
22173 @item \"rewind\" function to pop the last line of code from memory and
22175 @item send the code you've entered off to a pastebin,
22176 @item save the code you've entered to a file, and
22177 @item auto-indentation.
22179 (license license:expat)))
22181 (define-public python-pyinotify
22183 (name "python-pyinotify")
22187 (uri (pypi-uri "pyinotify" version))
22190 "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw"))))
22191 (build-system python-build-system)
22192 (arguments `(#:tests? #f)) ;no tests
22193 (home-page "https://github.com/seb-m/pyinotify")
22194 (synopsis "Python library for monitoring inotify events")
22196 "@code{pyinotify} provides a Python interface for monitoring
22197 file system events on Linux.")
22198 (license license:expat)))
22201 (define-public python-more-itertools
22203 (name "python-more-itertools")
22208 (uri (pypi-uri "more-itertools" version))
22211 "01x5nwm1zxmnd06cllbdd095xxc2nd25ing1a726m2kd30rbkpdi"))))
22212 (build-system python-build-system)
22213 (home-page "https://github.com/erikrose/more-itertools")
22214 (synopsis "More routines for operating on iterables, beyond itertools")
22215 (description "Python's built-in @code{itertools} module implements a
22216 number of iterator building blocks inspired by constructs from APL, Haskell,
22217 and SML. @code{more-itertools} includes additional building blocks for
22218 working with iterables.")
22219 (license license:expat)))
22221 (define-public python-latexcodec
22223 (name "python-latexcodec")
22228 (uri (pypi-uri "latexcodec" version))
22230 (base32 "16pynfnn8y8xp55yp06i721fccv5dlx9ba6k5bzcwq9j6wf5b8ia"))))
22231 (build-system python-build-system)
22234 (home-page "https://readthedocs.org/projects/latexcodec/")
22235 (synopsis "Work with LaTeX code in Python")
22236 (description "Lexer and codec to work with LaTeX code in Python.")
22237 (license license:expat)))
22239 (define-public python-pybtex
22241 (name "python-pybtex")
22246 (uri (pypi-uri "pybtex" version))
22248 (base32 "0ma7sc10hk6caq5zghbk865vrlaynz7x5z630z0facqpnqssx3l1"))))
22249 (build-system python-build-system)
22251 (list python-pytest))
22253 (list python-latexcodec python-pyyaml python-six))
22256 #:phases #~(modify-phases %standard-phases
22258 (lambda* (#:key tests? #:allow-other-keys)
22260 (invoke "pytest")))))))
22261 (home-page "https://pybtex.org/")
22262 (synopsis "BibTeX-compatible bibliography processor")
22263 (description "Pybtex is a BibTeX-compatible bibliography processor written
22264 in Python. You can simply type pybtex instead of bibtex.")
22265 (license license:expat)))
22267 (define-public python-onetimepass
22269 (name "python-onetimepass")
22274 (uri (pypi-uri "onetimepass" version))
22276 (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5"))))
22277 (build-system python-build-system)
22278 (propagated-inputs (list python-six))
22279 (home-page "https://github.com/tadeck/onetimepass/")
22280 (synopsis "One-time password library")
22281 (description "Python one-time password library for HMAC-based (HOTP) and
22282 time-based (TOTP) passwords.")
22283 (license license:expat)))
22285 (define-public python-parso
22287 (name "python-parso")
22292 (uri (pypi-uri "parso" version))
22294 (base32 "185gkxq92kqiw2h5zp1cmyn04055x0lix4hmi5c077xm1clvw1wc"))))
22296 (list python-pytest))
22297 (build-system python-build-system)
22300 (modify-phases %standard-phases
22302 (lambda* (#:key tests? #:allow-other-keys)
22304 (invoke "pytest" "-vv")))))))
22305 (home-page "https://github.com/davidhalter/parso")
22306 (synopsis "Python Parser")
22307 (description "Parso is a Python parser that supports error recovery and
22308 round-trip parsing for different Python versions (in multiple Python versions).
22309 Parso is also able to list multiple syntax errors in your Python file.")
22310 (license license:expat)))
22312 (define-public python-async-generator
22314 (name "python-async-generator")
22319 (uri (pypi-uri "async_generator" version))
22322 "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf"))))
22323 (build-system python-build-system)
22325 (list python-pytest))
22326 (home-page "https://github.com/python-trio/async_generator")
22327 (synopsis "Async generators and context managers for Python 3.5+")
22328 (description "@code{async_generator} back-ports Python 3.6's native async
22329 generators and Python 3.7's context managers into Python 3.5.")
22331 (license (list license:expat license:asl2.0))))
22333 (define-public python-async-timeout
22335 (name "python-async-timeout")
22340 (uri (pypi-uri "async-timeout" version))
22343 "05bbjz16n1a7m1s3lmcwri2x5rc7hnh6f2hdr2lbflnv1mjf2qr1"))))
22344 (build-system python-build-system)
22345 (home-page "https://github.com/aio-libs/async-timeout")
22346 (synopsis "Timeout context manager for asyncio programs")
22347 (description "@code{async-timeout} provides a timeout timeout context
22348 manager compatible with @code{asyncio}.")
22349 (license license:asl2.0)))
22351 (define-public python-glob2
22353 (name "python-glob2")
22358 (uri (git-reference
22359 (url "https://github.com/miracle2k/python-glob2")
22360 (commit (string-append "v" version))))
22361 (file-name (git-file-name name version))
22363 (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919"))))
22364 (build-system python-build-system)
22365 (home-page "https://github.com/miracle2k/python-glob2/")
22366 (synopsis "Extended Version of the python buildin glob module")
22367 (description "This is an extended version of the Python
22368 @url{http://docs.python.org/library/glob.html, built-in glob module} which
22372 @item The ability to capture the text matched by glob patterns, and return
22373 those matches alongside the file names.
22374 @item A recursive @code{**} globbing syntax, akin for example to the
22375 @code{globstar} option of Bash.
22376 @item The ability to replace the file system functions used, in order to glob
22377 on virtual file systems.
22378 @item Compatible with Python 2 and Python 3 (tested with 3.3).
22381 Glob2 currently based on the glob code from Python 3.3.1.")
22382 (license license:bsd-2)))
22384 (define-public python-gipc
22386 (name "python-gipc")
22391 (uri (pypi-uri "gipc" version ".zip"))
22394 "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2"))))
22395 (build-system python-build-system)
22399 (list python-gevent))
22400 (home-page "https://gehrcke.de/gipc/")
22401 (synopsis "Child process management in the context of gevent")
22402 (description "Usage of Python's multiprocessing package in a
22403 gevent-powered application may raise problems. With @code{gipc},
22404 process-based child processes can safely be created anywhere within a
22405 gevent-powered application.")
22406 (license license:expat)))
22408 (define-public python-beautifultable
22410 (name "python-beautifultable")
22415 (uri (pypi-uri "beautifultable" version))
22418 "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x"))))
22419 (build-system python-build-system)
22421 (list python-wcwidth))
22424 (modify-phases %standard-phases
22425 (add-after 'unpack 'patch-setup.py
22427 (substitute* "setup.py"
22429 "setup(\n test_suite=\"test\",")))))))
22430 (home-page "https://github.com/pri22296/beautifultable")
22431 (synopsis "Print ASCII tables for terminals")
22432 (description "@code{python-beautifultable} provides a class for easily
22433 printing tabular data in a visually appealing ASCII format to a terminal.
22435 Features include, but are not limited to:
22437 @item Full customization of the look and feel of the table
22438 @item Row and column accessors.
22439 @item Full support for colors using ANSI sequences or any library.
22440 @item Plenty of predefined styles and option to create custom ones.
22441 @item Support for Unicode characters.
22442 @item Supports streaming table when data is slow to retrieve.
22444 (license license:expat)))
22446 (define-public python-globber
22448 (name "python-globber")
22453 (uri (git-reference
22454 (url "https://github.com/asharov/globber")
22456 (file-name (git-file-name name version))
22459 "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk"))))
22460 (build-system python-build-system)
22461 (home-page "https://github.com/asharov/globber")
22462 (synopsis "Library for string matching with glob patterns")
22464 "Globber is a Python library for matching file names against glob patterns.
22465 In contrast to other glob-matching libraries, it matches arbitrary strings and
22466 doesn't require the matched names to be existing files. In addition, it
22467 supports the globstar @code{**} operator to match an arbitrary number of
22469 (license license:asl2.0)))
22471 (define-public python-git-hammer
22473 (name "python-git-hammer")
22478 (uri (git-reference
22479 (url "https://github.com/asharov/git-hammer")
22481 (file-name (git-file-name name version))
22484 "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr"))))
22485 (build-system python-build-system)
22488 (modify-phases %standard-phases
22489 (add-after 'unpack 'patch-setup.py
22491 (substitute* "setup.py"
22493 "setup(\n test_suite=\"test\",")))))))
22495 (list python-beautifultable
22501 python-sqlalchemy-utils))
22502 (home-page "https://github.com/asharov/git-hammer")
22503 (synopsis "Provide statistics for git repositories")
22505 "Git Hammer is a statistics tool for projects in git repositories.
22506 Its major feature is tracking the number of lines authored by each person for every
22507 commit, but it also includes some other useful statistics.")
22508 (license license:asl2.0)))
22510 (define-public python-fusepy
22512 (name "python-fusepy")
22517 (uri (pypi-uri "fusepy" version))
22520 "0v5grm4zyf58hsplwsxfbihddw95lz9w8cy3rpzbyha287swgx8h"))))
22521 (build-system python-build-system)
22524 (modify-phases %standard-phases
22525 (add-before 'build 'set-library-file-name
22526 (lambda* (#:key inputs #:allow-other-keys)
22527 (let ((fuse (assoc-ref inputs "fuse")))
22528 (substitute* "fuse.py"
22529 (("find_library\\('fuse'\\)")
22530 (string-append "'" fuse "/lib/libfuse.so'")))
22534 (home-page "https://github.com/fusepy/fusepy")
22535 (synopsis "Simple ctypes bindings for FUSE")
22536 (description "Python module that provides a simple interface to FUSE and
22537 MacFUSE. The binding is created using the standard @code{ctypes} library.")
22538 (license license:isc)))
22540 (define-public python-fusepyng
22542 (name "python-fusepyng")
22547 (uri (pypi-uri "fusepyng" version))
22550 "17w9iw6m6zjbmnhs4ikd27pq4mb1nan6k4ahlwyz40463vw6wkwb"))))
22551 (build-system python-build-system)
22554 (modify-phases %standard-phases
22555 (add-after 'unpack 'set-libfuse-path
22556 (lambda* (#:key inputs #:allow-other-keys)
22557 (let ((fuse (assoc-ref inputs "fuse")))
22558 (substitute* "fusepyng.py"
22559 (("os.environ.get\\('FUSE_LIBRARY_PATH'\\)")
22560 (string-append "\"" fuse "/lib/libfuse.so\""))))
22565 (list python-paramiko))
22566 (home-page "https://github.com/rianhunter/fusepyng")
22567 (synopsis "Simple ctypes bindings for FUSE")
22568 (description "@code{fusepyng} is a Python module that provides a simple
22569 interface to FUSE on various operating systems. It's just one file and is
22570 implemented using @code{ctypes}.")
22571 (license license:isc)))
22573 (define-public python-update-checker
22575 (name "python-update-checker")
22580 (uri (pypi-uri "update-checker" version))
22582 (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba"))))
22583 (build-system python-build-system)
22584 (propagated-inputs (list python-requests))
22585 (native-inputs (list python-black python-flake8 python-pytest))
22586 (home-page "https://github.com/bboe/update_checker")
22587 (synopsis "Python module that will check for package updates")
22588 (description "This package provides a Python module that will check for
22590 (license license:bsd-2)))
22592 (define-public python-userspacefs
22594 (name "python-userspacefs")
22599 (uri (pypi-uri "userspacefs" version))
22602 "0v0qkdwfc61s2yiq7d7amin93x5biypfmi9pfhf8yj1rdpx5yvsx"))))
22603 (build-system python-build-system)
22605 (list python-fusepyng))
22606 (home-page "https://github.com/rianhunter/userspacefs")
22607 (synopsis "User-space file systems for Python")
22609 "@code{userspacefs} is a library that allows you to easily write
22610 user-space file systems in Python.")
22611 (license license:gpl3+)))
22613 (define-public python-stone
22615 (name "python-stone")
22620 (uri (pypi-uri "stone" version))
22623 "0xby5mpsms7b2rv8j6mvxzmzz5i9ii01brb9ylxz6kiv2i08piwv"))))
22624 (build-system python-build-system)
22627 (modify-phases %standard-phases
22628 (add-after 'unpack 'change-version-requirements
22630 ;; Match the requirement in test/requirements.txt
22631 (substitute* "setup.py"
22632 (("pytest < 5") "pytest < 7"))
22633 ;; We don't care about a coverage report.
22634 (substitute* "test/requirements.txt"
22635 (("coverage.*") "coverage\n"))))
22637 (lambda* (#:key tests? #:allow-other-keys)
22639 ;; These tests don't import currectly.
22640 (delete-file "test/test_js_client.py")
22641 (delete-file "test/test_tsd_types.py")
22642 (delete-file "test/test_python_gen.py")
22643 (invoke "pytest")))))))
22645 (list python-ply python-six))
22647 (list python-coverage python-mock python-pytest python-pytest-runner))
22648 (home-page "https://github.com/dropbox/stone")
22649 (synopsis "Official Api Spec Language for Dropbox")
22651 "Stone is an interface description language (IDL) for APIs.")
22652 (license license:expat)))
22654 (define-public pybind11
22660 (uri (git-reference
22661 (url "https://github.com/pybind/pybind11")
22662 (commit (string-append "v" version))))
22665 "10hrkrh78sk7k0ydw1ghmp7gvpwmkby0l2s0kf2iaj9sz0vijkhs"))
22666 (file-name (git-file-name name version))))
22667 (build-system cmake-build-system)
22669 `(("python" ,python-wrapper)
22671 ;; The following dependencies are used for tests.
22672 ("python-pytest" ,python-pytest)
22673 ("catch" ,catch2-1)
22676 `(#:configure-flags
22677 (list (string-append "-DCATCH_INCLUDE_DIR="
22678 (assoc-ref %build-inputs "catch")
22681 #:phases (modify-phases %standard-phases
22682 (add-after 'install 'install-python
22683 (lambda* (#:key outputs #:allow-other-keys)
22684 (let ((out (assoc-ref outputs "out")))
22685 (with-directory-excursion "../source"
22686 (setenv "PYBIND11_USE_CMAKE" "yes")
22687 (invoke "python" "setup.py" "install"
22688 "--single-version-externally-managed"
22690 (string-append "--prefix=" out)))))))
22692 #:test-target "check"))
22693 (home-page "https://github.com/pybind/pybind11/")
22694 (synopsis "Seamless operability between C++11 and Python")
22696 "@code{pybind11} is a lightweight header-only library that exposes C++
22697 types in Python and vice versa, mainly to create Python bindings of existing
22698 C++ code. Its goals and syntax are similar to the @code{Boost.Python}
22699 library: to minimize boilerplate code in traditional extension modules by
22700 inferring type information using compile-time introspection.")
22701 (license license:bsd-3)))
22703 ;; This is needed for python-vaex-core.
22704 (define-public pybind11-2.3
22711 (uri (git-reference
22712 (url "https://github.com/pybind/pybind11")
22713 (commit (string-append "v" version))))
22716 "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf"))
22717 (file-name (git-file-name name version))))
22719 (substitute-keyword-arguments (package-arguments pybind11)
22720 ((#:tests? tests? #false)
22723 (define-public python-pooch
22725 (name "python-pooch")
22730 (uri (pypi-uri "pooch" version))
22732 (base32 "1618adsg9r8fsv422sv35z1i723q3a1iir5v7dv2sklh4pl4im1h"))))
22733 (build-system python-build-system)
22735 `(#:tests? #f)) ;requires online data
22737 (list python-appdirs python-packaging python-requests))
22738 (home-page "https://github.com/fatiando/pooch")
22739 (synopsis "Manage your Python library's sample data files")
22741 "Pooch manages your Python library's sample data files: it automatically
22742 downloads and stores them in a local directory, with support for versioning
22743 and corruption checks.")
22744 (license license:bsd-3)))
22746 (define-public python-fasteners
22748 (name "python-fasteners")
22753 (uri (pypi-uri "fasteners" version))
22756 "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs"))))
22757 (build-system python-build-system)
22759 (list python-monotonic python-six))
22761 (list python-testtools))
22762 (home-page "https://github.com/harlowja/fasteners")
22763 (synopsis "Python package that provides useful locks")
22765 "This package provides a Python program that provides following locks:
22768 @item Locking decorator
22769 @item Reader-writer locks
22770 @item Inter-process locks
22771 @item Generic helpers
22773 (license license:asl2.0)))
22775 (define-public python-requests-file
22777 (name "python-requests-file")
22782 (uri (pypi-uri "requests-file" version))
22784 (base32 "13kx4k83i9zcv20h0fnmawwwdzhcmw1z97mqib1h379qsc445mq7"))))
22785 (build-system python-build-system)
22788 (modify-phases %standard-phases
22790 (lambda* (#:key tests? #:allow-other-keys)
22792 (invoke "python" "tests/test_requests_file.py")))))))
22794 (list python-requests python-six))
22795 (home-page "https://github.com/dashea/requests-file")
22796 (synopsis "File transport adapter for Requests")
22798 "Requests-File is a transport adapter for use with the Requests Python
22799 library to allow local file system access via @code{file://} URLs.")
22800 (license license:asl2.0)))
22802 (define-public python-identify
22804 (name "python-identify")
22808 ;; There are no tests in the PyPI tarball.
22810 (uri (git-reference
22811 (url "https://github.com/chriskuehl/identify")
22812 (commit (string-append "v" version))))
22813 (file-name (git-file-name name version))
22815 (base32 "1fqgci6skckcq0x5pnxh6k2qjzn1ndsrgha1j6wwv1ld4g9bd3hz"))))
22816 (build-system python-build-system)
22819 (modify-phases %standard-phases
22820 ;; system-error "utime" "~A" ("No such file or directory")
22821 (delete 'ensure-no-mtimes-pre-1980)
22823 (lambda* (#:key tests? #:allow-other-keys)
22825 (invoke "pytest" "-vv")))))))
22827 (list python-coverage python-pytest))
22829 (list python-editdistance))
22830 (home-page "https://github.com/chriskuehl/identify")
22831 (synopsis "File identification library for Python")
22833 "@code{identify} is a file identification library for Python. Given
22834 a file (or some information about a file), return a set of standardized tags
22835 identifying what the file is.")
22836 (license license:expat)))
22838 (define-public python-tldextract
22840 (name "python-tldextract")
22845 (uri (pypi-uri "tldextract" version))
22848 "1wac4yvcpgqjvls770mfx165amvy7gr00nnd2w24bqqwyamj9kdd"))))
22849 (build-system python-build-system)
22851 (list python-pytest python-responses python-setuptools-scm))
22853 (list python-filelock python-idna python-requests python-requests-file))
22855 "https://github.com/john-kurkowski/tldextract")
22857 "Separate the TLD from the registered domain and subdomains of a URL")
22859 "TLDExtract accurately separates the TLD from the registered domain and
22860 subdomains of a URL, using the Public Suffix List. By default, this includes
22861 the public ICANN TLDs and their exceptions. It can optionally support the
22862 Public Suffix List's private domains as well.")
22863 (license license:bsd-3)))
22865 (define-public python-tldr
22867 (name "python-tldr")
22871 ;; There's no test in PyPI.
22873 (uri (git-reference
22874 (url "https://github.com/tldr-pages/tldr-python-client")
22876 (file-name (git-file-name name version))
22878 (base32 "1hxmprqg8c4cvs19n7f80f3y7jj74i8sc2dmq2gdjmsdrb54bbzc"))))
22879 (build-system python-build-system)
22882 #~(modify-phases %standard-phases
22883 (add-after 'build 'build-doc
22885 (invoke "make" "-C" "docs")))
22887 (lambda* (#:key tests? #:allow-other-keys)
22889 ;; This test fails. It tries to open a network socket.
22890 (invoke "pytest" "-vv" "-k" "not test_error_message")))))))
22892 (list python-pytest python-pytest-runner python-sphinx-argparse))
22894 (list python-argcomplete python-colorama python-termcolor python-shtab))
22895 (home-page "https://github.com/tldr-pages/tldr-python-client")
22896 (synopsis "Python command-line client for tldr pages")
22897 (description "This package provides the @code{tldr} command allowing users
22898 to view @code{tldr} pages from a shell. The @code{tldr} pages are a community
22899 effort to simplify the man pages with practical examples.")
22900 (license license:expat))) ; MIT license
22902 (define-public python-nodeenv
22904 (name "python-nodeenv")
22908 ;; There's no tarball in PyPI.
22910 (uri (git-reference
22911 (url "https://github.com/ekalinin/nodeenv")
22913 (file-name (git-file-name name version))
22915 (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7"))))
22916 (build-system python-build-system)
22919 (modify-phases %standard-phases
22922 ;; This test fails. It tries to open a network socket.
22923 (invoke "pytest" "-vv" "-k" "not test_smoke"))))))
22925 (list python-coverage python-mock python-pytest))
22926 (home-page "https://ekalinin.github.io/nodeenv/")
22927 (synopsis "Create isolated node.js environments")
22929 "Nodeenv (node.js virtual environment) is a tool to create isolated
22930 node.js environments. It creates an environment that has its own installation
22931 directories, that doesn't share libraries with other node.js virtual
22933 (license license:bsd-3)))
22935 (define-public python-pynamecheap
22937 (name "python-pynamecheap")
22942 (uri (pypi-uri "PyNamecheap" version))
22945 "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l"))))
22946 (build-system python-build-system)
22948 (list python-requests))
22950 "https://github.com/Bemmu/PyNamecheap")
22952 "Namecheap API client in Python")
22954 "PyNamecheap is a Namecheap API client in Python.")
22955 (license license:expat)))
22957 (define-public python-dns-lexicon
22959 (name "python-dns-lexicon")
22964 (uri (pypi-uri "dns-lexicon" version))
22967 "0jdn3ns71bsybr7njgsqr9xlxsqh7zh6phn4ld0liazqdn2l5f6m"))))
22968 (build-system python-build-system)
22970 `(#:tests? #f)) ;requires internet access
22972 (list python-future python-pynamecheap python-requests
22973 python-tldextract python-urllib3))
22974 (home-page "https://github.com/AnalogJ/lexicon")
22976 "Manipulate DNS records on various DNS providers")
22978 "Lexicon provides a way to manipulate DNS records on multiple DNS
22979 providers in a standardized way. It has a CLI but it can also be used as a
22980 Python library. It was designed to be used in automation, specifically with
22982 (license license:expat)))
22984 (define-public python-cfgv
22986 (name "python-cfgv")
22990 ;; There are no tests in the PyPI tarball.
22992 (uri (git-reference
22993 (url "https://github.com/asottile/cfgv")
22994 (commit (string-append "v" version))))
22995 (file-name (git-file-name name version))
22997 (base32 "1pci97cmn3v45sfch9s3lshidrl0309ls9byidic0l8drkwnkwcj"))))
22998 (build-system python-build-system)
23001 (modify-phases %standard-phases
23003 (lambda* (#:key tests? #:allow-other-keys)
23005 (invoke "pytest" "-vv")))))))
23007 (list python-pytest))
23008 (home-page "https://github.com/asottile/cfgv")
23009 (synopsis "Configuration validation library")
23011 "This library helps to validate configuration files and produce human
23012 readable error messages.")
23013 (license license:expat)))
23015 (define-public python-commandlines
23017 (name "python-commandlines")
23022 (uri (pypi-uri "commandlines" version))
23025 "0r7xcr0knv02p4mswa2bng61nn8nbhhrs6kvdnb9bb3hhjvm1dl6"))))
23026 (build-system python-build-system)
23027 (home-page "https://github.com/chrissimpkins/commandlines")
23028 (synopsis "Command line argument to object parsing library")
23030 "@code{Commandlines} is a Python library for command line application
23031 development that supports command line argument parsing, command string
23032 validation testing and application logic.")
23033 (license license:expat)))
23035 ;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with
23036 ;; python-numba. They have a very unflexible relationship.
23037 (define-public python-numba
23039 (name "python-numba")
23044 (uri (pypi-uri "numba" version))
23047 "18rf8i32m1045zxglvicpgldvzmqdxqvs3dhjd7wilb64sd0ds83"))))
23048 (build-system python-build-system)
23051 (modify-phases %standard-phases
23052 (add-after 'unpack 'disable-proprietary-features
23054 (setenv "NUMBA_DISABLE_HSA" "1")
23055 (setenv "NUMBA_DISABLE_CUDA" "1")))
23056 (add-after 'unpack 'disable-failing-tests
23058 ;; This one test fails because a deprecation warning is printed.
23059 (substitute* "numba/tests/test_import.py"
23060 (("def test_no_accidental_warnings")
23061 "def disabled_test_no_accidental_warnings"))))
23063 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
23065 (add-installed-pythonpath inputs outputs)
23066 ;; Something is wrong with the PYTHONPATH when running the
23067 ;; tests from the build directory, as it complains about not being
23068 ;; able to import certain modules.
23069 (with-directory-excursion "/tmp"
23070 (setenv "HOME" (getcwd))
23071 (invoke "python3" "-m" "numba.runtests" "-v" "-m"))))))))
23073 (list python-llvmlite python-numpy python-singledispatch))
23074 (native-inputs ;for tests
23075 (list python-jinja2 python-pygments))
23076 (home-page "https://numba.pydata.org")
23077 (synopsis "Compile Python code using LLVM")
23078 (description "Numba gives you the power to speed up your applications with
23079 high performance functions written directly in Python. With a few
23080 annotations, array-oriented and math-heavy Python code can be just-in-time
23081 compiled to native machine instructions, similar in performance to C, C++ and
23082 Fortran, without having to switch languages or Python interpreters.
23084 Numba works by generating optimized machine code using the LLVM compiler
23085 infrastructure at import time, runtime, or statically (using the included pycc
23087 (license license:bsd-3)))
23089 (define-public python-numcodecs
23091 (name "python-numcodecs")
23096 (uri (pypi-uri "numcodecs" version))
23099 "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g"))
23100 (modules '((guix build utils)))
23103 (delete-file-recursively "c-blosc")
23104 (for-each delete-file '("numcodecs/blosc.c"
23105 "numcodecs/compat_ext.c"
23108 "numcodecs/zstd.c"))))))
23109 (build-system python-build-system)
23111 `(#:tests? #false ; TODO: unclear why numcodecs.* are not found
23113 (modify-phases %standard-phases
23114 (add-after 'unpack 'disable-avx2
23116 (setenv "DISABLE_NUMCODECS_AVX2" "1")))
23117 (add-after 'unpack 'unbundle
23119 (substitute* "setup.py"
23120 (("sources=sources \\+ blosc_sources,")
23121 "sources=sources,")
23122 (("extra_compile_args=extra_compile_args")
23123 "extra_compile_args=list(base_compile_args)")
23124 (("'numcodecs.zstd',")
23125 "'numcodecs.zstd', libraries=['zstd'], ")
23126 (("'numcodecs.lz4',")
23127 "'numcodecs.lz4', libraries=['lz4'], ")
23128 (("'numcodecs.blosc',")
23129 "'numcodecs.blosc', libraries=['blosc'], "))))
23131 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
23133 (add-installed-pythonpath inputs outputs)
23134 (invoke "pytest" "-vv")))))))
23136 (list c-blosc lz4 zlib
23139 (list python-numpy python-msgpack))
23141 (list python-cython python-pytest python-setuptools-scm))
23142 (home-page "https://github.com/zarr-developers/numcodecs")
23143 (synopsis "Buffer compression and transformation codecs")
23145 "This Python package provides buffer compression and transformation
23146 codecs for use in data storage and communication applications.")
23147 (license license:expat)))
23149 (define-public python-asciitree
23151 (name "python-asciitree")
23156 (uri (pypi-uri "asciitree" version))
23159 "0vhgri2m2xlnibhz4xwn4hpbc7xacisxjqrk6k5kyppq96vbk92a"))))
23160 (build-system python-build-system)
23161 (home-page "https://github.com/mbr/asciitree")
23162 (synopsis "Draws ASCII trees")
23163 (description "This package draws tree structures using characters.")
23164 (license license:expat)))
23166 (define-public python-zarr
23168 (name "python-zarr")
23173 (uri (pypi-uri "zarr" version))
23176 "026n3sjzjv2gmwx6y72b8ij0hk42bc8zdbvfj5gdqzd4i6wj3ajk"))))
23177 (build-system python-build-system)
23180 (modify-phases %standard-phases
23181 (add-after 'unpack 'disable-service-tests
23183 (setenv "ZARR_TEST_ABS" "0")
23184 (setenv "ZARR_TEST_MONGO" "0")
23185 (setenv "ZARR_TEST_REDIS" "0")
23189 (invoke "pytest" "-vv" "-k" "not lmdb")
23192 (list python-asciitree python-fasteners python-numcodecs
23195 (list python-pytest python-setuptools-scm))
23196 (home-page "https://github.com/zarr-developers/zarr-python")
23197 (synopsis "Chunked, compressed, N-dimensional arrays for Python")
23199 "This package provides an implementation of chunked, compressed,
23200 N-dimensional arrays for Python.")
23201 (license license:expat)))
23203 (define-public python-anndata
23205 (name "python-anndata")
23209 ;; The tarball from PyPi doesn't include tests.
23211 (uri (git-reference
23212 (url "https://github.com/theislab/anndata")
23214 (file-name (git-file-name name version))
23217 "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1"))))
23218 (build-system python-build-system)
23221 (modify-phases %standard-phases
23225 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
23226 (substitute* "anndata/_metadata.py"
23227 (("__version__ =.*")
23228 (string-append "__version__ = \"" ,version "\"\n")))
23229 ;; ZIP does not support timestamps before 1980.
23230 (setenv "SOURCE_DATE_EPOCH" "315532800")
23231 (invoke "flit" "build")))
23233 (lambda* (#:key inputs outputs #:allow-other-keys)
23234 (add-installed-pythonpath inputs outputs)
23235 (let ((out (assoc-ref outputs "out")))
23236 (for-each (lambda (wheel)
23237 (format #true wheel)
23238 (invoke "python" "-m" "pip" "install"
23239 wheel (string-append "--prefix=" out)))
23240 (find-files "dist" "\\.whl$"))))))))
23243 python-importlib-metadata
23251 (list python-joblib python-pytest python-toml python-flit
23252 python-setuptools-scm))
23253 (home-page "https://github.com/theislab/anndata")
23254 (synopsis "Annotated data for data analysis pipelines")
23255 (description "Anndata is a package for simple (functional) high-level APIs
23256 for data analysis pipelines. In this context, it provides an efficient,
23257 scalable way of keeping track of data together with learned annotations and
23258 reduces the code overhead typically encountered when using a mostly
23259 object-oriented library such as @code{scikit-learn}.")
23260 (license license:bsd-3)))
23262 (define-public python-dill
23264 (name "python-dill")
23265 (version "0.3.5.1")
23269 (uri (pypi-uri "dill" version))
23271 (base32 "11lc40x37cx2i8qqbc5qklifm65dyjl6prrqsycybvpixzrl2pnp"))))
23272 (build-system python-build-system)
23275 (modify-phases %standard-phases
23278 (with-directory-excursion "/tmp"
23279 (invoke "nosetests" "-v"))
23282 (list python-nose))
23283 (home-page "https://pypi.org/project/dill/")
23284 (synopsis "Serialize all of Python")
23285 (description "Dill extends Python's @code{pickle} module for serializing
23286 and de-serializing Python objects to the majority of the built-in Python
23287 types. Dill provides the user the same interface as the @code{pickle} module,
23288 and also includes some additional features. In addition to pickling Python
23289 objects, @code{dill} provides the ability to save the state of an interpreter
23290 session in a single command. Hence, it would be feasible to save a
23291 interpreter session, close the interpreter, ship the pickled file to another
23292 computer, open a new interpreter, unpickle the session and thus continue from
23293 the saved state of the original interpreter session.")
23294 (license license:bsd-3)))
23296 (define-public python-multiprocess
23298 (name "python-multiprocess")
23303 (uri (pypi-uri "multiprocess" version))
23306 "1r882nvd44xqwbrclwqx5rhs80l6809rcvpc7pkpgnij06cvvmcz"))))
23307 (build-system python-build-system)
23310 (modify-phases %standard-phases
23311 (add-after 'unpack 'disable-broken-tests
23313 ;; This test is broken as there is no keyboard interrupt.
23314 (substitute* "py3.7/multiprocess/tests/__init__.py"
23315 (("^(.*)def test_wait_result"
23317 (string-append indent
23318 "@unittest.skip(\"Disabled by Guix\")\n"
23321 ;; Tests must be run after installation.
23323 (add-after 'install 'check
23324 (lambda* (#:key inputs outputs #:allow-other-keys)
23325 (add-installed-pythonpath inputs outputs)
23326 (invoke "python" "-m" "multiprocess.tests")
23329 (list python-dill))
23330 (home-page "https://pypi.org/project/multiprocess/")
23331 (synopsis "Multiprocessing and multithreading in Python")
23333 "This package is a fork of the multiprocessing Python package, a package
23334 which supports the spawning of processes using the API of the standard
23335 library's @code{threading} module.")
23336 (license license:bsd-3)))
23338 (define-public python-multiprocessing-on-dill
23340 (name "python-multiprocessing-on-dill")
23341 (version "3.5.0a4")
23344 (uri (pypi-uri "multiprocessing_on_dill" version))
23347 "1rs5a3hx1fcpfsxxkl5kx6g06c82wqjqgdqyny5l1ggl1wq0rmfn"))))
23348 (build-system python-build-system)
23352 #~(modify-phases %standard-phases
23354 (lambda* (#:key tests? #:allow-other-keys)
23356 (invoke "pytest" "-vv")))))))
23357 (propagated-inputs (list python-dill))
23358 (native-inputs (list python-check-manifest python-pytest python-wheel))
23359 (home-page "https://github.com/sixty-north/multiprocessing_on_dill")
23360 (synopsis "Multiprocessing using dill instead of pickle")
23362 "This package provides a friendly fork of multiprocessing which uses dill
23363 instead of pickle.")
23364 (license license:psfl)))
23366 (define-public python-toolrack
23368 (name "python-toolrack")
23373 (uri (git-reference
23374 (url "https://github.com/albertodonato/toolrack")
23375 (commit (string-append "v" version))))
23376 (file-name (git-file-name name version))
23379 "0ych11b7nchnkhqgf7dgivbvn2lzafjsi7nhb1an5zjjyns39gpx"))))
23380 (build-system python-build-system)
23384 #~(modify-phases %standard-phases
23385 (add-after 'unpack 'patch-/bin/sh
23387 (substitute* "toolrack/aio/tests/test_process.py"
23391 (lambda* (#:key tests? #:allow-other-keys)
23393 (invoke "pytest" "-vv" "--pyargs" "toolrack"
23396 ;; These tests fail for unknown reason comparing the
23397 ;; expected output of shell scripts.
23398 "not test_parse_stderr "
23399 "and not test_parse_no_ending_newline "
23400 "and not test_parse_stdout"))))))))
23401 (native-inputs (list python-pytest python-pytest-asyncio
23402 python-pytest-mock))
23403 (home-page "https://github.com/albertodonato/toolrack")
23404 (synopsis "Collection of Python utility functions and classes")
23405 (description "This package provides a collection of miscellaneous utility
23406 functions and classes.")
23407 (license license:lgpl3+)))
23409 (define-public python-toolz
23411 (name "python-toolz")
23416 (uri (pypi-uri "toolz" version))
23419 "0cxwlh8dz8gq0l0bzchjnqqwhdp261nfd958ppqm518k2mg2scbb"))))
23420 (build-system python-build-system)
23423 (modify-phases %standard-phases
23425 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
23427 (add-installed-pythonpath inputs outputs)
23428 (invoke "python" "-m" "pytest" "--doctest-modules"
23429 "--pyargs" "toolz")))))))
23431 (list python-pytest))
23432 (home-page "https://github.com/pytoolz/toolz/")
23433 (synopsis "List processing tools and functional utilities")
23435 "This package provides a set of utility functions for iterators,
23436 functions, and dictionaries.")
23437 (license license:bsd-3)))
23439 (define-public python-cytoolz
23441 (name "python-cytoolz")
23446 (uri (pypi-uri "cytoolz" version))
23449 "1d12mgaippxxhn24w2hj0my3aqkx80fks5g4wzfdsvl0acqnc8za"))
23450 (modules '((guix build utils)))
23452 '(for-each delete-file (find-files "cytoolz" "\\.c$")))))
23453 (build-system python-build-system)
23454 ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute
23456 (arguments '(#:tests? #f))
23458 (list python-toolz))
23460 (list python-cython))
23461 (home-page "https://github.com/pytoolz/cytoolz")
23462 (synopsis "High performance functional utilities")
23464 "The cytoolz package implements the same API as provided by toolz. The
23465 main differences are that @code{cytoolz} is faster and cytoolz offers a C API
23466 that is accessible to other projects developed in Cython.")
23467 (license license:bsd-3)))
23469 (define-public python-sortedcollections
23471 (name "python-sortedcollections")
23476 (uri (pypi-uri "sortedcollections" version))
23479 "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq"))))
23480 (build-system python-build-system)
23482 (list python-sortedcontainers))
23483 (arguments '(#:tests? #f)) ; Tests not included in release tarball.
23484 (home-page "http://www.grantjenks.com/docs/sortedcollections/")
23485 (synopsis "Python Sorted Collections")
23486 (description "Sorted Collections is a Python sorted collections library.")
23487 (license license:asl2.0)))
23489 (define-public python-sortedcontainers
23491 (name "python-sortedcontainers")
23496 (uri (pypi-uri "sortedcontainers" version))
23499 "0fm0w5id2yhqld95hg2m636vjgkz377rvgdfqaxc25vbylr9lklp"))))
23500 (build-system python-build-system)
23502 ;; FIXME: Tests require many extra dependencies, and would introduce
23503 ;; a circular dependency on hypothesis, which uses this package.
23506 `(("python-appdirs" ,python-appdirs)
23507 ("python-distlib" ,python-distlib)
23508 ("python-filelock" ,python-filelock)
23509 ("python-six" ,python-six-bootstrap)))
23510 (home-page "http://www.grantjenks.com/docs/sortedcontainers/")
23511 (synopsis "Sorted List, Sorted Dict, Sorted Set")
23513 "This package provides a sorted collections library, written in
23515 (license license:asl2.0)))
23517 (define python-cloudpickle-testpkg
23519 (name "python-cloudpickle-testpkg")
23523 ;; Archive on pypi does not include test infrastructure.
23525 (uri (git-reference
23526 (url "https://github.com/cloudpipe/cloudpickle")
23527 (commit (string-append "v" version))))
23528 (file-name (git-file-name name version))
23531 "1584d21d4rcpryn8yfz0pjnjprk4zm367m0razdcz8cjbsh0dxp6"))))
23532 (build-system python-build-system)
23535 (modify-phases %standard-phases
23536 (add-after 'unpack 'chdir
23537 (lambda _ (chdir "tests/cloudpickle_testpkg"))))))
23538 (home-page "https://github.com/cloudpipe/cloudpickle")
23539 (synopsis "Extended pickling support for Python objects")
23541 "Cloudpickle makes it possible to serialize Python constructs not
23542 supported by the default pickle module from the Python standard library. It
23543 is especially useful for cluster computing where Python expressions are
23544 shipped over the network to execute on remote hosts, possibly close to the
23546 (license license:bsd-3)))
23548 (define-public python-cloudpickle
23550 (inherit python-cloudpickle-testpkg)
23551 (name "python-cloudpickle")
23552 (build-system python-build-system)
23555 (modify-phases %standard-phases
23557 (lambda* (#:key tests? #:allow-other-keys)
23559 (invoke "pytest" "-s" "-vv")
23560 (format #t "test suite not run~%")))))))
23562 (list ;; For tests.
23563 python-cloudpickle-testpkg python-psutil python-pytest
23565 (home-page "https://github.com/cloudpipe/cloudpickle")
23566 (synopsis "Extended pickling support for Python objects")
23568 "Cloudpickle makes it possible to serialize Python constructs not
23569 supported by the default pickle module from the Python standard library. It
23570 is especially useful for cluster computing where Python expressions are
23571 shipped over the network to execute on remote hosts, possibly close to the
23573 (license license:bsd-3)))
23575 (define-public python-locket
23577 (name "python-locket")
23582 (uri (pypi-uri "locket" version))
23585 "0cm6290zm3ba62n2x2piy3s8d41hrmffda2nw18ggfwb582lq3aw"))))
23586 (build-system python-build-system)
23587 (home-page "https://github.com/mwilliamson/locket.py")
23588 (synopsis "File-based locks for Python")
23590 "Locket implements a lock that can be used by multiple processes provided
23591 they use the same path.")
23592 (license license:bsd-2)))
23594 (define-public python-blosc
23596 (name "python-blosc")
23601 (uri (pypi-uri "blosc" version))
23604 "1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw"))))
23605 (build-system python-build-system)
23606 ;; FIXME: all tests pass, but then this error is printed:
23607 ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test
23608 (arguments '(#:tests? #f))
23610 (list python-numpy))
23611 (home-page "https://github.com/blosc/python-blosc")
23612 (synopsis "Python wrapper for the Blosc data compressor library")
23613 (description "Blosc is a high performance compressor optimized for binary
23614 data. It has been designed to transmit data to the processor cache faster
23615 than the traditional, non-compressed, direct memory fetch approach via a
23616 @code{memcpy()} system call.
23618 Blosc works well for compressing numerical arrays that contains data with
23619 relatively low entropy, like sparse data, time series, grids with
23620 regular-spaced values, etc.
23622 This Python package wraps the Blosc library.")
23623 (license license:bsd-3)))
23625 (define-public python-partd
23627 (name "python-partd")
23632 (uri (pypi-uri "partd" version))
23635 "1sy3vdfyyx3bc5590zb7gwpsmimqz8m992x9hsydq8nmhixqjrxa"))))
23636 (build-system python-build-system)
23644 (home-page "https://github.com/dask/partd/")
23645 (synopsis "Appendable key-value storage")
23646 (description "Partd stores key-value pairs. Values are raw bytes. We
23647 append on old values. Partd excels at shuffling operations.")
23648 (license license:bsd-3)))
23650 (define-public python-fsspec
23652 (name "python-fsspec")
23653 (version "2022.5.0")
23657 (uri (pypi-uri "fsspec" version))
23660 "1d43qiz8g395042a52yswz6j7q41gvrv3k53wvxn1rs4bk3mjm3s"))))
23661 (build-system python-build-system)
23662 (arguments '(#:tests? #f)) ; there are none
23663 (home-page "https://github.com/intake/filesystem_spec")
23664 (synopsis "File-system specification")
23665 (description "The purpose of this package is to produce a template or
23666 specification for a file-system interface, that specific implementations
23667 should follow, so that applications making use of them can rely on a common
23668 behavior and not have to worry about the specific internal implementation
23669 decisions with any given backend.")
23670 (license license:bsd-3)))
23672 ;; Note: Remember to update python-distributed when updating dask.
23673 (define-public python-dask
23675 (name "python-dask")
23676 (version "2022.05.2")
23680 (uri (git-reference
23681 (url "https://github.com/dask/dask/")
23682 (commit "8db1597c9745543df3129399bead5fbc95a54571")))
23683 (file-name (git-file-name name version))
23685 (base32 "1xfk3wml972z502w5ii5mn03ls3rg5p4hqgl0hkicgpmzlyz9kph"))
23687 ;; Delete generated copy of python-versioneer. We recreate it below.
23688 '(delete-file "versioneer.py"))))
23689 (build-system python-build-system)
23692 (modify-phases %standard-phases
23693 (add-after 'unpack 'versioneer
23695 (invoke "versioneer" "install")))
23697 (lambda* (#:key tests? #:allow-other-keys)
23698 (when tests? (invoke "pytest" "-vv")))))))
23700 (list python-cloudpickle
23709 (list python-pytest python-pytest-runner python-pytest-rerunfailures
23710 python-versioneer))
23711 (home-page "https://github.com/dask/dask/")
23712 (synopsis "Parallel computing with task scheduling")
23714 "Dask is a flexible parallel computing library for analytics. It
23715 consists of two components: dynamic task scheduling optimized for computation,
23716 and large data collections like parallel arrays, dataframes, and lists that
23717 extend common interfaces like NumPy, Pandas, or Python iterators to
23718 larger-than-memory or distributed environments. These parallel collections
23719 run on top of the dynamic task schedulers.")
23720 (license license:bsd-3)))
23722 (define-public python-ilinkedlist
23724 (name "python-ilinkedlist")
23729 (uri (pypi-uri "ilinkedlist" version))
23732 "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l"))))
23733 (build-system python-build-system)
23734 (native-inputs (list python-pytest))
23735 (inputs (list python))
23736 (home-page "https://github.com/luther9/ilinkedlist-py")
23737 (synopsis "Immutable linked list library")
23739 "This is a implementation of immutable linked lists for Python. It
23740 contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes.
23741 Since a linked list is treated as immutable, it is hashable, and its length
23742 can be retrieved in constant time. Some of the terminology is inspired by
23743 LISP. It is possible to create an improper list by creating a @code{Pair}
23744 with a non-list @code{cdr}.")
23745 (license license:gpl3+)))
23747 (define-public python-readlike
23749 (name "python-readlike")
23754 (uri (pypi-uri "readlike" version))
23756 (base32 "027w8fvi50ksl57q0a7kb5zvmq8jxaawnviib1jdqw0p3igvm1j4"))))
23757 (build-system python-build-system)
23758 (home-page "https://github.com/jangler/readlike")
23759 (synopsis "GNU Readline-like line editing module")
23761 "This Python module provides line editing functions similar to the default
23762 Emacs-style ones of GNU Readline. Unlike the Python standard library's
23763 @code{readline} package, this one allows access to those capabilities in settings
23764 outside of a standard command-line interface. It is especially well-suited to
23765 interfacing with Urwid, due to a shared syntax for describing key inputs.
23767 Currently, all stateless Readline commands are implemented. Yanking and history
23768 are not supported.")
23769 (license license:expat)))
23771 (define-public python-reparser
23773 (name "python-reparser")
23778 (uri (pypi-uri "ReParser" version))
23780 (base32 "0nniqb69xr0fv7ydlmrr877wyyjb61nlayka7xr08vlxl9caz776"))))
23781 (build-system python-build-system)
23782 (home-page "https://github.com/xmikos/reparser")
23783 (synopsis "Simple lexer/parser for inline markup based on regular expressions")
23785 "This Python library provides a simple lexer/parser for inline markup based
23786 on regular expressions.")
23787 (license license:expat)))
23789 (define-public python-retrying
23791 (name "python-retrying")
23796 (uri (git-reference
23797 (url "https://github.com/rholder/retrying")
23798 (commit (string-append "v" version))))
23799 (file-name (git-file-name name version))
23802 "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7"))))
23803 (build-system python-build-system)
23806 (home-page "https://github.com/rholder/retrying")
23807 (synopsis "Library for adding retry behavior")
23808 (description "Retrying is a general-purpose retrying library to simplify
23809 the task of adding retry behavior to just about anything.
23814 @item Generic Decorator API.
23815 @item Specify stop condition (i.e. limit by number of attempts).
23816 @item Specify wait condition (i.e. exponential backoff sleeping between attempts).
23817 @item Customize retrying on Exceptions.
23818 @item Customize retrying on expected returned result.
23820 (license license:asl2.0)))
23822 (define-public python-pre-commit
23824 (name "python-pre-commit")
23829 (uri (pypi-uri "pre_commit" version))
23831 (base32 "1ycf6wpxrhxhdzz0vpryhbdxlwik5khgcvp3hxwvfr447a6k84zl"))))
23832 (build-system python-build-system)
23834 ;; Tests fail with "AttributeError: module 'pre_commit.resources' has no
23835 ;; attribute 'empty_template_setup'".
23836 `(#:tests? #false))
23840 python-importlib-metadata
23844 python-virtualenv))
23845 (home-page "https://github.com/pre-commit/pre-commit")
23846 (synopsis "Framework for managing multi-language pre-commit hooks")
23848 "This package provides a framework for managing and maintaining
23849 multi-language pre-commit hooks.")
23850 (license license:expat)))
23852 (define-public python-precis-i18n
23854 (name "python-precis-i18n")
23859 (uri (pypi-uri "precis_i18n" version))
23862 "1qfb78zpx565vqkg0xhx75pna9sc35m370vpcz82982c8ix3ypyz"))))
23863 (build-system python-build-system)
23864 (home-page "https://github.com/byllyfish/precis_i18n")
23865 (synopsis "Implementation of the PRECIS framework")
23867 "This module implements the PRECIS Framework as described in RFC 8264,
23868 RFC 8265 and RFC 8266.")
23869 (license license:expat)))
23871 (define-public python-absl-py
23873 (name "python-absl-py")
23878 (uri (pypi-uri "absl-py" version))
23881 "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7"))))
23882 (build-system python-build-system)
23885 (home-page "https://github.com/abseil/abseil-py")
23886 (synopsis "Abseil Python common libraries")
23888 "This package provides the Abseil Python Common Libraries, a collection
23889 of Python libraries for building Python applications.")
23890 (license license:asl2.0)))
23892 (define-public python-astor
23894 (name "python-astor")
23899 (uri (pypi-uri "astor" version))
23902 "0ppscdzzvxpznclkmhhj53iz314x3pfv4yc7c6gwxqgljgdgyvka"))))
23903 (build-system python-build-system)
23904 ;; FIXME: There are two errors and two test failures.
23905 (arguments `(#:tests? #f))
23906 (home-page "https://github.com/berkerpeksag/astor")
23907 (synopsis "Read and write Python ASTs")
23908 (description "Astor is designed to allow easy manipulation of Python
23909 source via the Abstract Syntax Tree.")
23910 (license license:bsd-3)))
23912 (define-public python-astunparse
23914 (name "python-astunparse")
23919 (uri (pypi-uri "astunparse" version))
23921 (base32 "0wh8jjvwafxc7rvbyb13cdwndkicm7cry1bd8p1q9l7has23mnas"))))
23922 (build-system python-build-system)
23923 (arguments '(#:tests? #f)) ; there are none
23925 (list python-six python-wheel))
23926 (home-page "https://github.com/simonpercivall/astunparse")
23927 (synopsis "AST unparser for Python")
23928 (description "This package provides an AST unparser for Python. It is a
23929 factored out version of @code{unparse} found in the Python source
23931 (license license:bsd-3)))
23933 (define-public python-gast
23935 (name "python-gast")
23940 (uri (pypi-uri "gast" version))
23942 (base32 "1sidaczriw54pfkj3523y9j9q2harrczc1qqgnfaylz641ca5gng"))))
23943 (build-system python-build-system)
23945 '(#:phases (modify-phases %standard-phases
23947 (lambda* (#:key tests? #:allow-other-keys)
23949 (invoke "pytest" "-vv")))))))
23951 (list python-pytest))
23953 (list python-astunparse))
23954 (home-page "https://github.com/serge-sans-paille/gast/")
23955 (synopsis "Generic Python AST that abstracts the underlying Python version")
23957 "GAST provides a compatibility layer between the AST of various Python
23958 versions, as produced by @code{ast.parse} from the standard @code{ast}
23960 (license license:bsd-3)))
23962 (define-public python-wikidata
23964 (name "python-wikidata")
23969 (uri (pypi-uri "Wikidata" version))
23972 "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9"))))
23973 (build-system python-build-system)
23975 (list python-babel))
23976 (home-page "https://github.com/dahlia/wikidata")
23977 (synopsis "Wikidata client library")
23979 "This package provides a Python interface to
23980 @url{https://www.wikidata.org/, Wikidata}.")
23981 (properties '((upstream-name . "Wikidata")))
23982 (license license:gpl3+)))
23984 (define-public python-doctest-ignore-unicode
23986 (name "python-doctest-ignore-unicode")
23991 (uri (pypi-uri "doctest-ignore-unicode" version))
23994 "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w"))))
23995 (build-system python-build-system)
23997 (list python-nose))
23998 (home-page "https://github.com/gnublade/doctest-ignore-unicode")
23999 (synopsis "Ignore Unicode literal prefixes in doctests")
24001 "This package adds support for a flag to ignore Unicode literal prefixes
24003 (license license:asl2.0)))
24005 (define-public python-attr
24007 (name "python-attr")
24012 (uri (pypi-uri "attr" version))
24015 "0pbpskvxp5hzdvcaf766ljwpckshir8sf7z6jqji6zyib20594ch"))))
24016 (build-system python-build-system)
24017 (home-page "https://github.com/denis-ryzhkov/attr")
24018 (synopsis "Decorator for attributes of target function or class")
24019 (description "Simple decorator to set attributes of target function or
24020 class in a @acronym{DRY, Don't Repeat Yourself} way.")
24021 (license license:expat)))
24023 (define-public python-construct
24025 (name "python-construct")
24026 (version "2.10.56")
24030 (uri (pypi-uri "construct" version))
24033 "0q86jjzsvy835h3c8pjj4619vbp7ihfg8njmyw86ym4qrpni7flp"))))
24034 (build-system python-build-system)
24036 `(#:tests? #f)) ; No tests exist.
24038 (list python-extras python-arrow python-numpy python-ruamel.yaml))
24039 (home-page "https://construct.readthedocs.io")
24040 (synopsis "Declarative and symmetrical parser and builder for binary data")
24042 "This package provides both simple, atomic constructs (such as
24043 integers of various sizes), as well as composite ones which allow you
24044 form hierarchical and sequential structures of increasing complexity.
24045 It features bit and byte granularity, easy debugging and testing, an
24046 easy-to-extend subclass system, and lots of primitive constructs to
24047 make your work easier.")
24048 (license license:expat)))
24050 (define-public python-outcome
24052 (name "python-outcome")
24057 (uri (pypi-uri "outcome" version))
24059 (base32 "0vxn04vspmlkkyijjkjnsc46f93ki8g62hr7ag10zpd7ic324y7w"))))
24060 (build-system python-build-system)
24063 (modify-phases %standard-phases
24065 (lambda* (#:key inputs outputs #:allow-other-keys)
24066 (add-installed-pythonpath inputs outputs)
24067 (invoke "pytest" "-vv"))))))
24069 (list python-pytest python-pytest-cov python-pytest-asyncio))
24071 (list python-async-generator python-attrs))
24072 (home-page "https://github.com/python-trio/outcome")
24073 (synopsis "Capture the outcome of Python function calls")
24075 "Capture the outcome of Python function calls. Extracted from the Trio
24077 ;; Either license applies.
24078 (license (list license:expat license:asl2.0))))
24080 (define-public python-trio
24082 (name "python-trio")
24087 (uri (pypi-uri "trio" version))
24089 (base32 "0w30cwmdwfa8zq2agqv3h62jzwwsk7ms8f683ag8f3jx279m42k7"))))
24090 (build-system python-build-system)
24093 (modify-phases %standard-phases
24094 (add-after 'unpack 'patch-sleep
24096 (substitute* "trio/tests/test_subprocess.py"
24098 (which "sleep")))))
24099 (add-before 'check 'change-home
24101 ;; Tests require a writable home.
24102 (setenv "HOME" "/tmp")))
24104 (lambda* (#:key tests? #:allow-other-keys)
24106 (invoke "pytest" "-vv"
24107 "-n" (number->string (parallel-job-count))
24110 ;; This test times out.
24111 "not test_ki_protection_works"
24112 ;; Assertion errors.
24113 " and not test_guest_mode_ki"
24114 " and not test_run_in_trio_thread_ki"
24115 " and not test_simple_cancel_scope_usage_doesnt_create_cyclic_garbage"
24116 " and not test_nursery_cancel_doesnt_create_cyclic_garbage"
24117 " and not test_cancel_scope_exit_doesnt_create_cyclic_garbage"
24118 " and not test_locals_destroyed_promptly_on_cancel"
24119 " and not test_ipython_exc_handler"
24120 " and not test_for_leaking_fds"
24121 ;; These try to raise KeyboardInterrupt which does not work
24122 ;; in the build environment.
24123 " and not test_ki_self"
24124 " and not test_ki_wakes_us_up"
24125 ;; Failure in name resolution.
24126 " and not test_getnameinfo"
24127 " and not test_SocketType_resolve"
24128 ;; OSError: protocol not found.
24129 " and not test_getprotobyname"
24130 ;; EOFError: Ran out of input.
24131 " and not test_static_tool_sees_all_symbols"))))))))
24139 python-pytest-xdist
24143 (list python-async-generator
24148 python-sortedcontainers))
24149 (home-page "https://github.com/python-trio/trio")
24150 (synopsis "Friendly Python library for async concurrency and I/O")
24152 "Trio strives to be a production-quality, async/await-native I/O library
24153 for Python. Like all async libraries, its main purpose is to help you write
24154 programs that do multiple things at the same time with parallelized I/O.")
24155 ;; Either license applies.
24156 (license (list license:expat license:asl2.0))))
24158 (define-public python-trio-typing
24160 (name "python-trio-typing")
24165 (uri (pypi-uri "trio-typing" version))
24167 (base32 "1yvlj4vf3wyvp16dw6vyfm4i2idm8lvdc3fvjhi6mhm62zv7s07j"))))
24168 (build-system python-build-system)
24171 (modify-phases %standard-phases
24174 (invoke "pytest" "-vv"))))))
24176 (list python-attrs python-pytest))
24178 (list python-mypy python-mypy-extensions python-trio
24179 python-typing-extensions))
24180 (home-page "https://github.com/python-trio/trio-typing")
24181 (synopsis "Static type checking support for Trio and related projects")
24183 "This package provides:
24186 @item PEP 561 typing stubs packages for the Trio project packages:
24189 @item trio (@code{trio-stubs})
24190 @item outcome (@code{outcome-stubs})
24191 @item async_generator (@code{async_generator-stubs})
24194 @item A package @code{trio_typing} containing types that Trio programs often
24195 want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and
24196 a mypy plugin that smooths over some limitations in the basic type hints.
24198 ;; Either license applies.
24199 (license (list license:expat license:asl2.0))))
24201 (define-public python-trio-websocket
24203 (name "python-trio-websocket")
24207 (method git-fetch) ;no tests in pypi archive
24208 (uri (git-reference
24209 (url "https://github.com/HyperionGray/trio-websocket")
24211 (file-name (git-file-name name version))
24213 (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi"))))
24214 (build-system python-build-system)
24217 (modify-phases %standard-phases
24219 (lambda* (#:key tests? #:allow-other-keys)
24220 (when tests? (invoke "pytest" "-vv")))))))
24221 (native-inputs (list python-pytest python-pytest-trio python-trustme))
24222 (propagated-inputs (list python-async-generator python-trio python-wsproto))
24223 (home-page "https://github.com/HyperionGray/trio-websocket")
24224 (synopsis "WebSocket library for Trio")
24225 (description "This library implements both server and client aspects of
24226 the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol},
24227 striving for safety, correctness, and ergonomics. It is based on the
24228 @url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a
24229 @url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements
24230 the majority of the WebSocket protocol, including framing, codecs, and events.
24231 This library handles I/O using @url{https://trio.readthedocs.io/en/latest/,
24232 the Trio framework}.")
24233 (license license:expat)))
24235 (define-public python-humanize
24237 (name "python-humanize")
24242 (uri (pypi-uri "humanize" version))
24245 "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4"))))
24247 '(#:tests? #f)) ; tests not in pypi archive
24248 (build-system python-build-system)
24249 (home-page "https://github.com/jmoiron/humanize")
24250 (synopsis "Print numerical information in a human-readable form")
24251 (description "This package provides a Python module that displays numbers
24252 and dates in \"human readable\" forms. For example, it would display
24253 \"12345591313\" as \"12.3 billion\".")
24254 (license license:expat)))
24256 (define-public python-txaio
24258 (name "python-txaio")
24263 (uri (pypi-uri "txaio" version))
24266 "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7"))))
24267 (build-system python-build-system)
24269 (list python-twisted python-six))
24270 (home-page "https://github.com/crossbario/txaio")
24271 (synopsis "Compatibility layer between Python asyncio and Twisted")
24272 (description "Txaio provides a compatibility layer between the Python
24273 @code{asyncio} module and @code{Twisted}.")
24274 (license license:expat)))
24276 (define-public python-toolshed
24278 (name "python-toolshed")
24283 (uri (pypi-uri "toolshed" version))
24286 "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3"))))
24287 (build-system python-build-system)
24289 (list python-nose))
24290 (home-page "https://github.com/brentp/toolshed/")
24291 (synopsis "Collection of modules and functions for working with data")
24292 (description "This is a collection of well-tested, simple modules and
24293 functions that aim to reduce boilerplate when working with data.")
24294 (license license:bsd-2)))
24296 (define-public python-annoy
24298 (name "python-annoy")
24303 (uri (pypi-uri "annoy" version))
24306 "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp"))))
24307 (build-system python-build-system)
24309 (list python-nose))
24310 (home-page "https://github.com/spotify/annoy/")
24311 (synopsis "Approximate nearest neighbors library")
24313 "Annoy is a C++ library with Python bindings to search for points in
24314 space that are close to a given query point. It also creates large read-only
24315 file-based data structures that are @code{mmap}ped into memory so that many
24316 processes may share the same data.")
24317 (license license:asl2.0)))
24319 (define-public python-croniter
24321 (name "python-croniter")
24325 (uri (pypi-uri "croniter" version))
24328 "1whbm26m9kpn0klgr9dqiqpp83ki9nhpxifaq9afcjw32rckcs9i"))))
24329 (build-system python-build-system)
24330 (propagated-inputs (list python-dateutil))
24331 (home-page "https://github.com/kiorky/croniter")
24332 (synopsis "Iterate datetime objects with cron-like syntax")
24334 "@code{croniter} provides iteration for datetime object with cron-like
24336 (license license:expat)))
24338 (define-public python-crontab
24340 (name "python-crontab")
24345 (uri (pypi-uri name version))
24347 (base32 "0cccrqc10r8781ba81x8r2frs3pl2m4hkm599k5358ak0xr7xgjb"))))
24348 (build-system python-build-system)
24350 ;; Comptability tests fail so they are disabled.
24353 (list python-dateutil))
24354 (home-page "https://gitlab.com/doctormo/python-crontab/")
24355 (synopsis "Module for reading and writing crontab files")
24356 (description "This Python module can read, write crontab files, and
24357 access the system cron automatically and simply using a direct API.")
24358 (license license:lgpl3+)))
24360 (define-public python-pylzma
24362 (name "python-pylzma")
24367 (uri (pypi-uri "pylzma" version))
24370 "074anvhyjgsv2iby2ql1ixfvjgmhnvcwjbdz8gk70xzkzcm1fx5q"))))
24371 (build-system python-build-system)
24372 (home-page "https://www.joachim-bauch.de/projects/pylzma/")
24373 (synopsis "Python bindings for the LZMA library by Igor Pavlov")
24374 (description "This package provides Python bindings for the LZMA library
24376 (license license:lgpl2.1+)))
24378 (define-public python-ifaddr
24380 (name "python-ifaddr")
24385 (uri (pypi-uri "ifaddr" version))
24388 "150sxdlicwrphmhnv03ykxplyd2jdrxz0mikgnivavgilrn8m7hz"))))
24389 (build-system python-build-system)
24392 (modify-phases %standard-phases
24394 (lambda _ (invoke "nosetests"))))))
24396 (list python-nose))
24397 (home-page "https://github.com/pydron/ifaddr")
24398 (synopsis "Network interface and IP address enumeration library")
24399 (description "This package provides a network interface and IP address
24400 enumeration library in Python.")
24401 (license license:expat)))
24403 (define-public python-zeroconf
24405 (name "python-zeroconf")
24409 (method git-fetch) ; no tests in PyPI release
24410 (uri (git-reference
24411 (url "https://github.com/jstasiak/python-zeroconf")
24413 (file-name (git-file-name name version))
24415 (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi"))))
24416 (build-system python-build-system)
24419 (modify-phases %standard-phases
24421 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
24423 (add-installed-pythonpath inputs outputs)
24424 (invoke "python" "-m" "pytest" "-k"
24426 ;; Networking isn't available for these tests.
24427 "not test_integration_with_listener_ipv6"
24428 " and not test_launch_and_close_v4_v6"
24429 " and not test_launch_and_close_context_manager"
24430 " and not test_launch_and_close"
24431 " and not test_close_multiple_times"))))))))
24433 (list python-pytest))
24435 (list python-ifaddr))
24436 (home-page "https://github.com/jstasiak/python-zeroconf")
24437 (synopsis "Pure Python mDNS service discovery")
24438 (description "Pure Python multicast DNS (mDNS) service discovery library
24439 (Bonjour/Avahi compatible).")
24440 (license license:lgpl2.1+)))
24442 (define-public python-bsddb3
24444 (name "python-bsddb3")
24449 (uri (pypi-uri "bsddb3" version))
24451 (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h"))))
24452 (build-system python-build-system)
24457 (modify-phases %standard-phases
24458 (add-after 'unpack 'configure-locations
24459 (lambda* (#:key inputs #:allow-other-keys)
24460 (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
24461 (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
24465 (invoke "python3" "test3.py" "-v"))))))
24466 (home-page "https://www.jcea.es/programacion/pybsddb.htm")
24467 (synopsis "Python bindings for Oracle Berkeley DB")
24469 "This module provides a nearly complete wrapping of the Oracle/Sleepycat
24470 C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
24471 Transaction objects, and each of these is exposed as a Python type in the
24472 bsddb3.db module. The database objects can use various access methods: btree,
24473 hash, recno, and queue. Complete support of Berkeley DB distributed
24474 transactions. Complete support for Berkeley DB Replication Manager.
24475 Complete support for Berkeley DB Base Replication. Support for RPC.")
24476 (license license:bsd-3)))
24478 (define-public python-dbfread
24480 (name "python-dbfread")
24484 (uri (pypi-uri "dbfread" version))
24487 "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07"))))
24488 (build-system python-build-system)
24490 (list python-pytest))
24491 (home-page "https://dbfread.readthedocs.io")
24492 (synopsis "Read DBF Files with Python")
24494 "This library reads DBF files and returns the data as native Python data
24495 types for further processing. It is primarily intended for batch jobs and
24497 (license license:expat)))
24499 (define-public python-cached-property
24501 (name "python-cached-property")
24506 (uri (pypi-uri "cached-property" version))
24509 "0c51i6yzg6dlq6zhk4c6nv33mg8gv05kkan36k9b5jzf71c7b9cz"))))
24510 (build-system python-build-system)
24513 (modify-phases %standard-phases
24514 ;; https://github.com/pydanny/cached-property/issues/131
24515 ;; recent versions of freezegun break one test
24516 (add-after 'unpack 'disable-broken-test
24518 (substitute* "tests/test_cached_property.py"
24519 (("def test_threads_ttl_expiry\\(self\\)" m)
24520 (string-append "@unittest.skip(\"Disabled by Guix\")\n"
24524 (list python-freezegun))
24526 "https://github.com/pydanny/cached-property")
24528 "Decorator for caching properties in classes")
24530 "This package provides a decorator which makes caching
24531 time-or-computationally-expensive properties quick and easy and works in Python
24533 (license license:bsd-3)))
24535 (define-public python-folium
24537 (name "python-folium")
24541 ;; PyPI has a ".whl" file but not a proper source release.
24542 ;; Thus, fetch code from Git.
24544 (uri (git-reference
24545 (url "https://github.com/python-visualization/folium")
24546 (commit (string-append "v" version))))
24547 (file-name (git-file-name name version))
24549 (base32 "00adpdi1890zzzg7ffp04hmx59igdcdpyqa129vnmwqh54b5a006"))))
24550 (build-system python-build-system)
24552 (list python-branca python-jinja2 python-numpy python-requests))
24554 (list python-pytest))
24555 (home-page "https://github.com/python-visualization/folium")
24556 (synopsis "Make beautiful maps with Leaflet.js & Python")
24557 (description "@code{folium} makes it easy to visualize data that’s been
24558 manipulated in Python on an interactive leaflet map. It enables both the
24559 binding of data to a map for @code{choropleth} visualizations as well as
24560 passing rich vector/raster/HTML visualizations as markers on the map.
24562 The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
24563 Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
24564 supports Image, Video, GeoJSON and TopoJSON overlays.")
24565 (license license:expat)))
24567 (define-public python-mercantile
24569 (name "python-mercantile")
24574 (uri (pypi-uri "mercantile" version))
24576 (base32 "0sxmndhzzrvss5irsgzfrk51k6jihwcb7661992mizdgbnqnsg7s"))))
24577 (build-system python-build-system)
24578 (propagated-inputs (list python-click))
24580 (list python-check-manifest python-hypothesis python-pytest))
24581 (home-page "https://github.com/mapbox/mercantile")
24582 (synopsis "Web mercator XYZ tile utilities")
24583 (description "The mercantile module provides @code{ul(xtile, ytile, zoom)}
24584 and @code{bounds(xtile, ytile, zoom)} functions that respectively return the
24585 upper left corner and bounding longitudes and latitudes for XYZ tiles, a
24586 @code{xy(lng, lat)} function that returns spherical mercator x and y
24587 coordinates, a @code{tile(lng, lat, zoom)} function that returns the tile
24588 containing a given point, and quadkey conversion functions
24589 @code{quadkey(xtile, ytile, zoom)} and @code{quadkey_to_tile(quadkey)} for
24590 translating between quadkey and tile coordinates.")
24591 (license license:bsd-3)))
24593 (define-public python-xyzservices
24595 (name "python-xyzservices")
24596 (version "2022.4.0")
24600 (uri (pypi-uri "xyzservices" version))
24602 (base32 "1paxv4i0dws85md7csv7pf80jl3xh792mx8rxnsrk61ks3ivbsyg"))))
24603 (build-system python-build-system)
24606 (modify-phases %standard-phases
24608 (lambda* (#:key tests? #:allow-other-keys)
24610 (invoke "pytest" "-vv")))))))
24612 (list python-pytest python-mercantile python-requests))
24613 (home-page "https://github.com/geopandas/xyzservices")
24614 (synopsis "Source of XYZ tiles providers")
24615 (description "@code{xyzservices} is a lightweight library providing a
24616 repository of available XYZ services offering raster basemap tiles. The
24617 repository is provided via Python API and as a compressed JSON file.")
24618 (license license:bsd-3)))
24620 (define-public jube
24622 ;; This is a command-line tool, so no "python-" prefix.
24627 (uri (string-append
24628 "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
24632 "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
24633 (file-name (string-append "jube-" version ".tar.gz"))))
24634 (build-system python-build-system)
24635 (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
24636 (synopsis "Benchmarking environment")
24638 "JUBE helps perform and analyze benchmarks in a systematic way. For each
24639 benchmarked application, benchmark data is stored in a format that allows JUBE
24640 to deduct the desired information. This data can be parsed by automatic pre-
24641 and post-processing scripts that draw information and store it more densely
24642 for manual interpretation.")
24643 (license license:gpl3+)))
24645 (define-public python-pyroutelib3
24647 (name "python-pyroutelib3")
24648 (version "1.3.post1")
24652 (uri (pypi-uri "pyroutelib3" version))
24655 "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
24656 (build-system python-build-system)
24658 (list python-dateutil))
24659 (home-page "https://github.com/MKuranowski/pyroutelib3")
24660 (synopsis "Library for simple routing on OSM data")
24661 (description "Library for simple routing on OSM data")
24662 (license license:gpl3+)))
24664 (define-public python-bibtexparser
24666 (name "python-bibtexparser")
24671 (uri (pypi-uri "bibtexparser" version))
24674 "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz"))))
24675 (build-system python-build-system)
24677 (list python-pyparsing))
24679 (list python-future))
24680 (home-page "https://github.com/sciunto-org/python-bibtexparser")
24681 (synopsis "Python library to parse BibTeX files")
24682 (description "BibtexParser is a Python library to parse BibTeX files.")
24683 (license (list license:bsd-3 license:lgpl3))))
24685 (define-public python-distro
24687 (name "python-distro")
24692 (uri (pypi-uri "distro" version))
24695 "09441261dd3c8b2gv15vhw1cryzg60lmgpkk07v6hpwwkyhfbxc3"))))
24696 (build-system python-build-system)
24698 (list python-pytest))
24699 (home-page "https://github.com/nir0s/distro")
24701 "OS platform information API")
24703 "@code{distro} provides information about the OS distribution it runs on,
24704 such as a reliable machine-readable ID, or version information.
24706 It is the recommended replacement for Python's original
24707 `platform.linux_distribution` function (which will be removed in Python 3.8).
24708 @code{distro} also provides a command-line interface to output the platform
24709 information in various formats.")
24710 (license license:asl2.0)))
24712 (define-public python-cairosvg
24714 (name "python-cairosvg")
24719 (uri (pypi-uri "CairoSVG" version))
24721 (base32 "1ylsisha2cc4w0yydxwhy7idkfw1inl9fsipxsrm7vyby080vi9z"))))
24722 (build-system python-build-system)
24725 (modify-phases %standard-phases
24727 (lambda _ (invoke "pytest"))))))
24729 (list python-cairocffi python-cssselect2 python-defusedxml
24730 python-pillow python-tinycss2))
24732 (list python-pytest-flake8 python-pytest-isort python-pytest-runner))
24733 (home-page "https://cairosvg.org/")
24734 (synopsis "SVG to PDF/PS/PNG converter based on Cairo")
24735 (description "CairoSVG is a SVG converter based on Cairo. It can export
24736 SVG files to PDF, PostScript and PNG files. The main part of CairoSVG is a
24737 SVG parser, trying to follow the SVG 1.1 recommendation from the W3C. Once
24738 parsed, the result is drawn to a Cairo surface that can be exported to
24739 qvarious formats: PDF, PostScript, PNG and even SVG.")
24740 (license license:lgpl3+)))
24742 (define-public python-pyphen
24744 (name "python-pyphen")
24749 (uri (pypi-uri "Pyphen" version))
24751 (base32 "0a1iwrgs4hzwzz60q4i1813kbzimhm0i4q8grh8vqkxhnkgj36vi"))))
24752 (build-system python-build-system)
24753 ;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the
24754 ;; embedded set provided by upstream - like Debian does.
24755 (home-page "https://github.com/Kozea/Pyphen")
24756 (synopsis "Pure Python module to hyphenate text")
24757 (description "Pyphen is a pure Python module to hyphenate text using
24758 existing Hunspell hyphenation dictionaries.")
24759 (license (list license:gpl2 license:lgpl2.1 license:mpl1.1))))
24761 (define-public python-intelhex
24763 (name "python-intelhex")
24768 (uri (pypi-uri "intelhex" version))
24771 "14q04p6qs47ab9w55232ylrdn4wm9rswz36s6x999x0rlxhp6aw9"))))
24772 (build-system python-build-system)
24773 (home-page "https://pypi.org/project/IntelHex/")
24774 (synopsis "Python library for Intel HEX files manipulations")
24775 (description "The Intel HEX file format is widely used in microprocessors
24776 and microcontrollers area (embedded systems etc.) as the de facto standard for
24777 representation of code to be programmed into microelectronic devices. This
24778 package provides an intelhex Python library to read, write, create from
24779 scratch and manipulate data from Intel HEX file format. It also includes
24780 several convenience Python scripts, including \"classic\" hex2bin and bin2hex
24781 converters and more, those based on the library itself.")
24782 (license license:bsd-3)))
24784 (define-public python-interlap
24786 (name "python-interlap")
24790 (uri (pypi-uri "interlap" version))
24793 "1jbfh00bkrf0i5psa6n75rlgmqp5389xixa9j29w8rxhah6g7r1i"))))
24794 (build-system python-build-system)
24795 (home-page "https://brentp.github.io/interlap")
24796 (synopsis "Fast, simple interval overlap testing")
24797 (description "InterLap does fast interval overlap testing with a simple Python data
24799 (license license:expat)))
24801 (define-public python-pykwalify
24803 (name "python-pykwalify")
24808 (uri (pypi-uri "pykwalify" version))
24811 "1cnfzkg1b01f825ikpw2fhjclf9c8akxjfrbd1vc22x1lg2kk2vy"))))
24812 (build-system python-build-system)
24813 (arguments '(#:tests? #f)) ;missing dependencies
24815 (list python-dateutil python-docopt python-pyyaml))
24816 (home-page "https://github.com/grokzen/pykwalify")
24818 "Python lib/cli for JSON/YAML schema validation")
24820 "This package provides a parser, schema validator, and data binding tool
24821 for YAML and JSON.")
24822 (license license:expat)))
24824 (define-public python-dbusmock
24826 (name "python-dbusmock")
24831 (uri (pypi-uri "python-dbusmock" version))
24834 "1nwl0gzzds2g1w1gfxfzlgrkb5hr1rrdyn619ml25c6b1rjyfk3g"))))
24835 (build-system python-build-system)
24837 `(#:imported-modules (,@%python-build-system-modules
24838 (guix build syscalls))
24839 #:modules ((guix build python-build-system)
24840 (guix build syscalls)
24844 (modify-phases %standard-phases
24845 (add-after 'unpack 'patch-paths
24846 (lambda* (#:key inputs #:allow-other-keys)
24847 (substitute* "tests/test_code.py"
24848 (("/bin/bash") (which "bash")))
24849 (substitute* "dbusmock/testcase.py"
24851 (string-append "'" (assoc-ref inputs "dbus")
24852 "/bin/dbus-daemon'")))))
24854 (lambda* (#:key tests? #:allow-other-keys)
24856 (match (primitive-fork)
24858 (set-child-subreaper!)
24859 ;; Use tini so that signals are properly handled and
24860 ;; doubly-forked processes get reaped; otherwise,
24861 ;; python-dbusmock would waste time polling for the dbus
24862 ;; processes it spawns to be reaped, in vain.
24863 (execlp "tini" "--" "pytest" "-vv"))
24865 (match (waitpid pid)
24867 (unless (zero? status)
24868 (error "`pytest' exited with status"
24871 (list dbus python-pytest tini which))
24875 (list python-dbus python-pygobject))
24876 (home-page "https://github.com/martinpitt/python-dbusmock")
24877 (synopsis "Python library for mock D-Bus objects")
24878 (description "python-dbusmock allows for the easy creation of mock objects on
24879 D-Bus. This is useful for writing tests for software which talks to D-Bus
24880 services such as upower, systemd, logind, gnome-session or others, and it is
24881 hard (or impossible without root privileges) to set the state of the real
24882 services to what you expect in your tests.")
24883 (license license:lgpl3+)))
24885 (define-public python-jsonplus
24887 (name "python-jsonplus")
24889 (home-page "https://github.com/randomir/jsonplus")
24892 (uri (pypi-uri "jsonplus" version))
24895 "05yv3dw813zwas9snz124k2hki49y268b3mx0gj9w7v1nrjmglq1"))))
24896 (build-system python-build-system)
24897 ;; XXX: No tests on PyPI, and the repository has no tags.
24898 (arguments '(#:tests? #f))
24900 (list python-dateutil python-simplejson python-sortedcontainers))
24901 (synopsis "Serialize Python types to/from JSON")
24903 "This package provides functionality to serialize arbitrary data types
24904 to and from JSON. Common data types are implemented and it is easy to
24905 register custom encoders and decoders.")
24906 (license license:expat)))
24908 (define-public python-ujson
24910 (name "python-ujson")
24915 (uri (pypi-uri "ujson" version))
24918 "0k9w0kypy7vlskzzp2vsjswaw8lbqdrplzkbflxki9vqwglsj5f6"))
24919 (modules '((guix build utils)))
24921 '(begin (delete-file-recursively "deps") #t))))
24922 (build-system python-build-system)
24925 (modify-phases %standard-phases
24926 (add-after 'unpack 'link-to-system-double-conversion
24927 (lambda* (#:key inputs #:allow-other-keys)
24928 (let ((d-c (assoc-ref inputs "double-conversion")))
24929 (substitute* "setup.py"
24930 (("./deps/double-conversion/double-conversion\"")
24931 (string-append d-c "/include/double-conversion\""))
24933 (string-append "-L" d-c "/lib\","
24934 " \"-ldouble-conversion\","
24938 (lambda* (#:key inputs outputs #:allow-other-keys)
24939 (add-installed-pythonpath inputs outputs)
24940 (invoke "pytest"))))))
24942 (list double-conversion python-setuptools-scm python-pytest))
24943 (home-page "https://github.com/ultrajson/ultrajson")
24944 (synopsis "Ultra fast JSON encoder and decoder for Python")
24946 "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with
24947 bindings for Python 3.")
24948 (license license:bsd-3)))
24950 (define-public python-iocapture
24951 ;; The latest release is more than a year older than this commit.
24952 (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c")
24955 (name "python-iocapture")
24960 (uri (git-reference
24961 (url "https://github.com/oinume/iocapture")
24963 (file-name (git-file-name name version))
24966 "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz"))))
24967 (build-system python-build-system)
24970 (modify-phases %standard-phases
24972 (add-after 'install 'check
24973 (lambda* (#:key inputs outputs #:allow-other-keys)
24974 (add-installed-pythonpath inputs outputs)
24975 (invoke "py.test" "-v" "tests")
24978 (list python-flexmock python-pytest python-pytest-cov python-six))
24979 (home-page "https://github.com/oinume/iocapture")
24980 (synopsis "Python capturing tool for stdout and stderr")
24982 "This package helps you to capture the standard out (stdout) and the
24983 standard error channel (stderr) in your program.")
24984 (license license:expat))))
24986 (define-public python-anyio
24988 (name "python-anyio")
24993 (uri (pypi-uri "anyio" version))
24996 "19m58805wir4i2s45dd5ynwlzb7ky1218isbir53gpqzzgigzbm0"))))
24997 (build-system python-build-system)
25000 (modify-phases %standard-phases
25002 (lambda* (#:key tests? #:allow-other-keys)
25005 "pytest" "-vv" "-p" "no:asyncio"
25009 "not test_is_block_device"
25011 ;; These fail because of network (or specifically IPv6
25012 ;; network) access (see:
25013 ;; https://github.com/agronholm/anyio/issues/417).
25014 " and not test_accept"
25015 " and not test_accept_after_close"
25016 " and not test_close_during_receive"
25017 " and not test_close_from_other_task"
25018 " and not test_concurrent_receive"
25019 " and not test_concurrent_send"
25020 " and not test_connect_tcp_with_tls"
25021 " and not test_connect_tcp_with_tls_cert_check_fail"
25022 " and not test_connection_refused"
25023 " and not test_extra_attributes"
25024 " and not test_getaddrinfo"
25025 " and not test_getnameinfo"
25026 " and not test_happy_eyeballs"
25027 " and not test_iterate"
25028 " and not test_receive_after_close"
25029 " and not test_receive_timeout"
25030 " and not test_reuse_port"
25031 " and not test_run_process"
25032 " and not test_send_after_close"
25033 " and not test_send_after_eof"
25034 " and not test_send_after_peer_closed"
25035 " and not test_send_eof"
25036 " and not test_send_large_buffer"
25037 " and not test_send_receive"
25038 " and not test_socket_options"
25039 " and not test_unretrieved_future_exception_server_crash"))))))))
25041 (list python-contextvars
25045 python-typing-extensions))
25047 (list python-contextlib2
25053 python-setuptools-scm
25057 (home-page "https://github.com/agronholm/anyio")
25058 (synopsis "Compatibility layer for multiple asynchronous event loops")
25060 "AnyIO is an asynchronous networking and concurrency library that works
25061 on top of either asyncio or trio. It implements trio-like structured
25062 concurrency on top of asyncio, and works in harmony with the native SC of trio
25064 (license license:expat)))
25066 (define-public python-argh
25067 ;; There are 21 commits since the latest release containing important
25069 (let ((commit "dcd3253f2994400a6a58a700c118c53765bc50a4")
25072 (name "python-argh")
25073 (version (git-version "0.26.2" revision commit))
25077 (uri (git-reference
25078 (url "https://github.com/neithere/argh")
25080 (file-name (git-file-name name version))
25083 "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns"))))
25084 (build-system python-build-system)
25087 (modify-phases %standard-phases
25088 (add-after 'unpack 'patch-tests
25090 ;; Fix test failures on Python 3.9.9+.
25091 ;; Taken via <https://github.com/neithere/argh/issues/148>.
25092 (substitute* "test/test_integration.py"
25093 (("assert run\\(p, '(bar|orig-name|nest bar)', exit=True\\)\
25094 \\.startswith\\('invalid choice'\\)" _ name)
25095 (string-append "assert 'invalid choice' in \
25096 run(p, '" name "', exit=True)")))))
25098 (lambda* (#:key tests? #:allow-other-keys)
25100 (invoke "pytest" "-vv")))))))
25102 (list python-iocapture python-mock python-pytest python-pytest-cov
25103 python-pytest-xdist))
25104 (home-page "https://github.com/neithere/argh/")
25105 (synopsis "Argparse wrapper with natural syntax")
25107 "python-argh is a small library that provides several layers of
25108 abstraction on top of @code{python-argparse}. The layers can be mixed. It is
25109 always possible to declare a command with the highest possible (and least
25110 flexible) layer and then tune the behaviour with any of the lower layers
25111 including the native API of @code{python-argparse}.")
25112 (license license:lgpl3+))))
25114 (define-public python-ppft
25116 (name "python-ppft")
25117 (version "1.6.6.1")
25121 (uri (pypi-uri "ppft" version))
25124 "1z1invkhszc5d2mvgr221v7cszzifcc77mz0pv3wjp6x5q2768cy"))))
25125 (build-system python-build-system)
25126 (arguments '(#:tests? #f)) ; there are none
25129 (home-page "https://pypi.org/project/ppft/")
25130 (synopsis "Fork of Parallel Python")
25132 "This package is a fork of Parallel Python. The Parallel Python
25133 module (@code{pp}) provides an easy and efficient way to create
25134 parallel-enabled applications for @dfn{symmetric multiprocessing} (SMP)
25135 computers and clusters. It features cross-platform portability and dynamic
25137 (license license:bsd-3)))
25139 (define-public python-pox
25141 (name "python-pox")
25146 (uri (pypi-uri "pox" version))
25149 "0y17ckc2p6i6709s279sjdj4q459mpcc38ymg9zv9y6vl6jf3bq6"))))
25150 (build-system python-build-system)
25153 (modify-phases %standard-phases
25156 (mkdir-p "/tmp/guix")
25157 (setenv "SHELL" "bash")
25158 (setenv "USERNAME" "guix")
25159 (setenv "HOME" "/tmp/guix") ; must end on USERNAME...
25160 (invoke "py.test" "-vv")
25163 (list python-pytest which))
25164 (home-page "https://pypi.org/project/pox/")
25165 (synopsis "Python utilities for file system exploration and automated builds")
25167 "Pox provides a collection of utilities for navigating and manipulating
25168 file systems. This module is designed to facilitate some of the low-level
25169 operating system interactions that are useful when exploring a file system on a
25170 remote host. Pox provides Python equivalents of several shell commands such
25171 as @command{which} and @command{find}. These commands allow automated
25172 discovery of what has been installed on an operating system, and where the
25173 essential tools are located.")
25174 (license license:bsd-3)))
25176 (define-public python-pathos
25178 (name "python-pathos")
25183 (uri (pypi-uri "pathos" version))
25186 "0in8hxdz7k081ijn6q94gr39ycy7363sx4zysmbwyvd7snqjrbi1"))))
25187 (build-system python-build-system)
25190 (modify-phases %standard-phases
25193 (invoke "python" "./tests/__main__.py"))))))
25195 (list python-dill python-multiprocess python-pox python-ppft))
25197 (list python-pytest))
25198 (home-page "https://pypi.org/project/pathos/")
25200 "Parallel graph management and execution in heterogeneous computing")
25202 "Python-pathos is a framework for heterogeneous computing. It provides a
25203 consistent high-level interface for configuring and launching parallel
25204 computations across heterogeneous resources. Python-pathos provides configurable
25205 launchers for parallel and distributed computing, where each launcher contains
25206 the syntactic logic to configure and launch jobs in an execution environment.")
25207 (license license:bsd-3)))
25209 (define-public python-flit
25211 (name "python-flit")
25216 (uri (pypi-uri "flit" version))
25218 (base32 "04152qj46sqbnlrj7ch9p7svjrrlpzbk0qr39g2yr0s4f5vp6frf"))))
25219 (build-system python-build-system)
25223 #~(modify-phases %standard-phases
25224 ;; XXX: PEP 517 manual build copied from python-isort.
25227 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
25229 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
25231 (setenv "HOME" "/tmp")
25232 (setenv "FLIT_NO_NETWORK" "1"))))
25235 (let ((whl (car (find-files "dist" "\\.whl$"))))
25236 (invoke "pip" "--no-cache-dir" "--no-input"
25237 "install" "--no-deps" "--prefix" #$output whl)))))))
25239 (list python-pypa-build
25245 (list python-responses
25246 python-pygments-github-lexers
25250 python-sphinxcontrib-github-alt
25252 (home-page "https://flit.readthedocs.io/")
25253 (synopsis "Simple packaging tool for simple packages")
25254 (description "Flit is a simple way to put Python packages and modules on
25255 PyPI. Flit packages a single importable module or package at a time, using
25256 the import name as the name on PyPI. All subpackages and data files within a
25257 package are included automatically.")
25258 (license license:bsd-3)))
25260 (define-public python-pathtools
25262 (name "python-pathtools")
25267 (uri (pypi-uri "pathtools" version))
25270 "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw"))))
25271 (build-system python-build-system)
25273 "https://github.com/gorakhargosh/pathtools")
25274 (synopsis "Path utilities for Python")
25275 (description "Pattern matching and various utilities for file systems
25277 (license license:expat)))
25279 (define-public python-fastentrypoints
25281 (name "python-fastentrypoints")
25286 (uri (pypi-uri "fastentrypoints" version))
25289 "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z"))))
25290 (build-system python-build-system)
25292 "https://github.com/ninjaaron/fast-entry_points")
25294 "Makes entry_points specified in setup.py load more quickly")
25296 "Using entry_points in your setup.py makes scripts that start really
25297 slowly because it imports pkg_resources. This package allows such setup
25298 scripts to load entry points more quickly.")
25299 (license license:bsd-3)))
25301 (define-public python-funcparserlib
25303 (name "python-funcparserlib")
25308 (uri (pypi-uri "funcparserlib" version))
25310 (base32 "0swbqf53x7lfnczvi566s1g3nkf5mfrxz7sbpyymricz57a3vlvx"))))
25311 (build-system python-build-system)
25313 `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub
25314 (home-page "https://github.com/vlasovskikh/funcparserlib")
25316 "Recursive descent parsing library based on functional combinators")
25318 "This package is a recursive descent parsing library for Python based on
25319 functional combinators. Parser combinators are just higher-order functions
25320 that take parsers as their arguments and return them as result values.")
25321 (license license:expat)))
25323 (define-public python-speg
25325 (name "python-speg")
25330 (uri (pypi-uri "speg" version ".zip"))
25332 (base32 "0w9y4jf4787dzhy6rvhwi0mpl0r8qkqmqmyv2hpwdpv8w53yzjqh"))))
25334 `(#:tests? #f)) ;FIXME: tests fail, not sure why
25337 (build-system python-build-system)
25338 (home-page "https://github.com/avakar/speg")
25339 (synopsis "PEG-based parser interpreter with memoization")
25340 (description "This package is a PEG-based parser and interpreter with
25342 (license license:expat)))
25344 (define-public python-cson
25346 (name "python-cson")
25351 (uri (pypi-uri "cson" version))
25353 (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f"))))
25354 (build-system python-build-system)
25356 (list python-speg))
25357 (home-page "https://github.com/avakar/pycson")
25358 (synopsis "Parser for Coffeescript Object Notation (CSON)")
25359 (description "This package is a parser for Coffeescript Object
25361 (license license:expat)))
25363 (define-public python-aionotify
25365 (name "python-aionotify")
25369 ;; Source tarball on PyPi lacks tests
25371 (uri (git-reference
25372 (url "https://github.com/rbarrois/aionotify")
25373 (commit (string-append "v" version))))
25374 (file-name (git-file-name name version))
25376 (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))
25377 (patches (search-patches "python-aionotify-0.2.0-py3.8.patch"))))
25378 (build-system python-build-system)
25379 (home-page "https://github.com/rbarrois/aionotify")
25380 (synopsis "Asyncio-powered inotify library")
25382 "@code{aionotify} is a simple, asyncio-based inotify library.")
25383 (license license:bsd-3)))
25385 (define-public python-forbiddenfruit
25387 (name "python-forbiddenfruit")
25391 ;; Source tarball on PyPi lacks Makefile that builds and runs tests
25393 (uri (git-reference
25394 (url "https://github.com/clarete/forbiddenfruit")
25396 (file-name (git-file-name name version))
25398 (base32 "1fp2xvdqpi910j9r3q68x38phpxbm700gjdi2m2j5gs91xdnyyh2"))))
25399 (build-system python-build-system)
25402 (modify-phases %standard-phases
25405 (invoke "make" "SKIP_DEPS=1"))))))
25407 (list python-nose python-coverage))
25408 (home-page "https://github.com/clarete/forbiddenfruit")
25409 (synopsis "Patch python built-in objects")
25410 (description "This project allows Python code to extend built-in types.")
25411 (license (list license:gpl3+ license:expat))))
25413 (define-public python-k5test
25415 (name "python-k5test")
25420 (uri (pypi-uri "k5test" version))
25423 "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8"))))
25424 (build-system python-build-system)
25427 ;; `which`, `kadmin.local` binaries called inside library
25429 (native-inputs (list mit-krb5))
25432 (modify-phases %standard-phases
25433 (add-after 'unpack 'apply-upstream-fixes
25435 (substitute* "k5test/realm.py"
25436 ;; Upstream commit f6b302d94dbdce37a1b81cc3faeeac4dc637b0e9.
25437 (("'kadmin_local'") "'kadmin.local'")
25438 ;; Upstream commit 3aef84515cf3d1a171c66856c898d0a5cbbd03ea.
25439 (("\\.stop_daemon") "._stop_daemon")))))))
25440 (home-page "https://github.com/pythongssapi/k5test")
25441 (synopsis "Library for setting up self-contained Kerberos 5 environments")
25443 "@code{k5test} is a library for setting up self-contained Kerberos 5
25444 environments, and running Python unit tests inside those environments. It is
25445 based on the file of the same name found alongside the MIT Kerberos 5 unit
25447 (license license:isc)))
25449 (define-public python-gssapi
25451 (name "python-gssapi")
25456 (uri (pypi-uri "gssapi" version))
25459 "1j2idrbrbczykzlb56q1bn0ivc9c0rjjljpk4yz86xn3gxfkpv8n"))))
25460 (build-system python-build-system)
25462 (list python-decorator python-six))
25467 (list python-parameterized python-k5test python-nose))
25468 (home-page "https://github.com/pythongssapi/python-gssapi")
25469 (synopsis "Python GSSAPI Wrapper")
25471 "Python-GSSAPI provides both low-level and high level wrappers around the
25472 GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should
25473 also be usable with other GSSAPI mechanisms.")
25474 (license license:isc)))
25476 (define-public python-check-manifest
25478 (name "python-check-manifest")
25483 (uri (pypi-uri "check-manifest" version))
25486 "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4"))))
25487 (build-system python-build-system)
25489 (list python-mock git))
25490 (home-page "https://github.com/mgedmin/check-manifest")
25491 (synopsis "Check MANIFEST.in in a Python source package for completeness")
25492 (description "Python package can include a MANIFEST.in file to help with
25493 sending package files to the Python Package Index. This package checks that
25494 file to ensure it completely and accurately describes your project.")
25495 (license license:expat)))
25497 (define-public python-android-stringslib
25499 (name "python-android-stringslib")
25504 (uri (git-reference
25505 (url "https://framagit.org/tyreunom/python-android-strings-lib")
25506 (commit (string-append "v" version))))
25507 (file-name (git-file-name name version))
25510 "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4"))))
25511 (build-system python-build-system)
25514 (home-page "https://framagit.org/tyreunom/python-android-strings-lib")
25515 (synopsis "Android strings.xml support")
25516 (description "Android Strings Lib provides support for android's strings.xml
25517 files. These files are used to translate strings in android apps.")
25518 (license license:expat)))
25520 (define-public python-watchdog
25522 (name "python-watchdog")
25527 (uri (pypi-uri "watchdog" version))
25529 (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3"))))
25530 (build-system python-build-system)
25533 (modify-phases %standard-phases
25535 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
25537 (add-installed-pythonpath inputs outputs)
25538 (invoke "python" "-m" "pytest" "-k"
25539 ;; This test failed.
25540 "not test_kill_auto_restart")))))))
25542 (list python-pathtools python-pyyaml))
25544 (list python-pytest-cov python-pytest-timeout))
25545 (home-page "https://github.com/gorakhargosh/watchdog")
25546 (synopsis "File system events monitoring")
25547 (description "This package provides a way to monitor file system events
25548 such as a file modification and trigger an action. This is similar to inotify,
25550 (license license:asl2.0)))
25552 (define-public python-watchgod
25554 (name "python-watchgod")
25558 ;; There are no tests in the PyPI tarball.
25560 (uri (git-reference
25561 (url "https://github.com/samuelcolvin/watchgod")
25562 (commit (string-append "v" version))))
25563 (file-name (git-file-name name version))
25565 (base32 "1w2xsidwp9n4giqhja0bzw7rwrh01db0kdxf2n54mv3dkx545jpq"))))
25566 (build-system python-build-system)
25569 (modify-phases %standard-phases
25571 (lambda* (#:key tests? #:allow-other-keys)
25573 (invoke "pytest" "-vv"
25574 "-o" "asyncio_mode=auto")))))))
25576 (list python-coverage
25579 python-pytest-asyncio
25582 python-pytest-sugar
25583 python-pytest-toolbox))
25584 (home-page "https://github.com/samuelcolvin/watchgod")
25585 (synopsis "Simple, modern file watching and code reload in Python")
25587 "Simple, modern file watching and code reload in Python inspired by
25588 @code{watchdog}. Among the differences are a unified approach for each
25589 operating systems and an elegant approach to concurrency using threading.")
25590 (license license:expat)))
25592 (define-public python-wget
25594 (name "python-wget")
25599 (uri (pypi-uri "wget" version ".zip"))
25602 "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim"))))
25603 (build-system python-build-system)
25604 (native-inputs (list unzip))
25605 (home-page "https://bitbucket.org/techtonik/python-wget/")
25606 (synopsis "Pure Python download utility")
25607 (description "The python-wget library provides an API to download files
25608 with features similar to the @command{wget} utility.")
25609 (license license:unlicense)))
25611 (define-public offlate
25618 (uri (git-reference
25619 (url "https://framagit.org/tyreunom/offlate")
25621 (file-name (git-file-name name version))
25624 "1sx5cv8pamyw1m089b6x8ykaxdkx26jk9cblhbzlf0m3ckz52jik"))))
25625 (build-system python-build-system)
25630 (modify-phases %standard-phases
25631 (add-before 'build 'generate-fonts
25633 (invoke "make" "fonts")))
25634 (add-before 'build 'generate-translations
25636 (invoke "make" "update-langs"))))))
25638 (list python-android-stringslib
25650 python-translate-toolkit
25651 python-translation-finder
25654 (list qttools-5 fontforge))
25655 (home-page "https://framagit.org/tyreunom/offlate")
25656 (synopsis "Offline translation interface for online translation tools")
25657 (description "Offlate offers a unified interface for different translation
25658 file formats, as well as many different online translation platforms. You can
25659 use it to get work from online platforms, specialized such as the Translation
25660 Project, or not such a gitlab instance when your upstream doesn't use any
25661 dedicated platform. The tool proposes a unified interface for any format and
25662 an upload option to send your work back to the platform.")
25663 (license license:gpl3+)))
25665 (define-public python-titlecase
25667 (name "python-titlecase")
25672 (uri (pypi-uri "titlecase" version))
25675 "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4"))))
25676 (build-system python-build-system)
25678 (list python-nose))
25679 (home-page "https://github.com/ppannuto/python-titlecase")
25680 (synopsis "Capitalize strings similar to book titles")
25682 "Python-Titlecase is a Python port of John Gruber's titlecase.pl.
25683 It capitalizes (predominantly English) strings in a way that is similar to
25684 book titles, using the New York Times Manual of Style to leave certain words
25686 (license license:expat)))
25688 (define-public python-pypng
25690 (name "python-pypng")
25695 (uri (pypi-uri "pypng" version))
25697 (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh"))))
25698 (build-system python-build-system)
25699 (home-page "https://github.com/drj11/pypng")
25700 (synopsis "Pure Python PNG image encoder/decoder")
25702 "The PyPNG module implements support for PNG images. It reads and writes
25703 PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per
25704 pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA,
25705 LA (greyscale with alpha) with 8/16 bits per channel; colour mapped
25706 images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing.
25707 A number of optional chunks can be specified (when writing) and
25708 understood (when reading): tRNS, bKGD, gAMA.
25710 PyPNG is not a high level toolkit for image processing (like PIL) and does not
25711 aim at being a replacement or competitor. Its strength lies in fine-grained
25712 extensive support of PNG features. It can also read and write Netpbm PAM
25713 files, with a focus on its use as an intermediate format for implementing
25714 custom PNG processing.")
25715 (license license:expat)))
25717 (define-public python-fuzzywuzzy
25719 (name "python-fuzzywuzzy")
25724 (uri (pypi-uri "fuzzywuzzy" version))
25727 "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5"))))
25728 (build-system python-build-system)
25730 (list python-hypothesis python-pycodestyle python-pytest))
25732 (list python-levenshtein))
25733 (home-page "https://github.com/seatgeek/fuzzywuzzy")
25734 (synopsis "Fuzzy string matching in Python")
25735 (description "Approximate string matching using
25736 @emph{Levenshtein Distance} to calculate the differences between
25738 (license license:gpl2)))
25740 (define-public python-block-tracing
25742 (name "python-block-tracing")
25747 (uri (pypi-uri "block_tracing" version))
25750 "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz"))))
25751 (build-system python-build-system)
25752 (arguments '(#:tests? #f)) ; no tests
25753 (home-page "https://github.com/rianhunter/block_tracing")
25754 (synopsis "Protect process memory")
25756 "@code{block_tracing} is a tiny Python library that can be used to
25757 prevent debuggers and other applications from inspecting the memory within
25759 (license license:expat)))
25761 (define-public python-gcovr
25763 (name "python-gcovr")
25768 (uri (pypi-uri "gcovr" version))
25771 "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs"))))
25772 (build-system python-build-system)
25774 (list python-lxml python-jinja2))
25775 (home-page "https://gcovr.com/")
25776 (synopsis "Utility for generating code coverage results")
25778 "Gcovr provides a utility for managing the use of the GNU gcov
25779 utility and generating summarized code coverage results. It is inspired
25780 by the Python coverage.py package, which provides a similar utility for
25782 (license license:bsd-3)))
25784 (define-public python-owslib
25786 (name "python-owslib")
25791 (uri (pypi-uri "OWSLib" version))
25793 (base32 "0v8vg0naa9rywvd31cpq65ljbdclpsrx09788v4xj7lg10np8nk0"))))
25794 (build-system python-build-system)
25796 ;; TODO: package dependencies required for tests.
25798 #:phases (modify-phases %standard-phases
25799 (delete 'sanity-check))))
25800 (synopsis "Interface for Open Geospatial Consortium web service")
25802 "OWSLib is a Python package for client programming with Open Geospatial
25803 Consortium (OGC) web service (hence OWS) interface standards, and their related
25805 (home-page "https://geopython.github.io/OWSLib/")
25806 (license license:bsd-3)))
25808 (define-public python-docusign-esign
25810 (name "python-docusign-esign")
25814 (uri (pypi-uri "docusign_esign" version))
25817 "01f3h03vc97syjlmqyl7xa5j90pzgmwpspc5a0gra9saynnbkx37"))))
25818 (build-system python-build-system)
25819 ;; Testing requires undocumented setup changes, and so testing is disabled here.
25820 (arguments `(#:tests? #f))
25822 (list python-certifi
25827 python-cryptography
25829 (synopsis "DocuSign Python Client")
25830 (description "The Official DocuSign Python Client Library used to interact
25831 with the eSign REST API. Send, sign, and approve documents using this client.")
25832 (home-page "https://www.docusign.com/devcenter")
25833 (license license:expat)))
25835 (define-public python-xattr
25837 (name "python-xattr")
25842 (uri (pypi-uri "xattr" version))
25845 "0ipkfblyvp5hylahjkw9zss1ii9xnwjypr3b3ncv989szcg7xjq9"))))
25846 (build-system python-build-system)
25848 (list python-cffi))
25849 (home-page "https://github.com/xattr/xattr")
25851 "Python wrapper for extended file system attributes")
25852 (description "This package provides a Python wrapper for using extended
25853 file system attributes. Extended attributes extend the basic attributes of files
25854 and directories in the file system. They are stored as name:data pairs
25855 associated with file system objects (files, directories, symlinks, etc).")
25856 (license license:expat)))
25858 (define-public python-json-logger
25860 (name "python-json-logger")
25865 (uri (pypi-uri "python-json-logger" version))
25868 "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp"))))
25869 (build-system python-build-system)
25871 "https://github.com/madzak/python-json-logger")
25872 (synopsis "JSON log formatter in Python")
25873 (description "This library allows standard Python logging to output log data
25874 as JSON objects. With JSON we can make our logs more readable by machines and
25875 we can stop writing custom parsers for syslog-type records.")
25876 (license license:bsd-3)))
25878 (define-public python-daiquiri
25880 (name "python-daiquiri")
25885 (uri (pypi-uri "daiquiri" version))
25888 "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd"))))
25889 (build-system python-build-system)
25891 (list python-json-logger))
25893 (list python-mock python-pytest python-setuptools-scm python-six))
25894 (home-page "https://github.com/jd/daiquiri")
25896 "Library to configure Python logging easily")
25897 (description "The daiquiri library provides an easy way to configure
25898 logging in Python. It also provides some custom formatters and handlers.")
25899 (license license:asl2.0)))
25901 (define-public python-pifpaf
25903 (name "python-pifpaf")
25908 (uri (pypi-uri "pifpaf" version))
25911 "19bdmxldc2m570isl7hbqgbb20si4sin7pi5fw8sv9py8dyv2s4n"))))
25912 (build-system python-build-system)
25915 (modify-phases %standard-phases
25918 (invoke "python" "setup.py" "testr" "--slowest"
25919 "--testr-args=until-failure"))))))
25929 (list python-mock python-os-testr python-requests
25930 python-testrepository python-testtools))
25931 (home-page "https://github.com/jd/pifpaf")
25932 (synopsis "Tools and fixtures to manage daemons for testing in Python")
25933 (description "Pifpaf is a suite of fixtures and a command-line tool that
25934 starts and stops daemons for a quick throw-away usage. This is typically
25935 useful when needing these daemons to run integration testing. It originally
25936 evolved from its precursor @code{overtest}.")
25937 (license license:asl2.0)))
25939 (define-public python-pytest-check-links
25941 (name "python-pytest-check-links")
25946 ;; URI uses underscores
25947 (uri (pypi-uri "pytest_check_links" version))
25950 "12x3wmrdzm6wgk0vz02hb769h68nr49q47w5q1pj95pc89hsa34v"))))
25951 (build-system python-build-system)
25953 (list python-docutils
25960 (list python-pbr-minimal))
25961 (home-page "https://github.com/minrk/pytest-check-links")
25962 (synopsis "Check links in files")
25963 (description "This package provides a pytest plugin that checks URLs for
25964 HTML-containing files.")
25965 (license license:bsd-3)))
25967 (define-public python-json5
25969 (name "python-json5")
25973 ;; sample.json5 is missing from PyPi source tarball
25975 (uri (git-reference
25976 (url "https://github.com/dpranke/pyjson5")
25977 (commit (string-append "v" version))))
25978 (file-name (git-file-name name version))
25980 (base32 "0nyngj18jlkgvm1177lc3cj47wm4yh3dqigygvcvw7xkyryafsqn"))))
25981 (build-system python-build-system)
25982 (home-page "https://github.com/dpranke/pyjson5")
25984 "Python implementation of the JSON5 data format")
25986 "JSON5 extends the JSON data interchange format to make it slightly more
25987 usable as a configuration language. This Python package implements parsing and
25988 dumping of JSON5 data structures.")
25989 (license license:asl2.0)))
25991 (define-public python-freetype-py
25993 (name "python-freetype-py")
25998 (uri (pypi-uri "freetype-py" version ".zip"))
26000 (base32 "1l55wzy21jmdayjna29ahzxrf2fp68580978rs6kap1a4zilrdpr"))))
26001 (build-system python-build-system)
26003 (list python-setuptools-scm
26005 (inputs (list freetype))
26008 ;; Note: the pypi archive does not contain tests, but running the check
26009 ;; phase will at least test whether the module loads correctly.
26010 (modify-phases %standard-phases
26011 (add-before 'build 'embed-library-reference
26012 (lambda* (#:key inputs #:allow-other-keys)
26013 (substitute* "freetype/raw.py"
26014 (("^(filename = ).*" _ >)
26015 (string-append > "\"" (search-input-file inputs "/lib/libfreetype.so")
26017 (home-page "https://github.com/rougier/freetype-py")
26018 (synopsis "Freetype python bindings")
26019 (description "Freetype Python provides bindings for the FreeType
26020 library. Only the high-level API is bound.")
26021 (license license:bsd-3)))
26023 (define-public python-frozendict
26025 (name "python-frozendict")
26030 (uri (pypi-uri "frozendict" version))
26032 (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
26033 (build-system python-build-system)
26034 (home-page "https://github.com/slezica/python-frozendict")
26035 (synopsis "Simple immutable mapping for Python")
26037 "@dfn{frozendict} is an immutable wrapper around dictionaries that
26038 implements the complete mapping interface. It can be used as a drop-in
26039 replacement for dictionaries where immutability is desired.")
26040 (license license:expat)))
26042 (define-public python-unpaddedbase64
26044 (name "python-unpaddedbase64")
26049 (uri (pypi-uri "unpaddedbase64" version))
26051 (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj"))))
26052 (build-system python-build-system)
26055 (modify-phases %standard-phases
26057 (lambda* (#:key inputs tests? #:allow-other-keys)
26059 (copy-recursively (string-append
26060 (assoc-ref inputs "tests") "/tests")
26062 (invoke "python" "-m" "pytest" "-vv")))))))
26064 `(("python-pytest" ,python-pytest)
26066 ;; The release on pypi comes without tests. We can't build from this
26067 ;; checkout, though, because installation requires an invocation of
26071 (uri (git-reference
26072 (url "https://github.com/matrix-org/python-unpaddedbase64")
26073 (commit (string-append "v" version))))
26074 (file-name (git-file-name name version))
26077 "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz"))))))
26078 (home-page "https://github.com/matrix-org/python-unpaddedbase64")
26079 (synopsis "Encode and decode Base64 without “=” padding")
26081 "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
26082 using “=” characters. However this conveys no benefit so many protocols
26083 choose to use Base64 without the “=” padding.")
26084 (license license:asl2.0)))
26086 (define-public python-py-cpuinfo
26087 ;; This is the first commit where riscv64-linux support is available.
26088 ;; We can move back to pypi releases with the next release.
26089 (let ((commit "4d6987e5c30f2ebacb20781892c01329042cce60")
26092 (name "python-py-cpuinfo")
26093 (version (git-version "8.0.0" revision commit))
26097 (uri (git-reference
26098 (url "https://github.com/workhorsy/py-cpuinfo")
26100 (file-name (git-file-name name version))
26103 "0h5wi1bfcqqr1x3j1pa7dmkx7siprsyksbsy80fl2sdrrgpji0b0"))))
26104 (build-system python-build-system)
26105 (home-page "https://github.com/workhorsy/py-cpuinfo")
26106 (synopsis "Get CPU info with Python")
26108 "This Python module returns the CPU info by using the best sources of
26109 information for your operating system.")
26110 (license license:expat))))
26112 (define-public python-canonicaljson
26114 (name "python-canonicaljson")
26119 (uri (pypi-uri "canonicaljson" version))
26121 (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9"))))
26122 (build-system python-build-system)
26124 (list python-six python-frozendict python-simplejson))
26125 (home-page "https://github.com/matrix-org/python-canonicaljson")
26126 (synopsis "Canonical JSON")
26128 "Deterministically encode JSON.
26131 @item Encodes objects and arrays as RFC 7159 JSON.
26132 @item Sorts object keys so that you get the same result each time.
26133 @item Has no insignificant whitespace to make the output as small as possible.
26134 @item Escapes only the characters that must be escaped, U+0000 to
26135 U+0019 / U+0022 / U+0056, to keep the output as small as possible.
26136 @item Uses the shortest escape sequence for each escaped character.
26137 @item Encodes the JSON as UTF-8.
26138 @item Can encode frozendict immutable dictionaries.
26140 (license license:asl2.0)))
26142 (define-public python-signedjson
26144 (name "python-signedjson")
26149 (uri (pypi-uri "signedjson" version))
26151 (base32 "0280f8zyycsmd7iy65bs438flm7m8ffs1kcxfbvhi8hbazkqc19m"))))
26152 (build-system python-build-system)
26154 (list python-canonicaljson python-importlib-metadata python-pynacl
26155 python-typing-extensions python-unpaddedbase64))
26157 (list python-setuptools-scm))
26158 (home-page "https://github.com/matrix-org/python-signedjson")
26159 (synopsis "Sign JSON objects with ED25519 signatures")
26161 "Sign JSON objects with ED25519 signatures.
26164 @item More than one entity can sign the same object.
26165 @item Each entity can sign the object with more than one key making it easier to
26167 @item ED25519 can be replaced with a different algorithm.
26168 @item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
26171 (license license:asl2.0)))
26173 (define-public python-daemonize
26175 (name "python-daemonize")
26180 (uri (pypi-uri "daemonize" version))
26182 (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
26183 (build-system python-build-system)
26184 (home-page "https://github.com/thesharp/daemonize")
26185 (synopsis "Library for writing system daemons in Python")
26186 (description "Daemonize is a library for writing system daemons in Python.")
26187 (license license:expat)))
26189 (define-public python-pymacaroons
26191 (name "python-pymacaroons")
26196 (uri (pypi-uri "pymacaroons" version))
26198 (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
26199 (build-system python-build-system)
26201 (list python-six python-pynacl))
26202 (home-page "https://github.com/ecordell/pymacaroons")
26203 (synopsis "Python Macaroon Library")
26205 "Macaroons, like cookies, are a form of bearer credential. Unlike opaque
26206 tokens, macaroons embed caveats that define specific authorization
26207 requirements for the target service, the service that issued the root macaroon
26208 and which is capable of verifying the integrity of macaroons it receives.
26210 Macaroons allow for delegation and attenuation of authorization. They are
26211 simple and fast to verify, and decouple authorization policy from the
26212 enforcement of that policy.")
26213 (license license:expat)))
26215 (define-public python-ldap3
26217 (name "python-ldap3")
26219 (home-page "https://github.com/cannatag/ldap3")
26223 (uri (git-reference (url home-page)
26224 (commit (string-append "v" version))))
26225 (file-name (git-file-name name version))
26227 (base32 "0xw9fkqld21xsvdpaqir8ccc2l805xnn9gxahsnl70xzp3mwl0xv"))))
26228 (build-system python-build-system)
26230 '(#:tests? #f ;TODO: Tests need a real LDAP server to run
26231 #:phases (modify-phases %standard-phases
26233 (lambda* (#:key tests? #:allow-other-keys)
26235 (invoke "nosetests" "-s" "test"))
26238 (list python-nose))
26240 (list python-gssapi python-pyasn1))
26241 (synopsis "Python LDAP client")
26243 "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
26245 (license license:lgpl3+)))
26247 (define-public python-boltons
26249 (name "python-boltons")
26254 (uri (pypi-uri "boltons" version))
26257 "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4"))))
26258 (build-system python-build-system)
26259 (home-page "https://github.com/mahmoud/boltons")
26260 (synopsis "Extensions to the Python standard library")
26262 "Boltons is a set of over 230 pure-Python utilities in the same spirit
26263 as — and yet conspicuously missing from — the standard library, including:
26266 @item Atomic file saving, bolted on with fileutils
26267 @item A highly-optimized OrderedMultiDict, in dictutils
26268 @item Two types of PriorityQueue, in queueutils
26269 @item Chunked and windowed iteration, in iterutils
26270 @item Recursive data structure iteration and merging, with iterutils.remap
26271 @item Exponential backoff functionality, including jitter, through
26273 @item A full-featured TracebackInfo type, for representing stack traces, in
26276 (license license:bsd-3)))
26278 (define-public python-eliot
26280 (name "python-eliot")
26285 (uri (pypi-uri "eliot" version))
26287 (base32 "1xzzhsjrrw430dc84vamf683bwp9i0nr86xf2iav6yla615ijq2p"))))
26288 (build-system python-build-system)
26291 (modify-phases %standard-phases
26292 (add-after 'unpack 'remove-journald-support
26294 (for-each delete-file
26295 '("eliot/tests/test_journald.py"
26296 "eliot/journald.py"))
26298 (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
26299 ;; remove command-line tool's tests. TODO eliot-prettyprint should
26300 ;; be installed and these tests should pass.
26302 (delete-file "eliot/tests/test_prettyprint.py")
26304 (add-after 'remove-eliot-prettyprint-tests 'remove-failing-tests
26306 ;; These tests started to fail after updating python-pandas to
26307 ;; 1.3.3 and python-dask to 2021.9.1.
26308 (substitute* "eliot/tests/test_validation.py"
26309 (("test_omitLoggerFromActionType")
26310 "_test_omitLoggerFromActionType")
26311 (("test_logCallsDefaultLoggerWrite")
26312 "_test_logCallsDefaultLoggerWrite"))
26315 (list python-boltons python-pyrsistent python-six
26316 python-zope-interface))
26326 python-sphinx-rtd-theme
26330 (home-page "https://github.com/itamarst/eliot/")
26331 (synopsis "Eliot: the logging system that tells you why it happened")
26333 "@dfn{eliot} is a Python logging system that outputs causal chains of
26334 actions: actions can spawn other actions, and eventually they either succeed
26335 or fail. The resulting logs tell you the story of what your software did: what
26336 happened, and what caused it.")
26337 (license license:asl2.0)))
26339 (define-public python-pem
26341 (name "python-pem")
26346 (uri (pypi-uri "pem" version))
26349 "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
26350 (build-system python-build-system)
26352 (list python-certifi
26359 (home-page "https://pem.readthedocs.io/")
26360 (synopsis "Easy PEM file parsing in Python")
26362 "This package provides a Python module for parsing and splitting PEM files.")
26363 (license license:expat)))
26365 (define-public python-txsni
26366 ;; We need a few commits on top of 0.1.9 for compatibility with newer
26367 ;; Python and OpenSSL.
26368 (let ((commit "5014c141a7acef63e20fcf6c36fa07f0cd754ce1")
26371 (name "python-txsni")
26372 (version (git-version "0.1.9" revision commit))
26373 (home-page "https://github.com/glyph/txsni")
26377 (uri (git-reference (url home-page) (commit commit)))
26378 (file-name (git-file-name name version))
26381 "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8"))))
26382 (build-system python-build-system)
26384 (list python-pyopenssl python-service-identity python-twisted))
26385 (synopsis "Run TLS servers with Twisted")
26387 "This package provides an easy-to-use SNI endpoint for use
26388 with the Twisted web framework.")
26389 (license license:expat))))
26391 (define-public python-txacme
26393 (name "python-txacme")
26398 (uri (pypi-uri "txacme" version))
26400 (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
26401 (build-system python-build-system)
26412 (list python-fixtures
26415 python-service-identity
26416 python-testrepository
26417 python-testscenarios
26419 (home-page "https://github.com/twisted/txacme")
26420 (synopsis "Twisted implexmentation of the ACME protocol")
26422 "ACME is Automatic Certificate Management Environment, a protocol that
26423 allows clients and certificate authorities to automate verification and
26424 certificate issuance. The ACME protocol is used by the free Let's Encrypt
26425 Certificate Authority.
26427 txacme is an implementation of the protocol for Twisted, the event-driven
26428 networking engine for Python.")
26429 (license license:expat)))
26431 (define-public python-pysaml2
26433 (name "python-pysaml2")
26438 (uri (pypi-uri "pysaml2" version))
26441 "1xk2x0slz1f8cqv7vn77qx99xfd1mshhswiwrljk9m72w2m9iivd"))))
26442 (build-system python-build-system)
26444 (list python-cryptography
26447 python-importlib-resources
26453 (home-page "https://idpy.org")
26454 (synopsis "Python implementation of SAML Version 2 Standard")
26456 "PySAML2 is a pure python implementation of SAML Version 2 Standard.
26457 It contains all necessary pieces for building a SAML2 service provider or
26458 an identity provider. The distribution contains examples of both.
26460 This package was originally written to work in a WSGI environment, but
26461 there are extensions that allow you to use it with other frameworks.")
26462 (license license:asl2.0)))
26464 (define-public python-click-plugins
26466 (name "python-click-plugins")
26471 (uri (pypi-uri "click-plugins" version))
26473 (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6"))))
26474 (build-system python-build-system)
26476 (list python-pytest))
26478 (list python-click))
26479 (synopsis "Extension for Click to register external CLI commands")
26480 (description "This package provides n extension module for Click to
26481 register external CLI commands via setuptools entry-points.")
26482 (home-page "https://github.com/click-contrib/click-plugins")
26483 (license license:bsd-3)))
26485 (define-public python-diceware
26487 (name "python-diceware")
26492 (uri (pypi-uri "diceware" version))
26495 "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby"))))
26496 (build-system python-build-system)
26498 (list python-coverage python-pytest python-pytest-runner))
26499 (home-page "https://github.com/ulif/diceware/")
26500 (synopsis "Generates memorable passphrases")
26501 (description "This package generates passphrases by concatenating words
26502 randomly picked from wordlists. It supports several sources of
26503 randomness (including real life dice) and different wordlists (including
26504 cryptographically signed ones).")
26505 (license license:gpl3+)))
26507 (define-public python-dictdiffer
26509 (name "python-dictdiffer")
26513 (uri (pypi-uri "dictdiffer" version))
26516 "0y3mk74qm2q9hsm37892i1wzn8bbdrvbs4nmnvqwq4z6pxgwzfhp"))))
26517 (build-system python-build-system)
26519 ;; XXX: The PyPI tarball lacks tests and the git repository
26520 ;; fails to determine version.
26523 (list python-pytest-runner python-setuptools-scm))
26524 (home-page "https://github.com/inveniosoftware/dictdiffer")
26525 (synopsis "Diff and patch Python dictionary objects")
26527 "Dictdiffer is a Python module that helps you to diff and patch
26529 (license license:expat)))
26531 (define-public python-dictpath
26533 (name "python-dictpath")
26538 (uri (pypi-uri "dictpath" version))
26540 (base32 "1n4hq4wbgaw59bbb16nhkgg5wk8sl4iw940vjrgx4xmifqxxw73m"))))
26541 (build-system python-build-system)
26542 (native-inputs (list python-pytest python-pytest-cov python-pytest-flake8))
26543 (home-page "https://github.com/p1c2u/pathable")
26544 (synopsis "Object-oriented path library for Python")
26545 (description "This object-oriented dictionary path Python library enables
26546 traversing resources like paths or accessing resources on demand with separate
26548 (license license:asl2.0)))
26550 (define-public pyzo
26557 (uri (git-reference
26558 (url "https://github.com/pyzo/pyzo.git")
26559 (commit (string-append "v" version))))
26560 (file-name (git-file-name name version))
26563 "0v6rgp52bf9za2spxx9c1yc6wmskvlsj81iw0gipjy7y8vpypgn2"))))
26564 (build-system python-build-system)
26567 (modify-phases %standard-phases
26568 (add-before 'check 'fix-home-directory
26570 ;; Tests fail with "Permission denied: '/homeless-shelter'".
26571 (setenv "HOME" "/tmp"))))
26572 ;; Tests fail with "Uncaught Python exception: python: undefined
26573 ;; symbol: objc_getClass".
26576 (list python-pyqt))
26577 (home-page "https://pyzo.org")
26579 "Python IDE for scientific computing")
26581 "Pyzo is a Python IDE focused on interactivity and introspection,
26582 which makes it very suitable for scientific computing. Its practical
26583 design is aimed at simplicity and efficiency.
26585 It consists of two main components, the editor and the shell, and uses
26586 a set of pluggable tools to help the programmer in various ways. Some
26587 example tools are source structure, project manager, interactive help,
26589 (license license:bsd-2)))
26591 (define-public python-osc
26593 (name "python-osc")
26598 (uri (pypi-uri "python-osc" version))
26601 "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn"))))
26602 (build-system python-build-system)
26603 (home-page "https://github.com/attwad/python-osc")
26604 (synopsis "Open Sound Control server and client implementations")
26606 "@code{python-osc} is a pure Python library with no external
26607 dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0,
26608 Open Sound Control 1.0} specification.")
26609 (license license:unlicense)))
26611 (define-public python-voluptuous
26613 (name "python-voluptuous")
26618 (uri (pypi-uri "voluptuous" version))
26621 "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a"))))
26622 (build-system python-build-system)
26624 (list python-nose))
26625 (home-page "https://github.com/alecthomas/voluptuous")
26626 (synopsis "Python data validation library")
26628 "Voluptuous is a Python data validation library. It is primarily
26629 intended for validating data coming into Python as JSON, YAML, etc.")
26630 (license license:bsd-3)))
26632 (define-public python-cmd2
26634 (name "python-cmd2")
26639 (uri (pypi-uri "cmd2" version))
26642 "0h1naik558qh48gx2iyy0a0khvw5fz0in69y84mbrhsm9nq7w3bm"))))
26643 (build-system python-build-system)
26646 (modify-phases %standard-phases
26648 (lambda* (#:key tests? #:allow-other-keys)
26650 (invoke "pytest" "-vv" "-k"
26651 ;; These tests fail because no EDITOR is in PATH.
26652 "not test_find_editor_not_specified \
26653 and not test_transcript")
26654 (format #t "test suite not run~%")))))))
26656 (list python-attrs python-colorama python-pyperclip python-wcwidth))
26658 (list python-invoke
26663 python-setuptools-scm))
26664 (home-page "https://github.com/python-cmd2/cmd2")
26665 (synopsis "Tool for building interactive command line applications")
26667 "Cmd2 is a tool for building interactive command line applications in
26668 Python. Its goal is to make it quick and easy for developers to build
26669 feature-rich and user-friendly interactive command line applications. It
26670 provides a simple API which is an extension of Python's built-in @code{cmd}
26671 module. @code{cmd2} provides a wealth of features on top of @code{cmd} to
26672 make your life easier and eliminates much of the boilerplate code which would
26673 be necessary when using @code{cmd}.")
26674 (license license:expat)))
26676 (define-public python-pytidylib
26678 (name "python-pytidylib")
26682 (uri (pypi-uri "pytidylib" version))
26685 "1wqa9dv5d7swka14rnky862hc7dgk2g3dhlrz57hdn3hb7bwic92"))))
26686 (build-system python-build-system)
26689 (modify-phases %standard-phases
26690 (add-before 'build 'qualify-libtidy
26691 (lambda* (#:key inputs #:allow-other-keys)
26692 (let ((libtidy (search-input-file inputs "/lib/libtidy.so")))
26693 (substitute* "tidylib/tidy.py"
26694 (("ctypes\\.util\\.find_library\\('tidy'\\)")
26695 (format #f "'~a'" libtidy)))
26697 (inputs (list tidy))
26698 (home-page "https://github.com/countergram/pytidylib")
26699 (synopsis "Python wrapper for HTML Tidy library")
26701 "PyTidyLib is a Python package that wraps the HTML Tidy library. This
26702 allows you, from Python code, to “fix” invalid (X)HTML markup.")
26703 (license license:expat)))
26705 (define-public python-mujson
26707 (name "python-mujson")
26712 (uri (pypi-uri "mujson" version))
26715 "0wbj6r8yzsdx2b0kbldlkznr1a9nn33za2q9x3g0hbg420dwzn97"))))
26716 (build-system python-build-system)
26717 (home-page "https://github.com/mattgiles/mujson")
26718 (synopsis "Use the fastest JSON functions available at import time")
26719 (description "This package selects the fastest JSON functions available
26721 (license license:expat)))
26723 (define-public python-bashlex
26725 (name "python-bashlex")
26730 (uri (pypi-uri "bashlex" version))
26733 "1z9g96fgsfpdwawp4sb5x6hbdhmda7kgmcrqlf9xx4bs1f8f14js"))))
26734 (build-system python-build-system)
26737 (modify-phases %standard-phases
26738 (add-before 'build 'pregenerate-yacc-tables
26740 ;; parser.py caches tables, which attempts to write to site lib
26741 ;; see https://github.com/idank/bashlex/issues/51
26742 (invoke "python" "-c" "import bashlex"))))))
26744 "https://github.com/idank/bashlex")
26745 (synopsis "Python parser for bash")
26746 (description "@code{bashlex} is a Python port of the parser used
26747 internally by GNU bash.
26749 For the most part it's transliterated from C, the major differences are:
26752 @item it does not execute anything
26753 @item it is reentrant
26754 @item it generates a complete AST
26757 (license license:gpl3+)))
26759 (define-public python-jinxed
26761 (name "python-jinxed")
26766 (uri (pypi-uri "jinxed" version))
26769 "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
26770 (build-system python-build-system)
26773 (modify-phases %standard-phases
26774 (add-before 'check 'set-environment-variables
26775 (lambda* (#:key inputs #:allow-other-keys)
26776 (let ((ncurses (assoc-ref inputs "ncurses")))
26777 (setenv "TERM" "LINUX")
26778 (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
26780 #:tests? #f)) ; _curses.error: setupterm: could not find terminal
26783 (home-page "https://github.com/Rockhopper-Technologies/jinxed")
26784 (synopsis "Jinxed Terminal Library")
26786 "Jinxed is an implementation of a subset of the Python curses library.")
26787 (license license:mpl2.0)))
26789 (define-public python-svgutils
26791 (name "python-svgutils")
26796 (uri (pypi-uri "svgutils" version))
26799 "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y"))))
26800 (build-system python-build-system)
26802 (list python-lxml))
26803 (home-page "https://svgutils.readthedocs.io")
26804 (synopsis "Python SVG editor")
26805 (description "This is an utility package that helps with editing and
26806 concatenating SVG files. It is especially directed at scientists preparing
26807 final figures for submission to journals. So far it supports arbitrary
26808 placement and scaling of SVG figures and adding markers, such as labels.")
26809 (license license:expat)))
26811 (define-public python-blessed
26813 (name "python-blessed")
26818 (uri (pypi-uri "blessed" version))
26821 "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
26822 (modules '((guix build utils)))
26825 ;; Don't get hung up on Windows test failures.
26826 (delete-file "blessed/win_terminal.py") #t))))
26827 (build-system python-build-system)
26829 (list python-jinxed python-six python-wcwidth))
26831 (list python-mock python-pytest))
26832 (home-page "https://github.com/jquast/blessed")
26833 (synopsis "Wrapper around terminal capabilities")
26835 "Blessed is a thin, practical wrapper around terminal styling, screen
26836 positioning, and keyboard input.")
26837 (license license:expat)))
26839 (define-public python-readme-renderer
26841 (name "python-readme-renderer")
26846 (uri (pypi-uri "readme_renderer" version))
26849 "1c75h9znffc2lh4j56yg23l5ifj5l8fbdq3kfigi8vbh45zx3d6z"))))
26850 (build-system python-build-system)
26852 '(#:phases (modify-phases %standard-phases
26853 (add-after 'unpack 'loosen-cmarkgfm-dependency
26855 ;; Permit newer versions of cmarkgfm.
26856 (substitute* "setup.py"
26857 (("cmarkgfm>=0\\.5\\.0,<0\\.7\\.0")
26858 "cmarkgfm>=0.5.0"))))
26860 (lambda* (#:key tests? #:allow-other-keys)
26862 ;; The GFM tests fail due to slight differences in the
26863 ;; generated vs expected HTML due to using a more
26864 ;; recent bleach version (see:
26865 ;; https://github.com/pypa/readme_renderer/issues/234).
26866 (invoke "pytest" "-vv" "-k" "not GFM")))))))
26868 (list python-bleach python-docutils python-pygments
26870 ;; Optional dependencies.
26871 python-cmarkgfm)) ;required by postorius
26873 (list python-mock python-pytest))
26874 (home-page "https://github.com/pypa/readme_renderer")
26875 (synopsis "Render README files in Warehouse")
26877 "Readme Renderer is a library that will safely render arbitrary README
26878 files into HTML. It is designed to be used in Warehouse to render the
26879 @code{long_description} for packages. It can handle Markdown, reStructuredText,
26881 (license license:asl2.0)))
26883 (define-public python-lazr-delegates
26885 (name "python-lazr-delegates")
26890 (uri (pypi-uri "lazr.delegates" version))
26893 "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
26894 (build-system python-build-system)
26897 (modify-phases %standard-phases
26899 (lambda* (#:key tests? #:allow-other-keys)
26900 (when tests? (invoke "nosetests")))))))
26902 (list python-nose))
26904 (list python-zope-interface))
26905 (home-page "https://launchpad.net/lazr.delegates")
26906 (synopsis "Easily write objects that delegate behavior")
26908 "The @code{lazr.delegates} package makes it easy to write objects that
26909 delegate behavior to another object. The new object adds some property or
26910 behavior on to the other object, while still providing the underlying interface,
26911 and delegating behavior.")
26912 (license license:lgpl3)))
26914 (define-public python-lazr-config
26916 (name "python-lazr-config")
26921 (uri (pypi-uri "lazr.config" version))
26924 "1qdbrzl61q7cjhbnxvw9y3frcr935y7diwy15xrwcv9ynvw76jmp"))))
26925 (build-system python-build-system)
26928 (modify-phases %standard-phases
26931 (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
26933 (list python-nose))
26935 (list python-lazr-delegates python-zope-interface))
26936 (home-page "https://launchpad.net/lazr.config")
26937 (synopsis "Create configuration schemas and process and validate configurations")
26939 "The LAZR config system is typically used to manage process configuration.
26940 Process configuration is for saying how things change when we run systems on
26941 different machines, or under different circumstances. This system uses ini-like
26942 file format of section, keys, and values. The config file supports inheritance
26943 to minimize duplication of information across files. The format supports schema
26945 (license license:lgpl3)))
26947 (define-public python-flufl-bounce
26949 (name "python-flufl-bounce")
26954 (uri (pypi-uri "flufl.bounce" version))
26957 "0c9qc2l47lyqnpwskp6vvi7m3jqh6hx42v6d35dgxh3fjzmlll15"))))
26958 (build-system python-build-system)
26961 #~(modify-phases %standard-phases
26963 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
26965 (with-directory-excursion
26966 (string-append (site-packages inputs outputs) "/flufl")
26967 (invoke "python" "-m" "nose2" "-v"))))))))
26969 (list python-atpublic python-zope-interface))
26971 (list python-flufl-testing python-nose2))
26972 (home-page "https://fluflbounce.readthedocs.io/en/latest/")
26973 (synopsis "Email bounce detectors")
26974 (description "The @code{flufl.bounce} library provides a set of heuristics
26975 and an API for detecting the original bouncing email addresses from a bounce
26976 message. Many formats found in the wild are supported, as are VERP and
26978 (license (list license:asl2.0
26979 license:lgpl3)))) ; only for setup_headers.py
26981 (define-public python-flufl-i18n
26983 (name "python-flufl-i18n")
26988 (uri (pypi-uri "flufl.i18n" version))
26991 "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
26992 (build-system python-build-system)
26994 (list python-atpublic))
26995 (home-page "https://flufli18n.readthedocs.io")
26996 (synopsis "API for Python internationalization")
26998 "This package provides a high-level, convenient API for managing
26999 internationalization/translation contexts in Python applications. There is a
27000 simple API for single-context applications, such as command line scripts which
27001 only need to translate into one language during the entire course of their
27002 execution. There is a more flexible, but still convenient API for multi-context
27003 applications, such as servers, which may need to switch language contexts for
27005 (license license:asl2.0)))
27007 (define-public python-flufl-lock
27009 (name "python-flufl-lock")
27014 (uri (pypi-uri "flufl.lock" version))
27017 "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
27018 (build-system python-build-system)
27020 (list python-atpublic python-psutil))
27021 (home-page "https://flufllock.readthedocs.io")
27022 (synopsis "NFS-safe file locking with timeouts for POSIX systems")
27024 "The @dfn{flufl.lock} package provides NFS-safe file locking with
27025 timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the
27026 @code{open} system call but uses a lockfile. Lock objects support lock-breaking
27027 and have a maximum lifetime built-in.")
27028 (license (list license:asl2.0
27029 license:lgpl3)))) ; only for setup_helpers.py
27031 (define-public python-flufl-testing
27033 (name "python-flufl-testing")
27038 (uri (pypi-uri "flufl.testing" version))
27041 "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
27042 (build-system python-build-system)
27043 (arguments '(#:tests? #f)) ;no tests
27044 (home-page "https://gitlab.com/warsaw/flufl.testing")
27045 (synopsis "Collection of test tool plugins")
27047 "This package contains a small collection of test tool plugins for
27048 @code{nose2} and @code{flake8}.")
27049 (license license:asl2.0)))
27051 (define-public python-devtools
27053 (name "python-devtools")
27058 (uri (git-reference
27059 (url "https://github.com/samuelcolvin/python-devtools")
27060 (commit (string-append "v" version))))
27061 (file-name (git-file-name name version))
27063 (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp"))))
27064 (build-system python-build-system)
27066 (list python-pytest python-pytest-mock))
27068 (list python-pygments))
27070 `(#:phases (modify-phases %standard-phases
27075 (home-page "https://github.com/samuelcolvin/python-devtools")
27076 (synopsis "Debug command and development tools")
27078 "This package provides a debug print command and other development tools.
27079 It adds a simple and readable way to print stuff during development.")
27080 (license license:expat)))
27082 (define-public python-dateparser
27084 (name "python-dateparser")
27089 (uri (pypi-uri "dateparser" version))
27092 "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
27093 (build-system python-build-system)
27095 (list python-dateutil python-pytz python-regex python-ruamel.yaml
27098 (list python-mock python-parameterized tzdata-for-tests))
27100 `(;; TODO: Of 23320 tests, 6 fail and 53 error.
27103 (modify-phases %standard-phases
27104 (add-before 'check 'set-check-environment
27105 (lambda* (#:key inputs #:allow-other-keys)
27106 (setenv "TZ" "UTC")
27108 (search-input-directory inputs
27109 "share/zoneinfo")))))))
27110 (home-page "https://github.com/scrapinghub/dateparser")
27112 "Date parsing library designed to parse dates from HTML pages")
27114 "@code{python-dateparser} provides modules to easily parse localized
27115 dates in almost any string formats commonly found on web pages.")
27116 (license license:bsd-3)))
27118 (define-public python-dparse
27120 (name "python-dparse")
27125 (uri (pypi-uri "dparse" version))
27128 "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1"))))
27129 (build-system python-build-system)
27131 (list python-pytest))
27133 (list python-packaging python-pyyaml python-toml))
27134 (home-page "https://github.com/pyupio/dparse")
27135 (synopsis "Parser for Python dependency files")
27136 (description "This package provides a parser for Python dependency files.")
27137 (license license:expat)))
27139 (define-public python-dpath
27141 (name "python-dpath")
27146 (uri (pypi-uri "dpath" version))
27149 "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y"))))
27150 (build-system python-build-system)
27152 (list python-hypothesis python-mock python-nose))
27155 (modify-phases %standard-phases
27157 (lambda* (#:key inputs outputs #:allow-other-keys)
27158 (add-installed-pythonpath inputs outputs)
27159 ;; This invokation is taken from tox.ini.
27160 (invoke "nosetests" "-d" "-v" "tests/"))))))
27161 (home-page "https://github.com/akesterson/dpath-python")
27162 (synopsis "File-system-like pathing and searching for dictionaries")
27164 "@code{python-dpath} is a library for accessing and searching
27165 dictionaries via /slashed/paths ala xpath.
27167 Basically it lets you glob over a dictionary as if it were a file system. It
27168 allows you to specify globs (ala the bash eglob syntax, through some advanced
27169 fnmatch.fnmatch magic) to access dictionary elements, and provides some
27170 facility for filtering those results.")
27171 (license license:expat)))
27173 (define-public python-safety
27175 (name "python-safety")
27180 (uri (pypi-uri "safety" version))
27183 "1j801xsxfzavjbzhhc934awvnk1b7jc0qsw3jp3ys0241mlj1gr3"))))
27184 (build-system python-build-system)
27187 (modify-phases %standard-phases
27188 (add-after 'unpack 'disable-tests
27190 (substitute* "tests/test_safety.py"
27191 ;; requires network
27192 (("def test_check_live") "def _test_check_live"))
27195 (list python-click python-dparse python-packaging python-requests))
27196 (home-page "https://github.com/pyupio/safety")
27197 (synopsis "Check installed dependencies for known vulnerabilities")
27198 (description "Safety checks installed dependencies for known vulnerabilities.
27199 By default it uses the open Python vulnerability database Safety DB.")
27200 (license license:expat)))
27202 (define-public python-pypandoc
27204 (name "python-pypandoc")
27209 (uri (pypi-uri "pypandoc" version))
27212 "149basv4pvzg9zm74cjz68x8s2n5fykyj7prgysb0qfmja73r83f"))))
27213 (build-system python-build-system)
27217 `(("wheel" ,python-wheel)))
27219 `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
27221 texlive-generic-iftex
27225 texlive-xcolor)))))
27228 (modify-phases %standard-phases
27229 (add-before 'check 'disable-tests
27231 ;; Disable test requiring network access
27232 (substitute* "tests.py"
27233 (("test_basic_conversion_from_http_url")
27234 "skip_test_basic_conversion_from_http_url"))
27236 (home-page "https://github.com/bebraw/pypandoc")
27237 (synopsis "Python wrapper for pandoc")
27238 (description "pypandoc is a thin Python wrapper around pandoc
27239 and pandoc-citeproc.")
27240 (license license:expat)))
27242 (define-public python-rnc2rng
27244 (name "python-rnc2rng")
27249 (uri (pypi-uri "rnc2rng" version))
27252 "1kmp3iwxxyzjsd47j2sprd47ihhkwhb3yydih3af5bbfq0ibh1w8"))))
27253 (build-system python-build-system)
27255 (list python-rply))
27257 `(#:phases (modify-phases %standard-phases
27260 (invoke "python" "test.py"))))))
27261 (home-page "https://github.com/djc/rnc2rng")
27262 (synopsis "Convert RELAX NG Compact to regular syntax")
27264 "This package provides the @command{rnc2rng} command-line tool as well as
27265 a Python library to convert RELAX NG schemata in Compact syntax (rnc) to
27266 equivalent schemata in the XML-based default RELAX NG syntax.")
27267 (license license:expat)))
27269 (define-public python-telethon
27271 (name "python-telethon")
27276 (uri (git-reference
27277 (url "https://github.com/LonamiWebs/Telethon")
27278 (commit (string-append "v" version))))
27279 (file-name (git-file-name name version))
27281 (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl"))))
27282 (build-system python-build-system)
27285 (modify-phases %standard-phases
27287 (lambda* (#:key tests? #:allow-other-keys)
27289 (invoke "py.test" "-v"))
27292 (list python-rsa python-pyaes))
27294 (list python-pytest python-pytest-asyncio python-pytest-trio))
27295 (home-page "https://docs.telethon.dev")
27296 (synopsis "Full-featured Telegram client library for Python 3")
27297 (description "This library is designed to make it easy to write Python
27298 programs that can interact with Telegram.")
27299 (license license:expat)))
27301 (define-public python-citeproc-py
27303 (name "python-citeproc-py")
27308 (uri (pypi-uri "citeproc-py" version))
27311 "00aaff50jy4j0nakdzq9258z1gzrac9baarli2ymgspj88jg5968"))))
27312 (build-system python-build-system)
27314 (list python-lxml python-rnc2rng))
27316 "https://github.com/brechtm/citeproc-py")
27317 (synopsis "Citations and bibliography formatter")
27319 "Citeproc-py is a CSL processor for Python. It aims to implement the
27320 CSL 1.0.1 specification. citeproc-py can output styled citations and
27321 bibliographies in a number of different output formats. Currently supported
27322 are plain text, reStructuredText and HTML.")
27323 (license license:bsd-2)))
27325 (define-public python-inform
27327 (name "python-inform")
27332 (uri (pypi-uri "inform" version))
27335 "0dvc5klbnbryrvspp45nmlg02g40j7xspcz7lqsm0c0dj0z29zdz"))))
27336 (build-system python-build-system)
27338 `(#:tests? #f)) ; PyPI tarball lacks tests
27340 (list python-hypothesis python-pytest-cov python-pytest-runner))
27342 (list python-arrow python-six))
27343 (home-page "https://inform.readthedocs.io")
27344 (synopsis "Print & logging utilities for communicating with user")
27346 "Inform is designed to display messages from programs that are typically run from
27347 a console. It provides a collection of ‘print’ functions that allow you to simply and
27348 cleanly print different types of messages.")
27349 (license license:gpl3+)))
27351 (define-public python-nestedtext
27353 (name "python-nestedtext")
27358 (uri (pypi-uri "nestedtext" version))
27361 "0xjx863n7yd1xmkwhy48lhmqrmlzgbx3civhk386hvrzyq4sx148"))))
27362 (build-system python-build-system)
27364 `(#:tests? #f)) ; PyPI tarball lacks tests
27366 (list python-inform))
27367 (home-page "https://nestedtext.org")
27368 (synopsis "Human readable and writable data interchange format")
27370 "NestedText is a file format for holding data that is to be entered, edited, or
27371 viewed by people. It allows data to be organized into a nested collection of
27372 dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but
27373 without the complexity and risk of YAML and without the syntactic clutter of JSON.
27374 NestedText is both simple and natural. Only a small number of concepts and rules must
27375 be kept in mind when creating it. It is easily created, modified, or viewed with
27376 a text editor and easily understood and used by both programmers and non-programmers.")
27377 (license license:expat))) ; MIT license
27379 (define-public python-nest-asyncio
27381 (name "python-nest-asyncio")
27386 (uri (pypi-uri "nest_asyncio" version))
27389 "0rbdw7lry66yj13hh4w63yzflnapdal1ffl237k8nsa2v4f2jhp4"))))
27390 (build-system python-build-system)
27391 (home-page "https://github.com/erdewit/nest_asyncio")
27392 (synopsis "Patch asyncio to allow nested event loops")
27394 "By design @code{asyncio} does not allow its event loop to be nested.
27395 This presents a practical problem: when in an environment where the event loop
27396 is already running it's impossible to run tasks and wait for the result. This
27397 module patches @code{asyncio} to allow nested use of @code{asyncio.run} and
27398 @code{loop.run_until_complete}.")
27399 (license license:bsd-3)))
27401 (define-public python-simpervisor
27403 (name "python-simpervisor")
27407 ;; Tests not included in release.
27409 (uri (git-reference
27410 (url "https://github.com/yuvipanda/simpervisor")
27411 (commit (string-append "v" version))))
27412 (file-name (git-file-name name version))
27414 (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv"))))
27415 (build-system python-build-system)
27417 `(#:tests? #f ; Test suite can't find aiohttp.
27419 (modify-phases %standard-phases
27421 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
27423 (add-installed-pythonpath inputs outputs)
27424 (invoke "pytest" "--maxfail" "3" "--verbose"))
27427 (list python-aiohttp python-pytest python-pytest-asyncio))
27428 (home-page "https://github.com/yuvipanda/simpervisor")
27429 (synopsis "Simple async process supervisor")
27431 "This package provides a simple async process supervisor in Python.")
27432 (license license:bsd-3)))
27434 (define-public python-parallel
27436 (name "python-parallel")
27437 (version "1.6.4.4")
27441 (uri (string-append
27442 "https://www.parallelpython.com/downloads/pp/pp-"
27446 "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7"))))
27449 (build-system python-build-system)
27450 (arguments '(#:tests? #f)) ; No test suite.
27451 (home-page "https://www.parallelpython.com")
27452 (synopsis "Parallel and distributed programming for Python")
27453 (description "Parallel Python module (PP) provides an easy and efficient
27454 way to create parallel-enabled applications for SMP computers and clusters.
27455 PP module features cross-platform portability and dynamic load balancing.
27456 Thus applications written with PP will parallelize efficiently even on
27457 heterogeneous and multi-platform clusters (including clusters running other
27458 applications with variable CPU loads).")
27459 (license license:bsd-3)))
27461 (define-public python-djvulibre
27463 (name "python-djvulibre")
27468 (uri (pypi-uri "python-djvulibre" version))
27470 (base32 "089smpq29ll0z37lnq26r2f72d31i33xm9fw9pc6hlcsm6nbjbiv"))))
27471 (build-system python-build-system)
27473 (list ghostscript pkg-config python-nose))
27475 (list djvulibre python-cython))
27478 (modify-phases %standard-phases
27479 (add-after 'unpack 'fix-tests
27481 ;; Unit tests try to load the 'dllpath.py' and fail, because it
27482 ;; doesn't make sense on GNU/Linux.
27483 (delete-file "djvu/dllpath.py")
27485 (synopsis "Python bindings for DjVuLibre")
27486 (description "This is a set of Python bindings for the DjVuLibre library.")
27487 (home-page "https://jwilk.net/software/python-djvulibre")
27488 (license license:gpl2)))
27490 (define-public python-version
27491 ;; No version tags available in the git repo; just using bare commit instead.
27492 (let ((commit "5232eea250ab72cc5cb72b0b75efb35d2192b906")
27495 (name "python-version")
27496 (version (git-version "0.0.2" revision commit))
27499 (uri (git-reference
27500 (url "https://gitlab.com/halfak/python_version")
27502 (file-name (git-file-name name version))
27505 "0w210559ypdynlj9yn40m9awzkaknwrf682i99hswl7h66sdgh0h"))))
27506 (build-system python-build-system)
27507 (home-page "https://gitlab.com/halfak/python_version")
27508 (synopsis "Python version checking utility")
27510 "This package provides a simple utility for checking the python version.")
27511 (license license:expat))))
27513 (define-public python-versioneer
27515 (name "python-versioneer")
27520 (uri (pypi-uri "versioneer" version))
27523 "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4"))
27524 (patches (search-patches "python-versioneer-guix-support.patch"))))
27525 (build-system python-build-system)
27527 "https://github.com/python-versioneer/python-versioneer")
27529 "Version-string management for VCS-controlled trees")
27531 "@code{versioneer} is a tool for managing a recorded version number in
27532 distutils-based python projects. The goal is to remove the tedious and
27533 error-prone \"update the embedded version string\" step from your release
27535 (license license:public-domain)))
27537 (define-public python-gamera
27539 (name "python-gamera")
27544 (uri (string-append "https://gamera.informatik.hsnr.de/download/"
27545 "gamera-" version ".tar.gz"))
27547 (base32 "0fhlwbvpm3k54n4aa1y6qd348jqrb54ak9p0ic16drx7f07dsq05"))
27548 (modules '((guix build utils)))
27551 ;; Remove bundled libraries.
27552 (for-each delete-file-recursively
27553 '("src/libpng-1.2.5"
27555 "src/zlib-1.2.8"))))))
27556 (build-system python-build-system)
27559 (modify-phases %standard-phases
27560 (add-after 'unpack 'disable-wx-support
27562 (substitute* "setup.py"
27566 (lambda* (#:key tests? #:allow-other-keys)
27568 ;; Some tests require a writable HOME directory and test
27570 (setenv "HOME" "/tmp")
27571 (mkdir "tests/tmp") ;the code assumes this directory exists
27572 ;; (for-each make-file-writable (find-files "tests"))
27573 (with-directory-excursion "tests"
27574 (invoke "pytest" "-vv"
27575 ;; This test causes gamera/gendoc.py to be loaded,
27576 ;; which fails due to the missing docutils, pygments
27577 ;; and silvercity (very old, unpackaged) libraries.
27578 "--ignore" "test_plugins.py"
27579 ;; This test triggers a segfault (see:
27580 ;; https://github.com/hsnr-gamera/gamera-4/issues/47).
27581 "--ignore" "test_rle.py"))))))))
27582 (native-inputs (list python-pytest))
27583 (inputs (list libpng libtiff zlib))
27584 (synopsis "Framework for building document analysis applications")
27586 "Gamera is a toolkit for building document image recognition systems.")
27587 (home-page "https://gamera.informatik.hsnr.de/")
27588 (license license:gpl2+)))
27590 (define-public python-contextvars
27592 (name "python-contextvars")
27597 (uri (pypi-uri "contextvars" version))
27600 "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k"))))
27601 (build-system python-build-system)
27603 (list python-immutables))
27605 "https://github.com/MagicStack/contextvars")
27606 (synopsis "PEP 567 Backport")
27607 (description "This package implements a backport of Python 3.7
27608 @code{contextvars} module (see PEP 567) for Python 3.6.")
27609 (license license:asl2.0)))
27611 (define-public python-aiofiles
27613 (name "python-aiofiles")
27618 (uri (pypi-uri "aiofiles" version))
27621 "14m01kjxm2j7zyljjj6xlhlgygcsriymbx730gc5jp9xglaina70"))))
27622 (build-system python-build-system)
27623 (home-page "https://github.com/Tinche/aiofiles")
27624 (synopsis "File support for @code{asyncio}")
27625 (description "@code{python-aiofiles} is a library for handling local
27626 disk files in asyncio applications.")
27627 (license license:asl2.0)))
27629 (define-public python-pyre-extensions
27631 (name "python-pyre-extensions")
27636 (uri (pypi-uri "pyre-extensions" version))
27639 "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30"))))
27640 (build-system python-build-system)
27642 (list python-typing-extensions python-typing-inspect))
27643 (home-page "https://pyre-check.org")
27645 "Type system extensions for use with @code{python-pyre}")
27647 "@code{python-pyre-extensions} defines extensions to the standard
27648 @code{typing} module that are supported by the Pyre typechecker.")
27649 (license license:expat)))
27651 (define-public python-dataclasses
27653 (name "python-dataclasses")
27658 (uri (pypi-uri "dataclasses" version))
27661 "15sc12nrc7gxwb30vfa6frzdnpmbap9ibi1fr1yrbkra6izhcyc4"))))
27662 (build-system python-build-system)
27664 "https://github.com/ericvsmith/dataclasses")
27666 "Backport of the @code{dataclasses} module for Python 3.6")
27668 "This is an implementation of PEP 557, Data Classes. It is a
27669 backport of the @code{dataclasses} module for Python 3.6.")
27670 (license license:asl2.0)))
27672 (define-public python-pywatchman
27674 (name "python-pywatchman")
27679 (uri (pypi-uri "pywatchman" version))
27682 "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h"))))
27683 (build-system python-build-system)
27685 `(#:tests? #f)) ;there are none
27687 "https://facebook.github.io/watchman/")
27688 (synopsis "Watchman client for python")
27689 (description "@code{python-pywatchman} is a library to connect and
27690 query Watchman to discover file changes.")
27691 (license license:bsd-3)))
27693 (define-public python-roundrobin
27695 (name "python-roundrobin")
27699 (uri (pypi-uri "roundrobin" version))
27701 (base32 "1akwhvfyi0120zg2xkhfc6jwfkirz5x90yyvw06bndhaaxwcnc5c"))))
27702 (build-system python-build-system)
27703 (arguments '(#:tests? #f)) ;no tests on PyPI and no tags in repo
27704 (home-page "https://github.com/linnik/roundrobin")
27705 (synopsis "Collection of roundrobin utilities")
27707 "This package provides a collection of utilities for round-robin
27708 distribution in Python.")
27709 (license license:expat)))
27711 (define-public python-helpdev
27713 (name "python-helpdev")
27718 (uri (pypi-uri "helpdev" version))
27721 "0gfvj28i82va7c264jl2p4cdsl3lpf9fpb9cyjnis55crfdafqmv"))))
27722 (build-system python-build-system)
27725 (modify-phases %standard-phases
27727 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
27729 (add-installed-pythonpath inputs outputs)
27730 (invoke "pytest" "tests"))
27733 (list python-importlib-metadata))
27735 (list python-pytest))
27736 (home-page "https://gitlab.com/dpizetta/helpdev")
27738 "Extract information about the Python environment easily")
27740 "Helpdev is a library to easily extract information about the Python
27742 (license license:expat)))
27744 (define-public python-logutils
27746 (name "python-logutils")
27751 (uri (pypi-uri "logutils" version))
27754 "10lsi5wv5ysnvf9ya4ncbix6mmipnv5067sf2cglc2f2sljql1dw"))))
27755 (build-system python-build-system)
27756 (home-page "https://bitbucket.org/vinay.sajip/logutils/")
27757 (synopsis "Logging utilities")
27758 (description "This package provides a set of handlers for the Python
27759 standard library logging package. Some of these handlers are out-of-scope
27760 for the standard library, and so they are packaged here. Others are updated
27761 versions which have appeared in recent Python releases, but are usable with
27762 older versions of Python and so are packaged here.")
27763 (license license:bsd-3)))
27765 (define-public python-helper
27767 (name "python-helper")
27771 (uri (pypi-uri "helper" version))
27774 "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa"))))
27775 (build-system python-build-system)
27777 (list python-mock))
27779 (list python-logutils python-pyyaml))
27780 (home-page "https://github.com/gmr/helper")
27781 (synopsis "Library for writing configurable applications and daemons")
27783 "This package provides procedures for quickly writing configurable
27784 applications and daemons.")
27785 (license license:bsd-3)))
27787 (define-public python-qtsass
27789 (name "python-qtsass")
27793 ;; There are no tests in the PyPI tarball.
27795 (uri (git-reference
27796 (url "https://github.com/spyder-ide/qtsass/")
27797 (commit (string-append "v" version))))
27798 (file-name (git-file-name name version))
27800 (base32 "09s04aa14d8jqbh71clrb5y7vcmkxlp94mwmvzrkxahry3bk03cb"))))
27801 (build-system python-build-system)
27803 `(#:test-target "pytest"
27805 (modify-phases %standard-phases
27806 ;; Tests need to read and write files.
27807 (add-before 'check 'make-git-checkout-writable
27809 (for-each make-file-writable (find-files "."))
27812 (list python-pytest python-pytest-cov python-pytest-runner))
27814 (list python-libsass))
27815 (home-page "https://github.com/spyder-ide/qtsass")
27816 (synopsis "Compile SCSS files to valid Qt stylesheets")
27818 "Besides being used in web development, CSS is also the way to stylize
27819 Qt-based desktop applications. However, Qt's CSS has a few variations that
27820 prevent the direct use of SASS compiler.
27822 The purpose of this tool is to fill the gap between SASS and Qt-CSS by
27823 handling those variations.")
27824 (license license:expat)))
27826 (define-public python-qdarkstyle
27828 (name "python-qdarkstyle")
27833 (uri (pypi-uri "QDarkStyle" version))
27836 "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym"))))
27837 (build-system python-build-system)
27839 `(;; Fails unable to detect valid Qt bindings even when
27840 ;; added as native-inputs.
27843 (list python-helpdev python-qtpy))
27845 "https://github.com/ColinDuquesnoy/QDarkStyleSheet")
27847 "Complete dark stylesheet for Python and Qt applications")
27848 (description "QDarkStyle is the most complete dark stylesheet for Python and
27850 (license license:expat)))
27852 (define-public python-bitstring
27854 (name "python-bitstring")
27859 (uri (pypi-uri "bitstring" version))
27862 "0jl6192dwrlm5ybkbh7ywmyaymrc3cmz9y07nm7qdli9n9rfpwzx"))))
27863 (build-system python-build-system)
27866 (modify-phases %standard-phases
27868 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
27870 (add-installed-pythonpath inputs outputs)
27871 (with-directory-excursion "test"
27872 (invoke "pytest")))
27875 (list python-pytest))
27876 (home-page "https://github.com/scott-griffiths/bitstring")
27878 "Simple construction, analysis and modification of binary data")
27880 "Bitstring is a library for simple construction, analysis and modification
27882 (license license:expat)))
27884 (define-public python-confuse
27886 (name "python-confuse")
27891 (uri (pypi-uri "confuse" version))
27894 "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj"))))
27895 (build-system python-build-system)
27897 (list python-pyyaml))
27898 (home-page "https://github.com/beetbox/confuse")
27899 (synopsis "Painless YAML configuration")
27900 (description "Confuse is a configuration library for Python that uses
27901 YAML. It takes care of defaults, overrides, type checking, command-line
27902 integration, human-readable errors, and standard OS-specific locations.")
27903 (license license:expat)))
27905 (define-public python-reflink
27907 (name "python-reflink")
27912 (uri (pypi-uri "reflink" version))
27915 "0fkf3sd958g9hvr3jwlhnhqqzrwxljrc3grsf3yknh94vf13a9f9"))))
27916 (build-system python-build-system)
27918 `(#:tests? #false)) ; almost all tests want to run mkfs.btrfs
27920 (list python-cffi))
27922 (list python-pytest python-pytest-runner))
27923 (home-page "https://gitlab.com/rubdos/pyreflink")
27924 (synopsis "Python wrapper around reflink system call")
27926 "Python reflink wraps around platform specific @code{reflink}
27928 (license license:expat)))
27930 (define-public python-retry
27932 (name "python-retry")
27936 (uri (pypi-uri "retry" version))
27938 (base32 "197v6qrh6858bhzzrjgk2zdqrybppymb1lsvdxnm1i39kfwsigzq"))))
27939 (build-system python-build-system)
27942 #~(modify-phases %standard-phases
27944 (lambda* (#:key tests? #:allow-other-keys)
27945 (when tests? (invoke "pytest" "-vv")))))))
27946 (native-inputs (list python-pbr python-pytest))
27947 (propagated-inputs (list python-decorator python-py))
27948 (home-page "https://github.com/invl/retry")
27949 (synopsis "Retry decorator")
27951 "@code{retry} is an easy to use retry decorator for Python. It can be
27952 used to retry a function a given number of times.")
27953 (license license:asl2.0)))
27955 (define-public python-pivy
27957 (name "python-pivy")
27962 (uri (git-reference
27963 (url "https://github.com/coin3d/pivy")
27965 (file-name (git-file-name name version))
27967 (base32 "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx"))))
27968 (build-system python-build-system)
27970 `(;; The test suite fails due to an import cycle between 'pivy' and '_coin'
27973 (modify-phases %standard-phases
27974 (add-after 'unpack 'patch-cmake-include-dirs
27976 ;; Patch buildsystem to respect Coin3D include directory
27977 (substitute* "CMakeLists.txt"
27978 (("\\$\\{SoQt_INCLUDE_DIRS}")
27979 "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}"))
27984 (list python-wrapper
27991 (home-page "https://github.com/coin3d/pivy")
27992 (synopsis "Python bindings to Coin3D")
27994 "Pivy provides python bindings for Coin, a 3D graphics library with an
27995 Application Programming Interface based on the Open Inventor 2.1 API.")
27996 (license license:isc)))
27998 (define-public python-crayons
28000 (name "python-crayons")
28005 (uri (pypi-uri "crayons" version))
28008 "0gw106k4b6y8mw7pp52awxyplj2bwvwk315k4sywzwh0g1abfcxx"))))
28009 (build-system python-build-system)
28011 (list python-colorama))
28012 (home-page "https://github.com/MasterOdin/crayons")
28013 (synopsis "TextUI colors for Python")
28014 (description "This package gives you colored strings for the terminal.
28015 Crayons automatically wraps a given string in the foreground color and
28016 restores the original state after the string is printed.")
28017 (license license:expat)))
28019 (define-public python-sane
28021 (name "python-sane")
28026 (uri (pypi-uri name version))
28029 "1pi597z94n2mkd821ln52fq0g727n2jxfskf280ip3kf7jw8w294"))))
28030 (build-system python-build-system)
28032 (list python-pytest))
28034 (list sane-backends))
28035 (home-page "https://github.com/python-pillow/Sane")
28036 (synopsis "Python interface to the SANE scanner")
28037 (description "This package provides Python interface to the SANE scanner
28038 and frame grabber interface.")
28039 (license (license:non-copyleft
28040 ;; Yet another variant of the X/MIT license.
28041 "https://github.com/python-pillow/Sane/blob/master/COPYING"))))
28043 (define-public python-scikit-build
28045 (name "python-scikit-build")
28050 (uri (pypi-uri "scikit-build" version))
28052 (base32 "1wx1m9vnxnnz59lyaisgyxldp313kciyd4af8lf112vb8vbjy9yk"))))
28053 (build-system pyproject-build-system)
28057 #~(modify-phases %standard-phases
28058 (add-after 'unpack 'patch-cmake-executable
28059 (lambda* (#:key inputs #:allow-other-keys)
28060 (substitute* "skbuild/constants.py"
28061 (("^(CMAKE_DEFAULT_EXECUTABLE = ).*" _ head)
28062 (format #f "~a ~s~%" head
28063 (search-input-file inputs "bin/cmake"))))))
28065 (lambda* (#:key tests? #:allow-other-keys)
28067 ;; These tests attempt to pull dependencies from the Internet.
28068 (delete-file "tests/test_distribution.py")
28069 (delete-file "tests/test_pep518.py")
28070 (invoke "pytest" "-vv"
28071 "-n" (number->string (parallel-job-count))
28072 "-k" (string-append
28073 ;; These tests attempt to write to read-only
28074 ;; Python install directory.
28075 "not test_install_command "
28076 "and not test_test_command "
28077 "and not test_hello_develop "
28078 ;; These sdist-related tests fail for unknown
28080 ;; https://github.com/scikit-build/scikit-build/issues/689).
28081 "and not test_hello_sdist_with_base "
28082 "and not test_manifest_in_sdist "
28083 "and not test_hello_sdist "
28084 "and not test_sdist_with_symlinks "
28085 ;; These are not parallel safe and fail
28086 ;; nondeterministically (see:
28087 ;; https://github.com/scikit-build/scikit-build/issues/711).
28088 "and not test_generator_cleanup "
28089 "and not test_generator_selection "))))))))
28091 (list cmake-minimal
28103 python-pytest-virtualenv
28104 python-pytest-xdist
28106 python-setuptools-scm))
28108 (list python-distro python-packaging python-wheel))
28109 (home-page "https://github.com/scikit-build/scikit-build")
28110 (synopsis "Build system generator for Python C/C++/Fortran/Cython extensions")
28111 (description "Scikit-build is an improved build system generator for
28112 CPython C/C++/Fortran/Cython extensions. It has support for additional
28113 compilers, build systems, cross compilation, and locating dependencies and
28114 determining their build requirements. The scikit-build package is
28115 fundamentally just glue between the @code{setuptools} Python module and
28117 (license license:expat)))
28119 (define-public python-screenkey
28121 (name "python-screenkey")
28126 (uri (git-reference
28127 (url "https://gitlab.com/screenkey/screenkey")
28128 (commit (string-append "v" version))))
28129 (file-name (git-file-name name version))
28132 "1rfngmkh01g5192pi04r1fm7vsz6hg9k3qd313sn9rl9xkjgp11l"))))
28133 (build-system python-build-system)
28136 (modify-phases %standard-phases
28137 (add-after 'unpack 'fix-dlopen-paths
28138 (lambda* (#:key inputs outputs #:allow-other-keys)
28139 (let* ((x11 (assoc-ref inputs "libx11"))
28140 (xtst (assoc-ref inputs "libxtst")))
28141 (substitute* "Screenkey/xlib.py"
28143 (string-append x11 "/lib/libX11.so.6")))
28144 (substitute* "Screenkey/xlib.py"
28146 (string-append xtst "/lib/libXtst.so.6")))
28148 (add-after 'install 'wrap-screenkey
28149 (lambda* (#:key outputs #:allow-other-keys)
28151 (string-append (assoc-ref outputs "out") "/bin/screenkey")
28152 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
28153 `("GI_TYPELIB_PATH"
28154 ":" prefix (,(getenv "GI_TYPELIB_PATH")))))))))
28156 (list python-distutils-extra
28163 python-setuptools-git
28165 (home-page "https://www.thregr.org/~wavexx/software/screenkey/")
28167 "Screencast tool to display pressed keys")
28169 "Screenkey is a screencast tool to display your keys inspired by
28171 (license license:gpl3+)))
28173 (define-public python-jinja2-cli
28175 (name "python-jinja2-cli")
28180 (uri (pypi-uri "jinja2-cli" version))
28183 "0vikx7v6fbvww6kfrv0k5a24jyv3ak7nindg60906pdd1m9qvkcw"))))
28184 (build-system python-build-system)
28186 (list python-jinja2))
28188 (list python-flake8 python-jinja2 python-pytest))
28189 (home-page "https://github.com/mattrobenolt/jinja2-cli")
28190 (synopsis "Command-line interface to Jinja2")
28192 "This package provides a command-line interface (CLI) to the Jinja2
28194 (license license:bsd-3)))
28196 (define-public python-readability
28198 (name "python-readability")
28203 (uri (pypi-uri "readability" version))
28206 "1b8gq3g2zwvx0aivvdg56cc0bn7xw6f2v6psmxdx9aiipkw0s0zr"))))
28207 (build-system python-build-system)
28209 "https://github.com/andreasvc/readability/")
28211 "Measure the readability of a given text using surface
28214 "This package provides a Python library that is an implementation of
28215 traditional readability measures based on simple surface
28216 characteristics. These measures are basically linear regressions based on the
28217 number of words, syllables, and sentences.")
28218 (license license:asl2.0)))
28220 (define-public python-readability-lxml
28222 (name "python-readability-lxml")
28226 (uri (git-reference
28227 (url "https://github.com/buriy/python-readability")
28228 (commit (string-append "v" version))))
28231 "13nfy2v0pbbf62jn9qwgi489gg97hbb22q6w3f78mnvjxd2m19rh"))
28233 #~(begin (delete-file "readability/compat/two.py")))))
28234 (build-system python-build-system)
28238 #~(modify-phases %standard-phases
28240 (lambda* (#:key tests? #:allow-other-keys)
28242 (invoke "python" "-m" "pytest" "-v" "tests/")))))))
28243 (propagated-inputs (list python-chardet python-cssselect python-lxml))
28244 (native-inputs (list python-timeout-decorator python-pytest))
28245 (home-page "http://github.com/buriy/python-readability")
28246 (synopsis "HTML to text parser")
28248 "This package provides classes and function that strip gratuitous markup
28249 from web pages to make them easier to read.")
28250 (license license:asl2.0)))
28252 (define-public python-listparser
28254 (name "python-listparser")
28259 (uri (pypi-uri "listparser" version))
28262 "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b"))))
28263 (build-system python-build-system)
28265 "https://github.com/kurtmckee/listparser")
28267 "Parse subscription lists in Python")
28269 "This package provides a Python library that can parse OPML, FOAF, and
28270 iGoogle subscription lists.")
28271 (license license:expat)))
28273 (define-public python-smartypants
28275 (name "python-smartypants")
28279 ;; There's no source tarball for 2.0.1 on PyPI.
28281 (uri (git-reference
28282 (url "https://github.com/leohemsted/smartypants.py")
28283 (commit (string-append "v" version))))
28284 (file-name (git-file-name name version))
28286 (base32 "00p1gnb9pzb3svdq3c5b9b332gsp50wrqqa39gj00m133zadanjp"))))
28287 (build-system python-build-system)
28290 (modify-phases %standard-phases
28292 ;; Its `setup.py test` doesn't report failure with exit status, so
28293 ;; we use `nose` instead.
28295 (invoke "nosetests" "-v" "--exclude=^load_tests$"))))))
28298 (list python-docutils python-nose python-pygments))
28299 (home-page "https://github.com/leohemsted/smartypants.py")
28300 (synopsis "Translate punctuation characters into smart quotes")
28302 "@command{smartpants} can perform the following transformations:
28304 @item Straight quotes ( \" and ' ) into \"curly\" quote HTML entities
28305 @item Backticks-style quotes (``like this'') into \"curly\" quote HTML
28307 @item Dashes (-- and ---) into en- and em-dash entities
28308 @item Three consecutive dots (... or . . .) into an ellipsis entity
28310 (license license:bsd-3)))
28312 (define-public python-typogrify
28314 (name "python-typogrify")
28318 (uri (pypi-uri "typogrify" version))
28321 "0f6b2gnnxjbx1fbmkcscc6qjr4hi78kwm1wx4b766ha3va66dr4b"))))
28322 (build-system python-build-system)
28325 (modify-phases %standard-phases
28328 (invoke "nosetests" "-v"))))))
28330 (list python-smartypants))
28333 (list python-nose))
28334 (home-page "https://github.com/mintchaos/typogrify")
28335 (synopsis "Filters to transform text into typographically-improved HTML")
28337 "@code{typogrify} provides a set of custom filters that automatically
28338 apply various transformations to plain text in order to yield
28339 typographically-improved HTML. While often used in conjunction with Jinja and
28340 Django template systems, the filters can be used in any environment.")
28341 (license license:bsd-3)))
28343 (define-public python-ld
28350 (uri (pypi-uri "ld" version))
28353 "1k4ydp5rgkv4985v459kcl06i1igjm1ywvh2vkbi9ck1zyyri1z5"))))
28354 (build-system python-build-system)
28357 (home-page "https://github.com/nir0s/ld")
28358 (synopsis "OS platform information API")
28360 "The ld package provides information about the GNU/Linux distribution it
28361 runs on, such as a reliable machine-readable ID, or version information.")
28362 (license license:asl2.0)))
28364 (define-public python-quicktions
28366 (name "python-quicktions")
28371 (uri (pypi-uri "quicktions" version))
28374 "1px21a6x527i1bsr2p6bbf3jziqpvd1vjkvvzh13gsy4iip0yvzn"))
28375 (modules '((guix build utils)))
28378 ;; This file is generated by Cython.
28379 (delete-file "src/quicktions.c") #t))))
28380 (build-system python-build-system)
28383 (modify-phases %standard-phases
28384 (add-before 'build 'cythonize-sources
28386 (with-directory-excursion "src"
28387 (invoke "cython" "quicktions.pyx"))))
28389 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
28391 (add-installed-pythonpath inputs outputs)
28395 (list python-cython python-pytest))
28396 (home-page "https://github.com/scoder/quicktions")
28397 (synopsis "Fast fractions data type for rational numbers")
28399 "This package provides fast fractions data type for rational numbers. It
28400 is the cythonized version of @code{fractions.Fraction}.")
28401 (license license:psfl)))
28403 (define-public python-pathvalidate
28405 (name "python-pathvalidate")
28410 (uri (pypi-uri "pathvalidate" version))
28412 (base32 "0s14ycjgb44lxr2wg8lrq3b7kybmmrbf7yqz47xrqgn2gr6dk6rw"))))
28413 (build-system python-build-system)
28416 ;; Tests disabled because of circular dependencies.
28417 ;; pathvalidate tests depend on pytest-md-report, which
28418 ;; depends on pathvalidate.
28420 (list python-allpairspy python-click python-faker python-pytest))
28421 (home-page "https://github.com/thombashi/pathvalidate")
28422 (synopsis "Sanitize strings representing paths")
28424 "@code{pathvalidate} is a Python library to sanitize/validate strings
28425 representing paths or filenames.")
28426 (license license:expat)))
28428 (define-public python-escapism
28430 (name "python-escapism")
28435 (uri (pypi-uri "escapism" version))
28438 "1v74243wifcwhj5zkdiispxc9kb1xvnfzilg8bq308pjnkgnn9bk"))))
28439 (build-system python-build-system)
28440 (home-page "https://github.com/minrk/escapism")
28441 (synopsis "Simple, generic library for escaping strings")
28443 "This Python library provides a programming interface to, given a set of
28444 safe characters and an escape character, escape safe strings and unescape the
28446 (license license:expat)))
28448 (define-public python-recommonmark
28450 (name "python-recommonmark")
28455 (uri (pypi-uri "recommonmark" version))
28458 "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x"))))
28459 (build-system python-build-system)
28461 (list python-commonmark python-docutils python-sphinx))
28463 '(#:phases (modify-phases %standard-phases
28464 (add-after 'unpack 'delete-test-sphinx
28465 (lambda* (#:key outputs #:allow-other-keys)
28466 (let* ((out (assoc-ref outputs "out")))
28467 (delete-file "tests/test_sphinx.py")))))))
28468 (home-page "https://github.com/readthedocs/recommonmark")
28469 (synopsis "Docutils-compatibility bridge to CommonMark")
28471 "This package provides a docutils-compatibility bridge to CommonMark that
28472 lets you write CommonMark inside of Docutils & Sphinx projects.")
28473 (license license:expat)))
28475 (define-public python-pyhull
28477 (name "python-pyhull")
28478 (version "2015.2.1")
28482 (uri (pypi-uri "pyhull" version))
28485 "091sph52c4yk1jlm5w8xidxpzbia9r7s42bnb23q4m4b56ihmzyj"))))
28486 (build-system python-build-system)
28488 (list python-numpy))
28489 (home-page "https://github.com/materialsvirtuallab/pyhull")
28490 (synopsis "Python wrapper to Qhull")
28492 "This package provides a Python wrapper to @uref{http://www.qhull.org/,
28493 Qhull} for the computation of the convex hull, Delaunay triangulation, and
28495 (license license:expat)))
28497 (define-public python-opcodes
28498 ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a
28499 ;; version number, which is what we use here.
28500 (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f"))
28502 (name "python-opcodes")
28503 (version "0.3.14") ;from 'opcodes/__init__.py'
28504 (home-page "https://github.com/Maratyszcza/Opcodes")
28507 (uri (git-reference (url home-page) (commit commit)))
28508 (file-name (git-file-name name version))
28511 "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys"))))
28512 (build-system python-build-system)
28513 (synopsis "Database of processor instructions and opcodes")
28515 "This project documents instruction sets in a format convenient for
28516 tools development. An instruction set is represented by three files:
28519 @item an XML file that describes instructions;
28520 @item an XSD file that describes the structure of the XML file;
28521 @item a Python module that reads the XML file and represents it as a set of
28525 It currently provides descriptions for most user-mode x86, x86_64, and k1om
28526 instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM
28528 (license license:bsd-2))))
28530 (define-public python-peachpy
28531 ;; There is no tag in this repo.
28532 (let ((commit "913d74c35a6b1d330e90bfc055208ce5b06b35a0")
28533 (version "0.2.0") ;from 'peachpy/__init__.py'
28536 (name "python-peachpy")
28537 (version (git-version version revision commit))
28538 (home-page "https://github.com/Maratyszcza/PeachPy")
28541 (uri (git-reference (url home-page) (commit commit)))
28542 (file-name (git-file-name name version))
28545 "1wnqxspxsacw4556q0b9fbw11nhrkgn6gs8g43jdnpa35f3z9kb6"))
28546 (patches (search-patches "python-peachpy-determinism.patch"))))
28547 (build-system python-build-system)
28549 '(#:phases (modify-phases %standard-phases
28551 (lambda* (#:key tests? #:allow-other-keys)
28553 (invoke "nosetests")))))))
28555 (list python-nose python-rednose python-setuptools))
28557 (list python-six python-opcodes))
28558 (synopsis "Efficient assembly code generation in Python")
28560 "PeachPy is a Python framework for writing high-performance assembly kernels.
28561 PeachPy aims to simplify writing optimized assembly kernels while preserving
28562 all optimization opportunities of traditional assembly.
28564 PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings
28565 for the Go language tool chain; it adapts to different calling conventions and
28566 application binary interfaces (ABIs); it takes care of register allocation; it
28567 supports x86_64 instructions up to AVX-512 and SHA.")
28568 (license license:bsd-2))))
28570 (define-public python-sgmllib3k
28571 (let ((commit "799964676f35349ca2dd04503e34c2b3ad522c0d")
28574 (name "python-sgmllib3k")
28576 (git-version "1.0.0" revision commit))
28580 (uri (git-reference
28581 (url "https://github.com/hsoft/sgmllib")
28583 (file-name (git-file-name name version))
28586 "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr"))))
28587 (build-system python-build-system)
28588 (home-page "https://github.com/hsoft/sgmllib")
28589 (synopsis "Python 3 port of sgmllib")
28590 (description "This package provides an unmaintained port of sgmllib to
28591 Python 3. It is used to parse text files formatted in @acronym{SGML,Standard
28592 Generalized Mark-up Language}.")
28593 (license license:bsd-3))))
28595 (define-public python-cwcwidth
28597 (name "python-cwcwidth")
28602 (uri (pypi-uri "cwcwidth" version))
28605 "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8"))))
28606 (build-system python-build-system)
28608 (list python-cython python-pytest python-setuptools-scm python-toml
28611 "https://github.com/sebastinas/cwcwidth")
28612 (synopsis "Python bindings for wc(s)width")
28613 (description "This package provides bindings for wcwidth and wcswidth
28614 functions defined in POSIX.1-2001 and POSIX.1-2008.")
28615 (license license:expat)))
28617 (define-public python-pyan3
28619 (name "python-pyan3")
28623 ;; Source tarball on PyPI lacks tests.
28625 (uri (git-reference
28626 (url "https://github.com/Technologicat/pyan")
28627 (commit (string-append "v" version))))
28628 (file-name (git-file-name name version))
28631 "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z"))
28632 (patches (search-patches "python-pyan3-fix-positional-arguments.patch"
28633 "python-pyan3-fix-absolute-path-bug.patch"))))
28634 (build-system python-build-system)
28637 (modify-phases %standard-phases
28639 (lambda* (#:key tests? #:allow-other-keys)
28641 ;; Extend PYTHONPATH so the built package will be found.
28642 (setenv "GUIX_PYTHONPATH"
28643 (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH")))
28644 (invoke "pytest")))))))
28646 (list python-pytest python-pytest-cov python-wheel))
28648 (list python-jinja2))
28649 (home-page "https://github.com/Technologicat/pyan")
28650 (synopsis "Offline call graph generator for Python 3")
28651 (description "Pyan takes one or more Python source files, performs
28652 a (rather superficial) static analysis, and constructs a directed graph of the
28653 objects in the combined source, and how they define or use each other. The
28654 graph can be output for rendering by GraphViz or yEd.")
28655 (license license:gpl2)))
28657 (define-public python-multipledispatch
28659 (name "python-multipledispatch")
28664 (uri (pypi-uri "multipledispatch" version))
28667 "1slblghfjg9fdi9zpd7gmrkvfbv20nrdgnrymcnbky8bzm8i9ax7"))))
28668 (build-system python-build-system)
28669 (propagated-inputs (list python-six))
28670 (home-page "https://github.com/mrocklin/multipledispatch/")
28671 (synopsis "Multiple dispatch for Python based on pattern matching")
28672 (description "This library provides an efficient mechanism for overloading
28673 function implementations based on the types of the arguments.")
28674 (license license:bsd-3)))
28676 (define-public python-logical-unification
28678 (name "python-logical-unification")
28683 (uri (pypi-uri "logical-unification" version))
28686 "0j57953hi7kg2rl0163vzjzsvzdyjimnklhx6idf5vaqqf1d3p1j"))))
28687 (build-system python-build-system)
28689 (list python-multipledispatch python-toolz))
28690 (home-page "https://github.com/pythological/unification/")
28691 (synopsis "Logical unification in Python for solving symbolic expressions")
28692 (description "This library provides algorithms and data types for solving
28693 symbolic expressions in pure Python using the technique of logical unification.")
28694 (license license:bsd-3)))
28696 (define-public python-cons
28698 (name "python-cons")
28703 (uri (pypi-uri "cons" version))
28706 "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm"))))
28707 (build-system python-build-system)
28709 (list python-pytest-6 python-toml))
28711 (list python-logical-unification))
28712 (home-page "https://github.com/pythological/python-cons")
28713 (synopsis "Cons cell data structures and related algorithms for Python")
28715 "This library implements algorithms and data structures for Lisp-style
28716 cons cells in Python.")
28717 (license license:lgpl3+)))
28719 (define-public python-etuples
28721 (name "python-etuples")
28726 (uri (pypi-uri "etuples" version))
28729 "0jhfyp177v37rl0i7wqfx7q6s5qkz027hl283d1x8d0vm3w0zqc8"))))
28730 (build-system python-build-system)
28732 (list python-cons python-multipledispatch))
28733 (home-page "https://github.com/pythological/etuples")
28734 (synopsis "S-expressions in Python")
28736 "This library implements eval'able S-expression in Python using tuple-like objects.")
28737 (license license:asl2.0)))
28739 (define-public python-minikanren
28741 (name "python-minikanren")
28746 (uri (git-reference
28747 (url "https://github.com/pythological/kanren")
28748 (commit (string-append "v" version))))
28749 (file-name (git-file-name name version))
28751 (base32 "0g7wfj5hxalwz7k1301nsjqhjpzsif1bj6wjm2x2kavlm2ypv9jc"))))
28752 (build-system python-build-system)
28754 '(#:phases (modify-phases %standard-phases
28756 (lambda* (#:key tests? #:allow-other-keys)
28758 (invoke "python" "-m" "pytest" "-v" "tests/" "kanren/"))
28761 (list python-coveralls
28770 python-pre-commit))
28772 (list python-toolz python-cons python-multipledispatch
28773 python-etuples python-logical-unification))
28774 (home-page "https://github.com/pythological/kanren")
28775 (synopsis "Relational logic programming in pure Python")
28777 "The minikanren library provides an algorithmic core for computer algebra
28778 systems in Python.")
28779 (license license:bsd-3)))
28781 (define-public python-dotenv
28783 (name "python-dotenv")
28788 (uri (pypi-uri "python-dotenv" version))
28790 (base32 "13s9imfd0k4d7b1qy5wfqzw5vyj6rhmcrccsdz1l4g39b55b1qxp"))))
28791 (build-system python-build-system)
28794 (modify-phases %standard-phases
28796 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
28798 (add-installed-pythonpath inputs outputs)
28799 (setenv "PATH" (string-append (getenv "PATH") ":"
28800 (assoc-ref outputs "out") "/bin"))
28801 ;; Skip the ipython tests.
28802 (delete-file "tests/test_ipython.py")
28803 (invoke "python" "-m" "pytest")))))))
28805 (list python-click))
28807 (list python-mock python-pytest python-sh))
28808 (home-page "https://saurabh-kumar.com/python-dotenv/")
28809 (synopsis "Setup environment variables according to .env files")
28811 "This package provides the @code{python-dotenv} Python module to read
28812 key-value pairs from a @code{.env} file and set them as environment variables.")
28813 (license license:bsd-3)))
28815 (define-public python-dotenv-0.13.0
28816 (package (inherit python-dotenv)
28817 (name "python-dotenv")
28822 (uri (pypi-uri "python-dotenv" version))
28825 "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v"))))))
28827 (define-public date2name
28828 (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798")
28832 (version (git-version "0.0" revision commit))
28836 (uri (git-reference
28837 (url "https://github.com/novoid/date2name")
28839 (file-name (git-file-name name version))
28842 "1vq96b7n16d932nyfhnzwdwxff0zrqanidmwr4cxj2p67ad9y3w7"))))
28843 (build-system python-build-system)
28845 `(#:tests? #f ; no tests
28847 (modify-phases %standard-phases
28850 (lambda* (#:key outputs #:allow-other-keys)
28851 (let* ((bindir (string-append (assoc-ref outputs "out") "/bin"))
28852 (binary (string-append bindir "/date2name")))
28854 (copy-file "date2name/__init__.py" binary)
28855 (chmod binary #o555)))))))
28856 (synopsis "Handling time-stamps and date-stamps in file names")
28857 (description "By default, date2name gets the modification time of matching
28858 files and directories and adds a datestamp in standard ISO 8601+ format
28859 YYYY-MM-DD at the beginning of the file or directory name.")
28860 (home-page "https://github.com/novoid/date2name")
28861 (license license:gpl3+))))
28863 (define-public python-braintree
28865 (name "python-braintree")
28870 (uri (pypi-uri "braintree" version))
28872 (base32 "19kli85q18p80nsn8fm4ql6axpr7bllfqg5chv2ywhr8zr8bssll"))))
28873 (build-system python-build-system)
28875 (list python-requests))
28877 "https://developers.braintreepayments.com/python/sdk/server/overview")
28878 (synopsis "Braintree Python Library")
28879 (description "The Braintree Python SDK provides integration access to the
28880 Braintree Gateway. Braintree is a US-based payments service provider.")
28881 (license license:expat)))
28883 (define-public python-markuppy
28885 (name "python-markuppy")
28890 (uri (pypi-uri "MarkupPy" version))
28892 (base32 "0pqdmpxbr8iq22b4css2gz5z6s01ddpzyj25x27kgbs2lp0f5phs"))))
28893 (build-system python-build-system)
28894 (home-page "https://github.com/tylerbakke/MarkupPy")
28895 (synopsis "Pythonic HTML/XML generator")
28896 (description "This Python module attempts to make it easier to generate
28897 HTML/XML from a Python program in an intuitive, lightweight, customizable and
28899 (license license:expat)))
28901 (define-public python-tablib
28903 (name "python-tablib")
28908 (uri (pypi-uri "tablib" version))
28910 (base32 "03f1z6jq6rf67gwhbm9ma4rydm8h447a5nh5lcs5l8jg8l4aqg7q"))))
28911 (build-system python-build-system)
28914 (modify-phases %standard-phases
28916 (lambda* (#:key tests? #:allow-other-keys)
28918 (setenv "GUIX_PYTHONPATH"
28919 (string-append (getcwd) "/build/lib:"
28920 (getenv "GUIX_PYTHONPATH")))
28921 (invoke "pytest")))))))
28923 (list python-pandas ;; required for test-suite
28924 python-pytest python-pytest-cov python-setuptools-scm))
28926 (list python-markuppy
28933 (home-page "https://tablib.readthedocs.io")
28934 (synopsis "Format agnostic tabular data library")
28935 (description "@code{tablib} is a format-agnostic tabular dataset library,
28936 written in Python. Supported output formats are Excel (Sets + Books),
28937 JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets),
28938 TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets).
28940 @code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is
28941 quite huge, this Guix package doesn't depend on pandas. In case, just also
28942 install @code{python-pandas}.")
28943 (license license:expat)))
28945 (define-public python-csb43
28947 (name "python-csb43")
28952 (uri (pypi-uri "csb43" version))
28954 (base32 "0r0csl9npncnkfafg3rg6xr38d1qr0sxvq7wn7mg9bq41hvvh1si"))))
28955 (build-system python-build-system)
28957 (list python-lxml))
28959 (list python-pycountry python-pyyaml python-tablib))
28960 (home-page "https://bitbucket.org/wmj/csb43")
28961 (synopsis "Tools for converting from the Spanish banks' format CSB norm
28963 (description "This package provides tools to convert files in the format
28964 used by multiple Spanish banks (standard 43 of the Spanish Banking Council
28965 [CSB43] / Spanish Banking Association [AEB43]) to other formats.
28967 Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument
28968 spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.")
28969 (license license:lgpl3)))
28971 (define-public python-febelfin-coda
28973 (name "python-febelfin-coda")
28978 (uri (pypi-uri "febelfin-coda" version))
28980 (base32 "1isnf87gxlvfbmackv7b2c978vmnj7ij0v4svhyjl8pbb9hwjsvm"))))
28981 (build-system python-build-system)
28982 (home-page "https://coda.b2ck.com/")
28983 (synopsis "Module to parse Belgian CODA files")
28984 (description "This package provides a module to parse Coded statement of
28985 account (CODA) files as defined be the Belgian Febelfin bank standard.")
28986 (license license:bsd-3)))
28988 (define-public python-ofxparse
28990 (name "python-ofxparse")
28995 (uri (pypi-uri "ofxparse" version))
28997 (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5"))))
28998 (build-system python-build-system)
29001 (modify-phases %standard-phases
29003 (lambda* (#:key tests? #:allow-other-keys)
29005 (invoke "nosetests" "-v")))))))
29007 (list python-nose))
29009 (list python-beautifulsoup4 python-lxml python-six))
29010 (home-page "http://sites.google.com/site/ofxparse")
29011 (synopsis "Tools for working with the OFX (Open Financial Exchange) file
29013 (description "@code{ofxparse} is a parser for Open Financial
29014 Exchange (.ofx) format files. OFX files are available from almost any online
29015 banking site, so they work well if you want to pull together your finances
29016 from multiple sources. Online trading accounts also often provide account
29017 statements in OFX files.")
29018 (license license:expat)))
29020 (define-public python-rfc3339-validator
29022 (name "python-rfc3339-validator")
29027 (uri (pypi-uri "rfc3339_validator" version))
29029 (base32 "0srg0b89aikzinw72s433994k5gv5lfyarq1adhas11kz6yjm2hk"))))
29030 (build-system python-build-system)
29031 (native-inputs (list python-hypothesis
29033 python-pytest-runner
29034 python-strict-rfc3339))
29035 (propagated-inputs (list python-six))
29036 (home-page "https://github.com/naimetti/rfc3339-validator")
29037 (synopsis "Python RFC3339 validator")
29038 (description "This package provides a pure Python RFC3339 validator.")
29039 (license license:expat)))
29041 (define-public python-strict-rfc3339
29043 (name "python-strict-rfc3339")
29047 (method git-fetch) ;no tests in pypi release
29048 (uri (git-reference
29049 (url "https://github.com/danielrichman/strict-rfc3339")
29050 (commit (string-append "version-" version))))
29051 (file-name (git-file-name name version))
29054 "0b12bh9v9gwkm89kxbidxw2z81lg8fx1v5fzgs313v1wgx6qb09p"))))
29055 (build-system python-build-system)
29059 #~(modify-phases %standard-phases
29061 (lambda* (#:key tests? #:allow-other-keys)
29063 (invoke "pytest" "-vv"
29064 ;; The timestamp to local offset tests fail due to
29065 ;; missing timezone data (see:
29066 ;; https://github.com/danielrichman/strict-rfc3339/issues/9).
29067 "-k" "not LocalOffset")))))))
29068 (native-inputs (list python-pytest))
29069 (home-page "https://github.com/danielrichman/strict-rfc3339")
29070 (synopsis "RFC3339 procedures library")
29071 (description "The @code{strict_rfc3339} Python module provides strict,
29072 simple, lightweight RFC3339 procedures. It enables or aims to:
29074 @item Convert UNIX timestamps to and from RFC3339.
29075 @item Produce RFC3339 strings with a UTC offset (Z) or with the offset that
29076 the C time module reports is the local timezone offset.
29077 @item Be simple with minimal dependencies/libraries.
29078 @item Avoid timezones as much as possible.
29079 @item Be very strict and follow RFC3339.
29081 (license license:gpl3+)))
29083 (define-public python-stripe
29085 (name "python-stripe")
29090 (uri (pypi-uri "stripe" version))
29092 (base32 "0258lzh4qikhinfggnlfh5aklcvg7lrvl8giqrh0yf0l61wvfrl9"))))
29093 (build-system python-build-system)
29095 '(#:tests? #f)) ;; tests require network
29097 (list python-requests))
29098 (home-page "https://github.com/stripe/stripe-python")
29099 (synopsis "Python bindings for the Stripe financial services' API")
29100 (description "This package provides access to the Stripe financial
29101 services' API. It includes a pre-defined set of classes for API resources
29102 that initialize themselves dynamically from API responses which makes it
29103 compatible with a wide range of versions of the Stripe API.")
29104 (license license:expat)))
29106 (define-public python-platformdirs
29108 (name "python-platformdirs")
29113 (uri (pypi-uri "platformdirs" version))
29115 (base32 "1njz0h4iky8iglrb85cd07hpa3lp1a2dfr934dj65hxwzvfk61j4"))))
29116 (build-system python-build-system)
29118 '(#:phases (modify-phases %standard-phases
29120 (lambda* (#:key tests? #:allow-other-keys)
29122 (invoke "pytest" "-vv")))))))
29124 (list python-appdirs python-pytest python-pytest-mock
29125 python-setuptools-scm))
29126 (home-page "https://github.com/platformdirs/platformdirs")
29127 (synopsis "Determine the appropriate platform-specific directories")
29128 (description "When writing applications, finding the right location to
29129 store user data and configuration varies per platform. Even for
29130 single-platform apps, there may by plenty of nuances in figuring out the right
29131 location. This small Python module determines the appropriate
29132 platform-specific directories, e.g. the ``user data dir''.")
29133 (license license:expat)))
29135 (define-public python-json2html
29137 (name "python-json2html")
29140 ;; There are no tests in the PyPI tarball.
29143 (uri (git-reference
29144 (url "https://github.com/softvar/json2html")
29145 (commit (string-append "v" version))))
29146 (file-name (git-file-name name version))
29148 (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3"))))
29149 (build-system python-build-system)
29152 (modify-phases %standard-phases
29154 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
29156 (add-installed-pythonpath inputs outputs)
29157 (invoke "python" "test/run_tests.py")))))))
29158 (home-page "https://github.com/softvar/json2html")
29159 (synopsis "Convert JSON to HTML table")
29160 (description "@code{python-json2html} is a python module to convert JSON
29161 into a human readable HTML table representation.")
29162 (license license:expat)))
29164 (define-public python-face
29166 (name "python-face")
29171 (uri (pypi-uri "face" version))
29173 (base32 "0gpd9f0rmbv3rd2szi2na37l29fabkwazikjrxc6wca1lddwlnbx"))))
29174 (build-system python-build-system)
29177 (modify-phases %standard-phases
29179 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
29181 ;; Make installed package available for running the tests.
29182 (add-installed-pythonpath inputs outputs)
29183 (invoke "pytest" "-v")))))))
29185 (list python-pytest))
29187 (list python-boltons))
29188 (home-page "https://github.com/mahmoud/face")
29189 (synopsis "CLI parsing and dispatching microframework")
29190 (description "@code{python-face} is a Pythonic microframework for building
29191 command-line applications.
29194 @item First-class subcommand support
29195 @item Powerful middleware architecture
29196 @item Separate parser layer
29197 @item Built-in flagfile support
29198 @item Handy testing utilities
29199 @item Themeable help display
29201 (license license:bsd-3)))
29203 (define-public python-glom
29205 (name "python-glom")
29206 (version "20.11.0")
29210 (uri (pypi-uri "glom" version))
29212 (base32 "04pba09vdr3qjvqvy14g60fscdsi35chbbyqpczdp76cpir101al"))))
29213 (build-system python-build-system)
29216 (modify-phases %standard-phases
29218 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
29220 ;; Make installed executable available for running the tests.
29222 (string-append (assoc-ref outputs "out") "/bin"
29223 ":" (getenv "PATH")))
29224 (invoke "pytest" "-v")))))))
29226 (list python-pytest python-pyyaml))
29228 (list python-attrs python-boltons python-face))
29229 (home-page "https://github.com/mahmoud/glom")
29230 (synopsis "Declaratively restructure data")
29231 (description "Real applications have real data, and real data
29232 nests---objects inside of objects inside of lists of objects. glom is a new
29233 and powerful way to handle real-world data, featuring:
29236 @item Path-based access to nested data structures
29237 @item Readable, meaningful error messages
29238 @item Declarative data transformation, using lightweight, Pythonic specifications
29239 @item Built-in data exploration and debugging features
29241 (license license:bsd-3)))
29243 (define-public python-box
29245 (name "python-box")
29250 (uri (pypi-uri "python-box" version))
29253 "0jhrdif57khx2hsw1q6a9x42knwcvq8ijgqyq1jmll6y6ifyzm2f"))))
29254 (build-system python-build-system)
29256 (list python-msgpack python-ruamel.yaml python-toml))
29257 (home-page "https://github.com/cdgriffith/Box")
29258 (synopsis "Advanced Python dictionaries with dot notation access")
29260 "This package provides the @code{python-box} Python module.
29261 It implements advanced Python dictionaries with dot notation access.")
29262 (license license:expat)))
29264 (define-public python-fields
29266 (name "python-fields")
29271 (uri (pypi-uri "fields" version))
29273 (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i"))))
29274 (build-system python-build-system)
29275 (home-page "https://python-fields.readthedocs.io/")
29276 (synopsis "Python container class boilerplate killer")
29277 (description "Avoid repetetive boilerplate code in Python classes.")
29278 (license license:bsd-3)))
29280 (define-public python-aspectlib
29282 (name "python-aspectlib")
29287 (uri (pypi-uri "aspectlib" version))
29289 (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj"))))
29290 (build-system python-build-system)
29291 (propagated-inputs (list python-fields))
29292 (home-page "https://github.com/ionelmc/python-aspectlib")
29294 "Python monkey-patching and decorators")
29296 "This package provides an aspect-oriented programming, monkey-patch
29297 and decorators library. It is useful when changing behavior in existing
29298 code is desired. It includes tools for debugging and testing:
29299 simple mock/record and a complete capture/replay framework.")
29300 (license license:bsd-2)))
29302 (define-public python-ijson
29304 (name "python-ijson")
29309 (uri (pypi-uri "ijson" version))
29311 (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x"))))
29314 (modify-phases %standard-phases
29315 ;; the tests run by the default setup.py require yajl 1.x,
29316 ;; but we have 2.x. yajl 1.x support is going to be removed
29317 ;; anyway, so use pytest to avoid running the yajl1-related
29318 ;; tests. See: https://github.com/ICRAR/ijson/issues/55
29320 (lambda* (#:key tests? #:allow-other-keys)
29322 (invoke "pytest" "-vv")))))))
29324 ;; libyajl is optional, but compiling with it makes faster
29325 ;; backends available to ijson:
29328 (list python-pytest))
29329 (build-system python-build-system)
29330 (home-page "https://github.com/ICRAR/ijson")
29331 (synopsis "Iterative JSON parser with Python iterator interfaces")
29333 "Ijson is an iterative JSON parser with standard Python iterator
29335 (license license:bsd-3)))
29337 (define-public python-ordered-set
29339 (name "python-ordered-set")
29344 (uri (pypi-uri "ordered-set" version))
29346 (base32 "1a34fg3r3480nfm6652kyqql3lwixf8jirzdja9camvnr128wjk9"))))
29347 (build-system python-build-system)
29350 #~(modify-phases %standard-phases
29352 (lambda* (#:key tests? #:allow-other-keys)
29354 (invoke "pytest" "-vv")))))))
29355 (native-inputs (list python-cython python-pytest))
29356 (home-page "https://github.com/simonpercivall/orderedset")
29357 (synopsis "Ordered Set implementation in Cython")
29358 (description "This library provides an @code{OrderedSet} data type that
29359 works like a regular set, but remembers insertion order. It supports the full
29360 Python @code{set} interface.")
29361 (license license:asl2.0)))
29363 (define-public python-orgparse
29365 (name "python-orgparse")
29370 (uri (pypi-uri "orgparse" version))
29372 (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71"))))
29373 (build-system python-build-system)
29376 (modify-phases %standard-phases
29378 (lambda* (#:key tests? #:allow-other-keys)
29380 (invoke "pytest" "-vv" "orgparse/tests")))))))
29382 (list python-pytest python-setuptools-scm))
29383 (home-page "https://github.com/karlicoss/orgparse")
29384 (synopsis "Emacs Org mode parser in Python")
29386 "This package is a Python module for reading Emacs Org mode files.")
29387 (license license:bsd-3)))
29389 (define-public dynaconf
29398 (url "https://github.com/rochacbruno/dynaconf")
29400 (file-name (git-file-name name version))
29403 "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h"))
29404 (patches (search-patches "dynaconf-unvendor-deps.patch"))
29405 (modules '((guix build utils)))
29407 ;; Remove vendored dependencies
29408 (let ((unvendor '("click" "dotenv" "ruamel" "toml")))
29409 (with-directory-excursion "dynaconf/vendor"
29410 (for-each delete-file-recursively unvendor))
29411 (with-directory-excursion "dynaconf/vendor_src"
29412 (for-each delete-file-recursively unvendor)))))))
29413 (build-system python-build-system)
29416 (modify-phases %standard-phases
29417 (add-after 'unpack 'patch-for-click-8
29419 (substitute* "dynaconf/cli.py"
29420 (("click.get_os_args\\()") ;deprecated from Click 8.1+
29423 (lambda* (#:key tests? outputs #:allow-other-keys)
29425 ;; These tests depend on hvac and a live Vault process.
29426 (delete-file "tests/test_vault.py")
29427 (invoke "make" "test_only")))))))
29429 (list python-click python-configobj python-dotenv-0.13.0
29430 python-ruamel.yaml python-toml))
29432 (list python-django python-flask python-pytest python-pytest-cov
29433 python-pytest-mock))
29434 (home-page "https://www.dynaconf.com/")
29435 (synopsis "The dynamic configurator for your Python project")
29437 "This package provides @code{dynaconf} the dynamic configurator manager for
29438 your Python project. It provides features such as:
29441 @item Inspired by the @url{https://12factor.net/config, 12-factor application guide};
29442 @item Settings management (default values, validation, parsing, templating);
29443 @item Protection of sensitive information (passwords/tokens);
29444 @item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable
29446 @item Full support for environment variables to override existing settings
29447 (dotenv support included);
29448 @item Optional layered system for multiple environments @code{[default,
29449 development, testing, production]};
29450 @item Built-in support for Hashicorp Vault and Redis as settings and secrets storage;
29451 @item Built-in extensions for Django and Flask web frameworks;
29452 @item CLI for common operations such as @code{init, list, write, validate, export}.
29454 (license license:expat)))
29456 (define-public python-pudb
29458 (name "python-pudb")
29459 (version "2022.1.2")
29462 (uri (pypi-uri "pudb" version))
29465 "03a7zalgdxfd2z2k6050ng087gwqgqis544n2083gdfxbf0ap0vb"))))
29466 (build-system python-build-system)
29468 `(#:phases (modify-phases %standard-phases
29469 (add-before 'check 'fix-read-only-home
29471 (setenv "HOME" "/tmp")))
29473 (lambda* (#:key tests? #:allow-other-keys)
29475 (invoke "pytest" "-vv")))))))
29476 (native-inputs (list python-pytest python-pytest-mock))
29477 (propagated-inputs (list python-jedi python-pygments python-urwid
29478 python-urwid-readline))
29479 (home-page "https://documen.tician.de/pudb/")
29480 (synopsis "Console-based Python debugger")
29482 "@command{pudb} is a full-screen, console-based Python debugger providing
29483 all the niceties of modern GUI-based debuggers in a more lightweight and
29484 keyboard-friendly package.")
29485 (license license:expat)))
29487 (define-public pudb
29488 (deprecated-package "pudb" python-pudb))
29490 (define-public python-iwlib
29492 (name "python-iwlib")
29497 (uri (pypi-uri "iwlib" version))
29499 (base32 "18bd35wn7zclalpqbry42pf7bjrdggxkkw58mc0k1vkhg9czc1d8"))))
29500 (build-system python-build-system)
29502 (list wireless-tools))
29503 (propagated-inputs (list python-cffi))
29504 (home-page "https://github.com/nhoad/python-iwlib")
29505 (synopsis "Python module to interface with iwlib")
29507 "This package provides a Python interface to iw wireless tools.")
29508 (license license:gpl2)))
29510 (define-public python-pdoc3
29512 (name "python-pdoc3")
29517 (uri (pypi-uri "pdoc3" version))
29519 (base32 "1dz4hw10ngidzg9cjvflc8nlrwrjbb3ijhmaw4w6f039p6yff8jz"))
29521 (search-patches "python-pdoc3-tests.patch"))))
29522 (build-system python-build-system)
29524 (list python-setuptools-git python-setuptools-scm))
29525 (propagated-inputs (list python-mako python-markdown))
29526 (home-page "https://pdoc3.github.io/pdoc/")
29527 (synopsis "Auto-generate API documentation for Python projects")
29529 "This package auto-generates API documentation from Python projects
29530 already existing modules and objects docstrings.")
29531 (license license:agpl3+)))
29533 (define-public python-piexif
29535 (name "python-piexif")
29540 (uri (pypi-uri "piexif" version ".zip"))
29542 (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3"))
29544 (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch"))))
29545 (build-system python-build-system)
29547 (list unzip python-pillow))
29548 (home-page "https://github.com/hMatoba/Piexif")
29549 (synopsis "Simplify exif manipulations with Python")
29550 (description "Piexif simplifies interacting with EXIF data in
29551 Python. It includes the tools necessary for extracting, creating,
29552 manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.")
29553 (license license:expat)))
29555 (define-public python-pyrss2gen
29557 (name "python-pyrss2gen")
29562 (uri (pypi-uri "PyRSS2Gen" version))
29564 (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r"))))
29565 (build-system python-build-system)
29566 (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html")
29567 (synopsis "Generate RSS 2.0 feeds using a Python data structure")
29568 (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds.
29569 PyRSS2Gen builds the feed up by using a XML generator.")
29570 (license license:bsd-3)))
29572 (define-public python-yapsy
29574 (name "python-yapsy")
29579 (uri (pypi-uri "Yapsy" version))
29581 (base32 "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq"))))
29582 (build-system python-build-system)
29583 (home-page "http://yapsy.sourceforge.net")
29584 (synopsis "Simple plugin system for Python applications")
29585 (description "Yapsy, or Yet Another Plugin SYstem, is a small library
29586 implementing the core mechanisms needed to build a plugin system into a wider
29589 The main purpose is to depend only on Python's standard libraries and to
29590 implement only the basic functionalities needed to detect, load and keep track
29591 of several plugins.")
29592 (license license:bsd-3)))
29594 (define-public python-doit
29596 (name "python-doit")
29601 (uri (pypi-uri "doit" version))
29603 (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf"))))
29604 (build-system python-build-system)
29606 (list python-cloudpickle python-pyinotify))
29608 (list python-pytest))
29609 (home-page "https://pydoit.org")
29610 (synopsis "Automation tool to execute any kind of task in a build-tools
29612 (description "doit is an automation tool that brings the power of
29613 build-tools to execute any kind of task.
29615 A task describes some computation to be done (actions), and contains some
29616 extra meta-data. The actions can be external programs or Python functions. A
29617 single task may define more than one action.doit uses the task’s meta-data
29621 @item cache task results
29622 @item correct execution order
29623 @item parallel execution
29624 @item powerful dependency system
29626 (license license:expat)))
29628 (define-public python-phpserialize
29630 (name "python-phpserialize")
29635 (uri (pypi-uri "phpserialize" version))
29637 (base32 "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz"))))
29638 (build-system python-build-system)
29641 ;; tests missing in pypi archive, anhow they are quite simple and not worth any hassle
29643 (home-page "http://github.com/mitsuhiko/phpserialize")
29644 (synopsis "Python port of the serialize and unserialize functions of PHP")
29646 "This package provides a port of the serialize and unserialize functions of PHP for Python")
29647 (license license:bsd-3)))
29649 (define-public nikola
29656 (uri (pypi-uri "Nikola" version))
29658 (base32 "1h96y4sfypp2fbqxa8xrqch5f7r3srm2ly222k9w2n143h2spx4m"))))
29659 (build-system python-build-system)
29666 python-jinja2 ;; for themes
29671 python-notebook ;; for ipynb
29672 python-phpserialize ;; for wordpress import
29678 python-ruamel.yaml ;; for YAML metadata
29682 (list python-coverage
29686 python-pytest-cov))
29690 #~(modify-phases %standard-phases
29692 (lambda* (#:key tests? #:allow-other-keys)
29694 (invoke "pytest" "tests" "--no-cov"
29695 "-k" "not test_compiling_markdown[hilite]")))))))
29696 (home-page "https://getnikola.com/")
29697 (synopsis "Modular, fast and simple static website and blog generator")
29698 (description "Nikola generates static websites and blogs. Out of the box,
29699 it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML,
29700 and has plugins for many other formats.")
29701 (license license:expat)))
29703 (define-public nbss-upload
29705 (name "nbss-upload")
29710 (uri (pypi-uri "nbss-upload" version))
29712 (base32 "0jhyfm7w2ssknmh9789fmpnf79xr7sxbdcjwak6hfha6qparvk38"))))
29713 (build-system python-build-system)
29715 (list python-requests))
29717 `(#:tests? #f)) ;no tests
29718 (home-page "https://github.com/notebook-sharing-space/nbss-upload")
29719 (synopsis "Upload notebooks to a notebooksharing.space instance")
29721 "Upload notebooks as @code{.ipynb}, @code{.rmd}, and @code{.html} to a
29722 notebooksharing.space instance.")
29723 (license license:bsd-3)))
29725 (define-public python-reedsolo
29727 (name "python-reedsolo")
29732 (uri (pypi-uri "reedsolo" version))
29734 (base32 "09q15ji9iac3nmmxrcdvz8ynldvvqanqy3hs6q3cp327hgf5rcmq"))))
29735 (build-system python-build-system)
29736 (home-page "https://github.com/tomerfiliba/reedsolomon")
29737 (synopsis "Pure-Python Reed Solomon encoder/decoder")
29738 (description "A pure-python universal errors-and-erasures Reed-Solomon
29739 Codec, based on the tutorial at Wikiversity. This is a burst-type
29740 implementation, so that it supports any Galois field higher than 2^3,
29741 but not binary streams.")
29742 (license license:public-domain)))
29744 (define-public python-esprima
29746 (name "python-esprima")
29751 (uri (pypi-uri "esprima" version))
29753 (base32 "1vi32g991lxcxzmncfiszh8m9bwkh4887szskkdi0a9wdn3imnq8"))))
29754 (build-system python-build-system)
29755 (home-page "https://github.com/Kronuz/esprima-python")
29757 "ECMAScript parsing infrastructure for analysis in Python")
29759 "This package provides ECMAScript parsing infrastructure for
29760 multipurpose analysis in Python.")
29761 (license license:bsd-3)))
29763 (define-public python-types-dataclasses
29765 (name "python-types-dataclasses")
29769 (uri (pypi-uri "types-dataclasses" version))
29772 "1mq6qd365m8ml889zl5dxj9kncjv71iq1d1fvgj59y0ixlpm6s35"))))
29773 (build-system python-build-system)
29774 (home-page "https://github.com/python/typeshed")
29775 (synopsis "Typing stubs for dataclasses")
29777 "This package provides a collection of library stubs for Python, with
29779 (license license:asl2.0)))
29781 (define-public python-types-docutils
29783 (name "python-types-docutils")
29788 (uri (pypi-uri "types-docutils" version))
29790 (base32 "14ypv0x6fk1pjw0bvvr1lkb2g6dvq2pwvbd5b5pzjl6182fhmaim"))))
29791 (build-system python-build-system)
29792 (home-page "https://github.com/python/typeshed")
29793 (synopsis "Typing stubs for docutils")
29794 (description "This package provides a collection of library stubs for
29795 Python, with static types.")
29796 (license license:asl2.0)))
29798 (define-public python-psycopg2-binary
29800 (name "python-psycopg2-binary")
29804 (uri (pypi-uri "psycopg2-binary" version))
29807 "0kpaxg3lg5wg5ww5kxmzi2z2d7arsx13ci915d8a2pf17lqza7bn"))))
29808 (build-system python-build-system)
29809 (inputs (list postgresql))
29811 ;; Tests are disable because they need a live instance of PostgreSQL.
29813 (home-page "https://psycopg.org/")
29814 (synopsis "PostgreSQL database adapter for Python")
29816 "Psycopg is a PostgreSQL database adapter for the Python programming
29817 language. Its main features are the complete implementation of the Python DB
29818 API 2.0 specification and the thread safety (several threads can share the
29819 same connection). It was designed for heavily multi-threaded applications
29820 that create and destroy lots of cursors and make a large number of concurrent
29821 @code{INSERT}s or @code{UPDATE}s.
29823 Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in
29824 being both efficient and secure. It features client-side and
29825 server-side cursors, asynchronous communication and notifications,
29826 @code{COPY TO}/@code{COPY FROM} support. Many Python types are supported
29827 out-of-the-box and adapted to matching PostgreSQL data types;
29828 adaptation can be extended and customized thanks to a flexible objects
29831 Psycopg 2 is both Unicode and Python 3 friendly.")
29832 (license license:lgpl3+)))
29834 (define-public python-pyfuse3
29836 (name "python-pyfuse3")
29841 (uri (pypi-uri "pyfuse3" version))
29843 (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92"))))
29844 (build-system python-build-system)
29845 (native-inputs (list pkg-config))
29846 (inputs (list fuse-3))
29847 (propagated-inputs (list python-pytest-trio))
29848 (home-page "https://github.com/libfuse/pyfuse3")
29849 (synopsis "Python bindings FUSE 3")
29850 (description "This package provides Python 3 bindings for libfuse 3 with
29851 async I/O support.")
29852 (license license:gpl2+)))
29854 (define-public python-ansicolors
29856 (name "python-ansicolors")
29861 (uri (pypi-uri "ansicolors" version ".zip"))
29863 (base32 "1q3jqglkq4z0f6nkkn8bswcwqg012i2grrc27kabr8286dg4zycr"))))
29864 (build-system python-build-system)
29869 (home-page "https://github.com/jonathaneunice/colors/")
29870 (synopsis "ANSI colors for Python")
29872 "This package adds ANSI colors and decorations to your strings.")
29873 (license license:isc)))
29875 (define-public python-types-freezegun
29877 (name "python-types-freezegun")
29882 (uri (pypi-uri "types-freezegun" version))
29884 (base32 "08g926s8343zwq140zcfwly3qfgmahm7lp0vgb3ics549b2hifzl"))))
29885 (build-system python-build-system)
29886 (home-page "https://github.com/python/typeshed")
29887 (synopsis "Typing stubs for @code{freezegun}")
29888 (description "This package contains typing stubs for for @code{freezegun}, a
29889 very small subset the Python stubs contained in the complete @code{typeshed}
29891 (license license:asl2.0)))
29893 (define-public python-types-protobuf
29895 (name "python-types-protobuf")
29899 (uri (pypi-uri "types-protobuf" version))
29902 "000f8n6d4ilihiaf590k73rx3327jh8ima5q5dpxlwz3frj45qrn"))))
29903 (build-system python-build-system)
29904 (home-page "https://github.com/python/typeshed")
29905 (synopsis "Typing stubs for @code{protobuf}")
29906 (description "This package contains typing stubs for @code{protobuf}, a
29907 very small subset the Python stubs contained in the complete @code{typeshed}
29909 (license license:asl2.0)))
29911 (define-public python-types-pytz
29913 (name "python-types-pytz")
29914 (version "2021.3.6")
29918 (uri (pypi-uri "types-pytz" version))
29920 (base32 "14yr5hg2ww8s4a0mz2bkd549fv8qgm538fnzxvqv92ld1pcpym3l"))))
29921 (build-system python-build-system)
29922 (home-page "https://github.com/python/typeshed")
29923 (synopsis "Typing stubs for pytz")
29924 (description "This package contains typing stubs for @code{pytz}, a very
29925 small subset the Python stubs contained in the complete @code{typeshed}
29927 (license license:asl2.0)))
29929 (define-public python-types-toml
29931 (name "python-types-toml")
29936 (uri (pypi-uri "types-toml" version))
29938 (base32 "10400bd3yv6rjfnq8galskkbpqz1sfx9sfgr5qwvw04270x4cjgr"))))
29939 (build-system python-build-system)
29940 (home-page "https://github.com/python/typeshed")
29941 (synopsis "Typing stubs for TOML")
29942 (description "This package contains typing stubs for TOML, a very small
29943 subset the Python stubs contained in the complete @code{typeshed}
29945 (license license:asl2.0)))
29947 (define-public python-types-ujson
29949 (name "python-types-ujson")
29953 (uri (pypi-uri "types-ujson" version))
29956 "0k9n9hsq4k2zaakdwbkcsvi7m8d3mv2y9yl6f171y58ld4qpcxcy"))))
29957 (build-system python-build-system)
29958 (home-page "https://github.com/python/typeshed")
29959 (synopsis "Typing stubs for ujson")
29961 "This is a PEP 561 type stub package for the ujson package. It can be
29962 used by type-checking tools like mypy, PyCharm, pytype etc. to check code that
29964 (license license:asl2.0)))
29966 (define-public python-stltools
29968 (name "python-stltools")
29969 (version "2022.01.20")
29972 (uri (git-reference
29973 (url "https://github.com/rsmith-nl/stltools")
29975 (file-name (git-file-name name version))
29978 "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs"))))
29979 (build-system python-build-system)
29981 `(#:use-setuptools? #f
29983 (modify-phases %standard-phases
29986 (lambda* (#:key inputs outputs #:allow-other-keys)
29987 (let ((moddir (string-append (site-packages inputs outputs) "/stltools"))
29988 (bindir (string-append (assoc-ref outputs "out") "/bin")))
29989 (copy-recursively "stltools" moddir)
29993 (let ((source (string-append script ".py"))
29994 (target (string-append bindir "/" script)))
29995 (copy-file source target)
29996 (chmod target #o555)))
29997 '("stl2pov" "stl2ps" "stl2pdf" "stlinfo")))))
29999 (lambda* (#:key tests? #:allow-other-keys)
30001 (invoke "py.test" "-v")))))))
30002 (propagated-inputs (list python-pycairo))
30003 (native-inputs (list python-pytest))
30004 (home-page "https://github.com/rsmith-nl/stltools")
30005 (synopsis "Python modules and scripts for handling STL files")
30006 (description "This package consists of Python modules and scripts for
30007 manipulating stereolithography (STL) files. It can convert STL files into
30008 POV-ray meshes, PDF and PostScript. The Python modules allow for reading and
30009 writing STL files. It supports both the text and binary forms of STL.")
30010 (license license:expat)))
30012 (define-public python-multipart
30014 (name "python-multipart")
30018 (uri (pypi-uri "python-multipart" version))
30021 "0hzshd665rl1bkwvaj9va4j3gs8nmb478fbvligx20663xhmzfzp"))))
30022 (build-system python-build-system)
30023 (propagated-inputs (list python-six))
30024 (native-inputs (list python-pyyaml python-mock python-pytest-cov))
30026 `(#:phases (modify-phases %standard-phases
30027 ;; There is a bug in the test_suit specification.
30028 (add-after 'unpack 'patch-test-suite
30030 ;; Make compatible with PyYAML 6.
30031 (substitute* "multipart/tests/test_multipart.py"
30034 (substitute* "setup.py"
30035 (("test_suite = 'multipart.tests.suite'")
30036 "test_suite = 'multipart.tests.test_multipart.suite'"))
30037 ;; Needed by PyYAML 6.0.
30038 (substitute* "multipart/tests/test_multipart.py"
30039 (("yaml_data = yaml.load\\(f\\)")
30040 "yaml_data = yaml.load(f, Loader=yaml.SafeLoader)")))))))
30041 (home-page "https://github.com/andrew-d/python-multipart")
30042 (synopsis "Streaming multipart parser for Python")
30044 "This package provides a streaming multipart parser for Python.")
30045 (license license:asl2.0)))
30047 (define-public python-aiopg
30049 (name "python-aiopg")
30053 (uri (pypi-uri "aiopg" version))
30056 "1mwmypsfzh8adjbyvf7kqv9h3k1kf5ykhi1g3ahw4wqdxaj6nz2l"))))
30057 (build-system python-build-system)
30058 (native-inputs (list python-sqlalchemy))
30059 (propagated-inputs (list python-async-timeout python-psycopg2-binary))
30060 (home-page "https://aiopg.readthedocs.io")
30061 (synopsis "Postgres integration with asyncio")
30063 "aiopg is a library for accessing a PostgreSQL
30064 database from the asyncio (PEP-3156/tulip) framework. It wraps
30065 asynchronous features of the Psycopg database driver.")
30066 (license license:bsd-3)))
30068 (define-public python-verspec
30070 (name "python-verspec")
30074 (uri (pypi-uri "verspec" version))
30077 "07n06wv85fm4vl1ird2mja0823js3x322wgs9gdnq1djjyk4ql64"))))
30078 (build-system python-build-system)
30079 (native-inputs (list python-coverage python-flake8 python-mypy
30080 python-pretend python-pytest))
30082 `(#:phases (modify-phases %standard-phases
30084 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
30086 (add-installed-pythonpath inputs outputs)
30087 (invoke "touch" "test/__init__.py")
30088 (invoke "pytest")))))))
30089 (home-page "https://github.com/jimporter/verspec")
30090 (synopsis "Flexible version handling for Python")
30092 "This Python library handles software versions and specifiers. It is
30093 adapted from the @code{packaging} package.")
30094 (license (list license:bsd-2 license:asl2.0))))
30096 (define-public python-shtab
30098 (name "python-shtab")
30103 (uri (pypi-uri "shtab" version))
30105 (base32 "127mymfm7r0hddk2vknqq34fj6dirj6ip990i3g4isx0lsd7pnsc"))))
30106 (build-system python-build-system)
30111 python-pytest-timeout
30112 python-setuptools-scm
30116 (modify-phases %standard-phases
30119 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
30121 (add-installed-pythonpath inputs outputs)
30122 (invoke "pytest")))))))
30123 (home-page "https://github.com/iterative/shtab")
30124 (synopsis "Automagic shell tab completion for Python CLI applications")
30126 "This package automatically generates shell tab completion scripts for
30128 (license license:asl2.0)))
30130 (define-public python-style
30132 (name "python-style")
30137 (uri (pypi-uri "style" version))
30139 (base32 "1dcfb578v9mrwh92rgms87gql0gp4vgj6l9hpgyfg0wbd3rh3bfh"))))
30140 (build-system python-build-system)
30141 (home-page "https://github.com/lmittmann/style")
30142 (synopsis "Terminal string styling")
30144 "@code{python-style} is a simple terminal string styling package. Its API is
30145 a port of the chalk package for javascript.")
30146 (license license:expat)))
30148 (define-public python-sre-yield
30150 (name "python-sre-yield")
30155 (uri (pypi-uri "sre_yield" version))
30158 "12kv3mvdr22g2v9wfr5aabh1f58s817dbh8mrlfzxzxs7hm1lkz9"))))
30159 (build-system python-build-system)
30160 (native-inputs (list python-nose))
30161 (home-page "https://github.com/google/sre_yield")
30162 (synopsis "Expands a regular expression to its possible matches")
30164 "The goal of sre_yield is to efficiently generate all values that can
30165 match a given regular expression, or count possible matches efficiently. It
30166 uses the parsed regular expression, so you get a much more accurate result
30167 than trying to just split strings.")
30168 (license license:asl2.0)))
30170 (define-public python-pyperf
30172 (name "python-pyperf")
30177 (uri (pypi-uri "pyperf" version))
30179 (base32 "189qf9wdbig0fk4n3bavx8acgdbay5lllfvw48jvbfaafb7y5hja"))))
30180 (build-system python-build-system)
30183 (modify-phases %standard-phases
30184 (add-after 'unpack 'fix-tests
30186 ;; Some of these tests fail with:
30188 ;; ModuleNotFoundError: No module named 'pyperf'
30190 ;; even when calling ‘add-installed-pythonpath’ in the ‘check’
30192 (delete-file "pyperf/tests/test_examples.py")))
30194 (lambda* (#:key tests? #:allow-other-keys)
30196 ;; From tox.ini's ‘testenv.commands’.
30197 (invoke "python" "-bb" "-Wd"
30198 "-m" "unittest" "discover"
30199 "-s" "pyperf/tests/" "-v")))))))
30201 (list python-psutil))
30202 (home-page "https://github.com/psf/pyperf")
30203 (synopsis "Toolkit for running Python benchmarks")
30204 (description "The Python @code{pyperf} module is a toolkit for writing,
30205 running and analyzing benchmarks. It features a simple API that can:
30208 @item automatically calibrate a benchmark for a time budget;
30209 @item spawn multiple worker processes;
30210 @item compute the mean and standard deviation;
30211 @item detect if a benchmark result seems unstable;
30212 @item store benchmark results in JSON format;
30213 @item support multiple units: seconds, bytes and integer.
30215 (license license:expat)))
30217 (define-public python-pydispatcher
30219 (name "python-pydispatcher")
30224 (uri (pypi-uri "PyDispatcher" version))
30226 (base32 "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m"))))
30227 (build-system python-build-system)
30230 (modify-phases %standard-phases
30232 (lambda* (#:key tests? #:allow-other-keys)
30234 (invoke "pytest")))))))
30235 (native-inputs (list python-pytest))
30236 (home-page "http://pydispatcher.sourceforge.net")
30237 (synopsis "Multi-producer-multi-consumer signal dispatching mechanism")
30238 (description "PyDispatcher is an enhanced version of Patrick K. O’Brien’s
30239 original @code{dispatcher.py} module. It provides the Python programmer with
30240 a robust mechanism for event routing within various application contexts.
30242 Included in the package are the robustapply and saferef modules, which
30243 provide the ability to selectively apply arguments to callable objects
30244 and to reference instance methods using weak-references.")
30245 (license license:bsd-3)))
30247 (define-public python-queuelib
30249 (name "python-queuelib")
30254 (uri (pypi-uri "queuelib" version))
30256 (base32 "1lpwq8wx3025i14y5h0hbald2ypbarf081pql6cqcak4y9kp482b"))))
30257 (build-system python-build-system)
30258 (native-inputs (list python-pytest))
30259 (home-page "https://github.com/scrapy/queuelib")
30261 "Collection of persistent (disk-based) and non-persistent (memory-based) queues")
30262 (description "Queuelib is a Python library that implements object
30263 collections which are stored in memory or persisted to disk, provide a
30264 simple API, and run fast.
30266 Queuelib provides collections for queues (FIFO), stacks (LIFO), queues
30267 sorted by priority and queues that are emptied in a round-robin
30269 (license license:bsd-3)))
30271 (define-public python-posix-ipc
30273 (name "python-posix-ipc")
30277 ;; The source distributed on PyPI is prebuild.
30279 (uri (git-reference
30280 (url "https://github.com/osvenskan/posix_ipc")
30281 (commit (string-append "rel" version))))
30282 (file-name (git-file-name name version))
30284 (base32 "17y4d0pmvp199c5hbs602ailhlh9f9zv89kmpbd8jhyl6rgaxsvs"))))
30285 (build-system python-build-system)
30288 #~(modify-phases %standard-phases
30289 (add-after 'unpack 'patch-cc-path
30291 (substitute* "prober.py"
30293 (string-append "cmd = \"" #$(cc-for-target)))))))))
30294 (home-page "http://semanchuk.com/philip/posix_ipc/")
30295 (synopsis "POSIX IPC primitives for Python")
30297 "This package provides POSIX IPC primitives - semaphores, shared memory and
30298 message queues for Python.")
30299 (license license:bsd-3))) ; BSD like Copyright (c) 2018, Philip Semanchuk
30301 (define-public python-itemadapter
30303 (name "python-itemadapter")
30308 (uri (pypi-uri "itemadapter" version))
30310 (base32 "083wp3h2brh8x19jbdr8rz3biqwp3jlqd0rfzcyrjyhssffsgdh5"))))
30311 (build-system python-build-system)
30312 (home-page "https://github.com/scrapy/itemadapter")
30313 (synopsis "Common interface for data container classes")
30314 (description "The ItemAdapter class is a wrapper for data container
30315 objects, providing a common interface to handle objects of different
30316 types in an uniform manner, regardless of their underlying implementation.
30318 Currently supported types are:
30320 @item scrapy.item.Item
30322 @item dataclass-based classes
30323 @item attrs-based classes
30324 @item pydantic-based classes
30327 Additionally, interaction with arbitrary types is supported by
30328 implementing a pre-defined interface.")
30329 (license license:bsd-3)))
30331 (define-public python-itemloaders
30333 (name "python-itemloaders")
30338 (uri (pypi-uri "itemloaders" version))
30340 (base32 "15hc78h90qhwass1bga1c3xar2dd6j8sxg61zg6jvh74lf6csxqj"))))
30341 (build-system python-build-system)
30343 (list python-itemadapter python-jmespath python-parsel python-w3lib))
30344 (home-page "https://github.com/scrapy/itemloaders")
30345 (synopsis "Base library for scrapy's ItemLoader")
30346 (description "Itemloaders is a library that helps you collect data
30347 from HTML and XML sources. It comes in handy to extract data from web
30348 pages, as it supports data extraction using CSS and XPath Selectors.
30350 It’s specially useful when you need to standardize the data from many
30351 sources. For example, it allows you to have all your casting and
30352 parsing rules in a single place.")
30353 (license license:bsd-3)))
30355 (define-public python-hypy-utils
30357 (name "python-hypy-utils")
30361 (uri (pypi-uri "hypy_utils" version))
30364 "05csk0x8ivavq88x457cq5hwjcdirfbkzj7bbg5qgnpnf2dxxhiw"))))
30365 (build-system python-build-system)
30366 (home-page "https://github.com/hykilpikonna/HyPyUtils")
30367 (synopsis "Python utility functions for HyDEV")
30368 (description "This module provides Python utility functions for modifying
30369 and setting the color of terminal output, via HyDEV.")
30370 (license license:expat)))
30372 (define-public python-mike
30374 (name "python-mike")
30378 (uri (pypi-uri "mike" version))
30381 "0yxp816x7s948xsd0fifvq9shg01xdxlifd9rzf5y2rd9iwz3hsn"))))
30382 (build-system python-build-system)
30384 (list python-coverage python-flake8 python-shtab))
30386 (list python-jinja2 python-mkdocs python-pyyaml python-verspec))
30387 (home-page "https://github.com/jimporter/mike")
30388 (synopsis "Manage multiple versions of MkDocs-powered documentation")
30390 "This package provides a Python utility to easily deploy multiple
30391 versions of MkDocs-powered docs to a Git branch. It is suitable for deploying
30392 to Github via gh-pages.")
30393 (license license:bsd-3)))
30395 (define-public python-arpeggio
30397 (name "python-arpeggio")
30401 (uri (pypi-uri "Arpeggio" version))
30404 "0ggdsck1wpladd5bh9drhkmm86bblgk2wagrhn3sdf4v04wkic6n"))))
30405 (build-system python-build-system)
30406 (native-inputs (list python-coverage
30412 python-pytest-runner
30415 (home-page "https://github.com/textX/Arpeggio")
30416 (synopsis "Packrat parser interpreter for Python")
30418 "This Python library provides a recursive descent parser with backtracking
30419 and memoization (a.k.a. packrat parser). Arpeggio grammars are based on PEG
30420 formalism. Arpeggio's main use is a foundation for a toolchain for DSL
30421 development but it can be used for all sorts of general purpose parsing.")
30422 (license license:expat)))
30424 (define-public python-flatten-json
30426 (name "python-flatten-json")
30431 (uri (pypi-uri "flatten_json" version))
30433 (base32 "007m28gfs7pmz2rqqjxpial6skzw26hrfi8vrdy9agi9x0rj6dgf"))))
30434 (build-system python-build-system)
30435 (propagated-inputs (list python-six))
30436 (home-page "https://github.com/amirziai/flatten")
30437 (synopsis "Flatten JSON objects")
30439 "The @code{flatten_json} Python library flattens the hierarchy in your
30440 object, which can be useful if you want to force your objects into a table.")
30441 (license license:expat)))
30443 (define-public python-deepmerge
30445 (name "python-deepmerge")
30450 (uri (pypi-uri "deepmerge" version))
30452 (base32 "06hagzg8ccmjzqvszdxb52jgx5il8a1jdz41n4dpkyyjsfg7fi2b"))))
30453 (build-system python-build-system)
30457 #~(modify-phases %standard-phases
30458 (add-before 'build 'set-version
30460 (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
30461 ;; ZIP does not support timestamps before 1980.
30462 (setenv "SOURCE_DATE_EPOCH" "315532800")))
30465 (invoke "python" "-m" "build" "--wheel"
30466 "--no-isolation" ".")))
30468 (lambda* (#:key tests? #:allow-other-keys)
30470 (invoke "pytest"))))
30473 (let ((whl (car (find-files "dist" "\\.whl$"))))
30474 (invoke "pip" "--no-cache-dir" "--no-input"
30475 "install" "--no-deps" "--prefix" #$output whl)))))))
30477 (list python-pypa-build
30478 python-setuptools-scm
30481 (home-page "https://deepmerge.readthedocs.io/en/latest/")
30482 (synopsis "Merge nested data structures")
30484 "The @code{deep-merge} Python library provides a toolset to deeply merge
30485 nested data structures in Python like lists and dictionaries.")
30486 (license license:expat)))
30488 (define-public python-murmurhash3
30490 (name "python-murmurhash3")
30494 (uri (pypi-uri "murmurhash3" version))
30497 "1gdzys1212dx70byz07ipknbw1awbqskh6aznlkm85js8b8qfczm"))))
30498 (build-system python-build-system)
30499 (native-inputs (list python-cython python-pytest))
30500 (inputs (list python))
30503 '((ice-9 ftw) (ice-9 match)
30505 (guix build python-build-system))
30507 #~(modify-phases %standard-phases
30508 (add-after 'unpack 'set-source-file-times-to-1980
30510 (let ((circa-1980 (* 10 366 24 60 60)))
30512 (lambda (file stat flag)
30513 (utime file circa-1980 circa-1980) #t))))))))
30514 (home-page "https://github.com/veegee/mmh3")
30515 (synopsis "Python wrapper for MurmurHash (MurmurHash3)")
30517 "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set
30518 of fast and robust hash functions. This library is a Python extension module
30520 (license license:public-domain)))
30522 (define-public python-murmurhash
30524 (name "python-murmurhash")
30528 (uri (pypi-uri "murmurhash" version))
30531 "0vwkn98c703nvsigl2nz99rax2pafkx3djjfkgc49jiipmp3j2k3"))))
30532 (build-system python-build-system)
30533 (native-inputs (list python-cython python-pytest))
30534 (inputs (list python python-murmurhash3))
30537 '((ice-9 ftw) (ice-9 match)
30539 (guix build python-build-system))
30541 #~(modify-phases %standard-phases
30542 (add-after 'unpack 'set-source-file-times-to-1980
30544 (let ((circa-1980 (* 10 366 24 60 60)))
30546 (lambda (file stat flag)
30547 (utime file circa-1980 circa-1980) #t))))))))
30548 (home-page "https://github.com/explosion/murmurhash")
30549 (synopsis "Cython bindings for MurmurHash2")
30550 (description "This package provides Cython bindings for MurmurHash2.")
30551 (license license:expat)))
30553 ;; Scooby requires for its test suite a ‘pyvips’ package that is missing its
30554 ;; VIPS dependency.
30555 (define python-pyvips-for-python-scooby
30557 (inherit python-pyvips)
30558 (name "python-pyvips-for-python-scooby")
30560 (substitute-keyword-arguments (package-arguments python-pyvips)
30562 #~(modify-phases #$phases
30563 (delete 'fix-paths)
30564 ;; The checks won't succeed without VIPS.
30566 (delete 'sanity-check)))))
30568 (modify-inputs (package-inputs python-pyvips)
30570 (synopsis "pyvips for Scooby's test suite")))
30572 (define-public python-scooby
30574 (name "python-scooby")
30577 ;; The PyPI tarball does not contain the tests.
30580 (uri (git-reference
30581 (url "https://github.com/banesullivan/scooby")
30582 (commit (string-append "v" version))))
30583 (file-name (git-file-name name version))
30585 (base32 "1gkpmz8wl3jg8ylf1na35308sznw2g9wx33zqlyq5i2gpy2ml9mw"))))
30586 (build-system python-build-system)
30588 (list python-beautifulsoup4
30592 python-pyvips-for-python-scooby
30595 (list python-psutil))
30598 (modify-phases %standard-phases
30599 (add-after 'unpack 'fix-tests
30601 (substitute* "tests/test_scooby.py"
30602 ;; The test suite uses the no-version PyPI package
30603 ;; (https://pypi.org/project/no-version/),
30604 ;; but it doesn't seem worth packaging in Guix just for this.
30605 (("scooby\\.report\\.VERSION_NOT_FOUND")
30606 "scooby.report.MODULE_NOT_FOUND")
30607 (("^ +import no_version # noqa.*") ""))))
30609 (lambda* (#:key tests? #:allow-other-keys)
30611 (invoke "pytest")))))))
30612 (home-page "https://github.com/banesullivan/scooby")
30613 (synopsis "Report hardware information and Python package versions")
30615 "The Scooby package reports the following information about the currently
30619 @item operating system name;
30620 @item hardware information including machine type (e.g., @samp{i386},
30621 @samp{x86_64}, etc.), CPU count and total RAM;
30622 @item Python environment (e.g., Python, IPython, etc.);
30623 @item file system name;
30624 @item Python version;
30625 @item versions of specified Python packages.
30628 It can generate reports as HTML tables or plain text lists.
30630 Scooby has no required dependencies, and only few optional dependencies.")
30631 (license license:expat)))
30633 (define-public python-cymem
30635 (name "python-cymem")
30639 (uri (pypi-uri "cymem" version))
30642 "0pkyy60zk9654sj991w111p1l0m8wvz36nslw96x6nb9h6sjb5qn"))))
30643 (build-system python-build-system)
30645 (list python-cython
30651 #:modules '((ice-9 ftw)
30654 (guix build python-build-system))
30656 #~(modify-phases %standard-phases
30657 (add-after 'unpack 'set-source-file-times-to-1980
30658 ;; XXX One of the tests uses a ZIP library to pack up some of the
30659 ;; source tree, and fails with "ZIP does not support timestamps
30660 ;; before 1980". Work around this by setting the file times in the
30661 ;; source tree to sometime in early 1980.
30663 (let ((circa-1980 (* 10 366 24 60 60)))
30664 (ftw "." (lambda (file stat flag)
30665 (utime file circa-1980 circa-1980)
30667 (home-page "https://github.com/explosion/cymem")
30668 (synopsis "Cython memory pool for RAII-style memory management")
30670 "Cymem provides two small memory-management helpers for Cython. They make it
30671 easy to tie memory to a Python object's life-cycle, so that the memory is freed
30672 when the object is garbage collected.")
30673 (license license:expat)))
30675 (define-public python-preshed
30677 (name "python-preshed")
30681 (uri (pypi-uri "preshed" version))
30684 "0akpydd23xqxx9d04drsnw9140rb3cv07r1zpzqz5wm0lf47afzv"))))
30685 (build-system python-build-system)
30686 (native-inputs (list python-cython python-cymem python-pytest))
30687 (inputs (list python python-cymem python-murmurhash))
30690 '((ice-9 ftw) (ice-9 match)
30692 (guix build python-build-system))
30694 #~(modify-phases %standard-phases
30695 (add-after 'unpack 'set-source-file-times-to-1980
30697 (let ((circa-1980 (* 10 366 24 60 60)))
30699 (lambda (file stat flag)
30700 (utime file circa-1980 circa-1980) #t))))))))
30701 (home-page "https://github.com/explosion/preshed")
30702 (synopsis "Cython hash tables that assume keys are pre-hashed")
30704 "Simple but high performance Cython hash table mapping pre-randomized keys
30706 (license license:expat)))
30708 (define-public python-catalogue
30710 (name "python-catalogue")
30714 (uri (pypi-uri "catalogue" version))
30717 "0srdxiil2xys8q1gpc1nvzhvis3a33d8a7amk2i1rlpbg6p36pak"))))
30718 (build-system python-build-system)
30719 (native-inputs (list python-pytest))
30720 (inputs (list python python-zipp python-typing-extensions python-mypy))
30721 (home-page "https://github.com/explosion/catalogue")
30722 (synopsis "Lightweight function registries for your library")
30724 "\"catalogue\" is a tiny, zero-dependencies library that
30725 makes it easy to add function (or object) registries to your code. Function
30726 registries are helpful when you have objects that need to be both easily
30727 serializable and fully customizable. Instead of passing a function into your
30728 object, you pass in an identifier name, which the object can use to lookup the
30729 function from the registry. This makes the object easy to serialize, because the
30730 name is a simple string. If you instead saved the function, you'd have to use
30731 Pickle for serialization, which has many drawbacks.")
30732 (license license:expat)))
30734 (define-public python-wasabi
30736 (name "python-wasabi")
30740 (uri (pypi-uri "wasabi" version))
30743 "1kwqfalq7qxs9f7xb2m055g01qpbznyzxl7sjnzjdvvhkczg39md"))))
30744 (build-system python-build-system)
30745 (native-inputs (list python-pytest))
30746 (home-page "https://github.com/ines/wasabi")
30747 (synopsis "Console printing and formatting toolkit")
30749 "This package provides a lightweight console printing and formatting
30750 toolkit for Python.")
30751 (license license:expat)))
30753 (define-public python-srt
30755 (name "python-srt")
30759 (uri (pypi-uri "srt" version))
30762 "0l24710spxarijmv3h7iicvx0lv6m3d4xg77nd9kyv8jwifav93s"))))
30763 (build-system python-build-system)
30764 (home-page "https://github.com/cdown/srt")
30765 (synopsis "SRT parsing library")
30767 "This package provides a Python library for parsing, modifying, and
30768 composing subtitles in the SRT file format.")
30769 (license license:expat)))
30771 (define-public python-gatt
30773 (name "python-gatt")
30777 (uri (pypi-uri "gatt" version))
30780 "0fjf066jixk30fr8xwfalwfnhqpr56yv0cccyypnx2qp9bi9svb2"))))
30781 (propagated-inputs (list python-dbus python-pygobject))
30782 (build-system python-build-system)
30783 (home-page "https://github.com/getsenic/gatt-python")
30784 (synopsis "Bluetooth GATT SDK for Python")
30785 (description "The Bluetooth @acronym{GATT, Generic ATTribute Profile}
30786 @acronym{SDK, Software Development Kit} for Python helps you implement and
30787 communicate with any Bluetooth Low Energy device that has a GATT
30788 profile. It supports:
30791 @item Discovering nearby Bluetooth Low Energy devices
30792 @item Connecting and disconnecting devices
30793 @item Implementing your custom GATT profile
30794 @item Accessing all GATT services
30795 @item Accessing all GATT characteristics
30796 @item Reading characteristic values
30797 @item Writing characteristic values
30798 @item Subscribing for characteristic value change notifications
30801 Currently, Linux is the only platform supported by this library.")
30802 (license license:expat)))
30804 (define-public python-clrprint
30806 (name "python-clrprint")
30810 (uri (pypi-uri "clrprint" version))
30813 "0xfn8d1by2w7pjiji887qljk1avn4fylbnz1mj28gysm5g0zvy43"))))
30814 (build-system python-build-system)
30815 (arguments '(#:tests? #f)) ;there are no tests
30816 (propagated-inputs (list python-colorama python-termcolor))
30817 (home-page "https://github.com/AbhijithAJ/clrprint")
30818 (synopsis "Print colorful output in the terminal")
30819 (description "@code{clrprint} is developed to print colorful output in the
30820 terminal. It has red, blue, green, yellow, purple and black/white (default)
30822 (license license:expat)))
30824 (define-public python-musical-scales
30826 (name "python-musical-scales")
30830 (uri (pypi-uri "musical-scales" version))
30833 "1ckn8n37i7b65h0i385ycn0w8sg9na0iabz0kmhxxc1wj0hddkw9"))))
30834 (build-system python-build-system)
30835 (native-inputs (list python-wheel))
30836 (home-page "https://github.com/hmillerbakewell/musical-scale")
30837 (synopsis "Retrieve a scale based on a given mode and starting note")
30839 "Retrieve a scale based on a given mode and starting note.
30840 Information about these scales can be
30841 @url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on
30843 (license license:expat)))
30845 (define-public python-langcodes
30847 (name "python-langcodes")
30851 (uri (pypi-uri "langcodes" version))
30854 "1xkyh3qdcigb18qiimbwl2669y22hhdmd89mqcd270c7lbahfkbr"))))
30855 (build-system python-build-system)
30856 (native-inputs (list python-pytest))
30857 (home-page "https://github.com/rspeer/langcodes")
30858 (synopsis "Python library for working with language codes")
30860 "This package provides a Python library for working with and comparing
30863 @code{python-langcodes} implements @url{http://tools.ietf.org/html/bcp47, BCP
30864 47}, the IETF Best Current Practices on Tags for Identifying Languages. BCP
30865 47 is also known as RFC 5646. It subsumes ISO 639 and is backward compatible
30866 with it, and it also implements recommendations from the
30867 @url{http://cldr.unicode.org/, Unicode CLDR}.
30869 @code{python-langcodes} can also refer to a database of language properties
30870 and names, built from Unicode CLDR and the IANA subtag registry, if you
30871 install @code{python-language-data}.")
30872 (license license:expat)))
30874 (define-public python-geomet
30876 (name "python-geomet")
30880 (uri (pypi-uri "geomet" version))
30883 "06rfvadx5dr5xrgsc5bsmqil9c9kff6i13xl988gy0gfg0cl2lnb"))))
30884 (build-system python-build-system)
30885 (propagated-inputs (list python-click python-six))
30886 (home-page "https://github.com/geomet/geomet")
30887 (synopsis "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary) or
30888 GeoPackage Binary")
30889 (description "This package provides utilities and functions for converting
30890 GeoJSON to WKT/WKB (Well-Known Text/Binary) or GeoPackage Binary, and vice
30891 versa. Extended WKB/WKT are also supported.")
30892 (license license:asl2.0)))
30894 (define-public python-bsdiff4
30896 (name "python-bsdiff4")
30898 (home-page "https://github.com/ilanschnell/bsdiff4")
30901 (uri (git-reference
30904 (file-name (git-file-name name version))
30907 "1fa0vkmbr0a9xifq7i5gfcf7ifn739i1fdij8awynm299fsqvvhx"))))
30908 (build-system python-build-system)
30909 (synopsis "Binary diff and patch using the BSDIFF4 format")
30910 (description "This package provides a Python library for the @code{bsdiff}
30911 binary diff utility. It also provides two command-line tools, @code{bsdiff4}
30912 and @code{bspatch4}.")
30913 (license license:bsd-2)))
30915 (define-public python-mpv
30917 (name "python-mpv")
30921 ;; python-mpv from pypi does not include the tests directory.
30923 (uri (git-reference
30924 (url "https://github.com/jaseg/python-mpv")
30925 (commit (string-append "v" version))))
30926 (file-name (git-file-name name version))
30929 "10w6j3n62ap45sf6q487kz8z6g58sha37i14fa2hhng794z7a8jh"))
30930 (modules '((guix build utils)))
30933 ;; One of the tests never completes, so neutering it using
30934 ;; early return allows other test to run without issue.
30935 (substitute* "tests/test_mpv.py"
30936 ;; Note the typo in "prooperty" - this was fixed later in
30937 ;; upstream but has no effect on whether the tests hangs or not.
30938 (("test_wait_for_prooperty_event_overflow.*" line)
30939 ;; The long whitespace between \n and return is to match the
30940 ;; identation level, which is significant in python.
30941 (string-append line "\n return\n")))))))
30942 (build-system python-build-system)
30945 #~(modify-phases %standard-phases
30946 (add-before 'build 'patch-reference-to-mpv
30947 (lambda* (#:key inputs #:allow-other-keys)
30948 ;; Without an absolute path it is not able find and
30949 ;; load the libmpv library.
30950 (substitute* "mpv.py"
30952 (string-append "sofile = \""
30953 (search-input-file inputs "/lib/libmpv.so")
30955 (add-before 'check 'prepare-for-tests
30957 ;; Fontconfig throws errors when it has no cache dir to use.
30958 (setenv "XDG_CACHE_HOME" (getcwd))
30959 ;; Some tests fail without a writable and readable HOME.
30960 (setenv "HOME" (getcwd)))))))
30962 (list python-xvfbwrapper)) ; needed for tests only
30963 (inputs (list mpv))
30964 (propagated-inputs (list python-pillow)) ; for raw screenshots
30965 (home-page "https://github.com/jaseg/python-mpv")
30966 (synopsis "Python interface to the mpv media player")
30968 "python-mpv is a ctypes-based python interface to the mpv media player.
30969 It gives you more or less full control of all features of the player, just
30970 as the lua interface does.")
30971 ;; From the project's README:
30972 ;; python-mpv inherits the underlying libmpv's license, which can be either
30973 ;; GPLv2 or later (default) or LGPLv2.1 or later. For details, see the mpv
30975 (license license:gpl2+)))
30977 (define-public python-biblib
30978 (let ((upstream-version "0.1.0")
30979 (commit "ab0e857b9198fe425ec9b02fcc293b5d9fd0c406")
30982 (name "python-biblib")
30983 (version (git-version upstream-version revision commit))
30987 (uri (git-reference
30988 (url "https://github.com/aclements/biblib")
30991 (base32 "1ym1gwxys9gl5a7fjs6xh5z9w50pnq4z3rs6fx7kpv78hlrbjlip"))
30992 (file-name (git-file-name name version))))
30993 (build-system python-build-system)
30994 (home-page "https://github.com/aclements/biblib")
30995 (synopsis "BibTeX parsing and transformation library")
30997 "Biblib provides a simple, standalone Python 3 package for parsing
30998 BibTeX bibliographic databases, as well as algorithms for manipulating BibTeX
30999 entries in BibTeX-y ways. Biblib's parser is derived directly from the WEB
31000 source code for BibTeX and hence (barring bugs in translation) should be fully
31001 compatible with BibTeX's own parser.")
31002 ;; N.B. It seems the parser was translated from WEB by hand: this
31003 ;; package does not contain any generated files.
31004 (license license:expat))))
31006 (define-public python-i3ipc
31008 (name "python-i3ipc")
31012 (uri (git-reference
31013 (url "https://github.com/altdesktop/i3ipc-python")
31014 (commit (string-append "v" version))))
31015 (file-name (git-file-name name version))
31018 "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715"))))
31019 (build-system python-build-system)
31020 (arguments (list #:tests? #f)) ;FIXME: some tests are unable to run
31021 (propagated-inputs (list python-xlib))
31022 (home-page "https://github.com/altdesktop/i3ipc-python")
31023 (synopsis "Python library for controlling i3 and Sway")
31025 "This package provides a Python library for controlling the i3 and Sway
31027 (license license:bsd-3)))
31029 (define-public i3-autotiling
31031 (name "i3-autotiling")
31035 (uri (git-reference
31036 (url "https://github.com/nwg-piotr/autotiling")
31037 (commit (string-append "v" version))))
31038 (file-name (git-file-name name version))
31041 "1m8k3g83n2n1xws89dh20f3sy6753wvip9dzf6bssv2cz9ll7406"))))
31042 (build-system python-build-system)
31043 (arguments (list #:tests? #f)) ;no tests
31044 (native-inputs (list python-wheel))
31045 (propagated-inputs (list python-i3ipc))
31046 (home-page "https://github.com/nwg-piotr/autotiling")
31047 (synopsis "Automatically tile windows in i3 and Sway")
31049 "Script for Sway and i3 to automatically switch the horizontal/vertical
31050 window split orientation.")
31051 (license license:gpl3)))
31053 (define-public python-cyclic
31055 (name "python-cyclic")
31058 ;; Use git, as there are some test files missing from the PyPI
31059 ;; release, see https://github.com/neurobin/cyclic/issues/1
31061 (uri (git-reference
31062 (url "https://github.com/neurobin/cyclic")
31063 ;; Release is not tagged on github, see
31064 ;; https://github.com/neurobin/cyclic/issues/2
31065 (commit "bf616c47ea49a43500ea55a1e6f4890323be0679")))
31066 (file-name (git-file-name name version))
31069 "0r8zzjdv70fpxssxps62rlgpii8fr9gh8gykdygqn6mkdnfjwgjc"))))
31070 (build-system python-build-system)
31071 (home-page "https://github.com/neurobin/cyclic")
31072 (synopsis "Handle cyclic relations")
31073 (description "This package handles cyclic relations compared by value.")
31074 (license license:bsd-3)))
31076 (define-public python-rcslice
31078 (name "python-rcslice")
31081 ;; Use git, as there are some test files missing from the PyPI
31082 ;; release, see https://github.com/neurobin/rcslice/issues/1
31084 (uri (git-reference
31085 (url "https://github.com/neurobin/rcslice")
31086 ;; Releases are not tagged on github, see
31087 ;; https://github.com/neurobin/rcslice/issues/2
31088 (commit "1e1ef42cd262db76b67ded430630d5b499790f42")))
31089 (file-name (git-file-name name version))
31092 "1lmhcgghh60kvdlx0cin1phhgfy9jivc6l0mb4ibnpa1x1md0zvv"))))
31093 (build-system python-build-system)
31094 (home-page "https://github.com/neurobin/rcslice")
31095 (synopsis "Slice a list of sliceables")
31096 (description "This package provides Python module to slice a list of
31097 sliceables (1 indexed, both start and end index are inclusive). Helps to
31098 slice file content line by line or column by column or a combination of
31100 (license license:bsd-3)))
31102 (define-public python-types-orjson
31104 (name "python-types-orjson")
31108 (uri (pypi-uri "types-orjson" version))
31111 "0f66lf2qrl9d4vad42db3dmnzv89h4rr05r5zxx5qcl6kb3zr6ng"))))
31112 (build-system python-build-system)
31113 (home-page "https://github.com/python/typeshed")
31114 (synopsis "Typing stubs for orjson")
31115 (description "This is a PEP 561 type stub package for the @code{orjson}
31116 package. It can be used by type-checking tools like mypy, PyCharm, pytype
31117 etc. to check code that uses @code{orjson}.")
31118 (license license:asl2.0)))
31120 (define-public python-nanoid
31121 ;; There are no tests on PyPi.
31122 (let ((commit "061f9a598f310b0e2e91b9ed6ce725a22770da64")
31125 (name "python-nanoid")
31132 (url "https://github.com/puyuan/py-nanoid")
31134 (file-name (git-file-name name commit))
31136 (base32 "0y1bcw0h27g8rkqq7cp33ywn0i0lp0q3rjixzkh4191y1dp9yf8s"))))
31137 (build-system python-build-system)
31138 (native-inputs (list python-pytest))
31141 (modify-phases %standard-phases
31143 (lambda* (#:key tests? inputs outputs #:allow-other-keys)
31145 (invoke "pytest")))))))
31146 (home-page "https://github.com/puyuan/py-nanoid")
31147 (synopsis "Unique string ID generator")
31149 "This package provides a tiny, secure, URL-friendly, unique string ID
31150 generator for Python.")
31151 (license license:expat))))
31153 (define-public python-misskey
31155 (name "python-misskey")
31159 (uri (git-reference
31160 (url "https://github.com/YuzuRyo61/Misskey.py")
31161 (commit (string-append "v" version))))
31162 (file-name (git-file-name name version))
31165 "0rma8pdsjsy00cg76q6q4qki4xpldykmz1m6dl3w2bjjxfhlbaz5"))))
31166 (build-system python-build-system)
31167 (arguments (list #:tests? #f)) ;needs network
31168 (propagated-inputs (list python-requests))
31169 (home-page "https://misskeypy.readthedocs.io")
31170 (synopsis "Python bindings for Misskey's API")
31172 "This package provides access to Misskey's API. Misskey is a SNS
31173 platform using the ActivityPub protocol.")
31174 (license license:expat)))
31176 (define-public python-lief
31178 (name "python-lief")
31182 (uri (git-reference
31183 (url "https://github.com/lief-project/LIEF")
31185 (file-name (git-file-name name version))
31188 "1xb21jsws8lw93by8r25ibzgiml8n1cp7rpzybc648lk6idw0zg6"))))
31189 (build-system python-build-system)
31190 (native-inputs (list cmake))
31193 #:tests? #f ;needs network
31194 #:phases #~(modify-phases %standard-phases
31198 "python" "setup.py" "--sdk" "build"
31200 "-j" (number->string (parallel-job-count)))))))))
31201 (home-page "https://github.com/lief-project/LIEF")
31202 (synopsis "Library to instrument executable formats")
31204 "@code{python-lief} is a cross platform library which can parse, modify
31205 and abstract ELF, PE and MachO formats.")
31206 (license license:asl2.0)))
31208 (define-public shrinkwrap
31210 (name "shrinkwrap")
31214 (uri (git-reference
31215 (url "https://github.com/fzakaria/shrinkwrap")
31216 (commit (string-append "v" version))))
31217 (file-name (git-file-name name version))
31218 (modules '((guix build utils)))
31219 (snippet '(substitute* "pyproject.toml"
31220 (("lief = \"0\\.12\\.0\"") "lief = \"*\"")))
31223 "1f3qrygj16y767q2c7pn9j6m95ggcmj9s5cx9v92ygygly4mr3jp"))))
31224 (build-system python-build-system)
31228 #~(modify-phases %standard-phases
31230 (lambda* (#:key tests? #:allow-other-keys)
31232 (invoke "pytest" "-v" "tests"))))
31233 ;; XXX: PEP 517 manual build copied from python-isort.
31236 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
31239 (let ((whl (car (find-files "dist" "\\.whl$"))))
31240 (invoke "pip" "--no-cache-dir" "--no-input"
31241 "install" "--no-deps" "--prefix" #$output whl)))))))
31247 (inputs (list python-lief python-sh))
31248 (home-page "https://github.com/fzakaria/shrinkwrap")
31249 (synopsis "Emboss needed dependencies on the top level executable")
31251 "@code{shrinkwrap} is a tool which will discover all transitive dynamic
31252 shared objects, and lift them up to the executable referenced by absolute
31254 (license license:expat)))
31256 (define-public python-pymonad
31258 (name "python-pymonad")
31260 ;; The tests are incomplete in the PyPI archive.
31263 (uri (git-reference
31264 (url "https://github.com/jasondelaat/pymonad")
31265 (commit (string-append "v" version))))
31266 (file-name (git-file-name name version))
31269 "0ci1mpydldiyg9qv6d19ljhfh7wxlrl2k4mlvqd9bm7dqvpdjsx7"))))
31270 (build-system python-build-system)
31273 (modify-phases %standard-phases
31275 (lambda* (#:key tests? #:allow-other-keys)
31277 (invoke "./run_tests.sh")))))))
31278 (home-page "https://github.com/jasondelaat/pymonad")
31279 (synopsis "Monadic style functional programming for Python")
31280 (description "@code{python-pymonad} implements data structures typically
31281 available in purely functional or functional first programming languages such
31282 as Haskell and F#. Included are
31285 @item Monad and Monoid data types with several common monads such as Maybe and
31287 @item Useful tools such as the @code{@@curry} decorator for defining curried
31289 @item Type annotations to help ensure correct usage
31291 (license license:bsd-3)))
31294 ;;; Avoid adding new packages to the end of this file. To reduce the chances
31295 ;;; of a merge conflict, place them above by existing packages with similar
31296 ;;; functionality or similar names.